Compiler construction 救命啊。。。LL语法与递归下降解析器

Compiler construction 救命啊。。。LL语法与递归下降解析器,compiler-construction,antlr,grammar,context-free-grammar,recursive-descent,Compiler Construction,Antlr,Grammar,Context Free Grammar,Recursive Descent,我用的是ANTR,这是我的一些语法错误 statement : (name)( | BECOMES expression | LPAREN (expression (COMMA expression)*)? RPAREN | SHIFTLEFT name LPAREN (expression ( COMMA expression )*)? RPAREN ) | OUTPUT LPAREN expression ( COMMA expression)

我用的是ANTR,这是我的一些语法错误

statement
:     (name)(
    | BECOMES expression
    | LPAREN (expression (COMMA expression)*)? RPAREN
    | SHIFTLEFT name LPAREN (expression ( COMMA expression )*)? RPAREN
    )
    | OUTPUT LPAREN expression ( COMMA expression)* RPAREN
    | IF expression  THEN statement (ELSE statement)?
    | FOR name BECOMES expression TO expression DO statement
    | REPEAT statement UNTIL expression
    | WHILE expression DO statement
    | body
    | 
;
这是一个错误,“决策可以使用多个选项匹配输入,如“ELSE”

如何修复它?

尝试使用

说明

新功能(大功能)是 backtrack=true语法选项, 规则和允许您键入的块 任何旧的垃圾和ANTLR都将返回轨道 如果它不能理解你的意思。 antlr在运行期间未报告任何错误 分析它隐式地添加了一个syn 在每次生产之前, 仅当静态语法为LL时才使用它们* 分析失败。Syn pred代码不正确 如果未在中使用pred,则生成 决定。这基本上是一个快速的过程 原型模式。这就是我所拥有的 在java.g上使用。哦,没有 记忆部分解析(即规则 回溯过程中的解析结果) 现在自动。你还必须说 memoize=true。可以做出巨大的贡献 要打开的差异


@Atom-我可以假设你的意思是“backtrack做什么?”?是的,我的英语很差。@Atom-不需要道歉,我只会说一种语言。:)
options {
    backtrack = true;
}