首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Antlr4在简单语法上找不到任何可行的输入字符串替代方法

Antlr4在简单语法上找不到任何可行的输入字符串替代方法
EN

Stack Overflow用户
提问于 2015-05-31 11:02:35
回答 1查看 75关注 0票数 0

我是Antlr的新手,我必须创建一些语法来解析由用户在我的项目中指定的规则和公式。我已经编写了包含条件语句的最难的语句,但是对于第二个比第一个语句更容易的语句,对于输入,我没有可行的替代方法。我的语法是一个简单的语法,如下所示:

代码语言:javascript
复制
grammar PmntIdntfrTmpExp;

start
    :   statement 
    |   statement start
    ;

statement
    :   assignment
    ;

assignment
    :   id '=' addStmt
    ;

addStmt
    :   addStmt '+' mulStmt
    |   addStmt '-' mulStmt
    |   mulStmt
    ;


mulStmt
    :   mulStmt '*' terminal
    |   mulStmt '/' terminal
    |   mulStmt '^' terminal
    |   terminal
    ;

terminal
    :   '('addStmt')'
    |   id
    |   number
    ;

id
    :   '@fild'(Digit)+
    ;

number
    :   Digit+ ('.' Digit+)?
    ;

Digit
    :   '0'..'9'
    ;

WS  
    :   [ \t\r\n]+  ->  skip 
    ;

但是当我想解析一个像下面的赋值这样的简单字符串时

代码语言:javascript
复制
@fild76 = @fild12 + @fild43

我想出了这个错误

代码语言:javascript
复制
line 1:27 no viable alternative at input '@fild76=@fild12+@fild43'

我想知道有没有人帮我解决这个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-31 16:14:21

我不知道你的语法为什么会失败,但这似乎是打破语法的第一条规则:

取代:

代码语言:javascript
复制
start
  :   statement 
  |   statement start
  ;

在语法上等价

代码语言:javascript
复制
start
  :   statement+
  ;

不会发出错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30556633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档