如果你看到'BEGIN'然后在这一行你必须看到'结束',我怎么能对antlr说?
这是我的代码(当我有多个语句时我只需要BEGIN / END)
whileStatement
: 'WHILE' expression 'DO'
'BEGIN'?
statement
'END'?
;
和我的陈述
statement
: assignmentStatement
| ifStatement
| doLoopStatement
| whileStatement
| procedureCallStatement
;
答案 0 :(得分:2)
没有使用ANTLR的经验,但通常在BNF /无上下文语法中,您将其表达为
whileStatement
: 'WHILE' expr 'DO'
statementBlock
;
statementBlock
: statement
| 'BEGIN' statement* 'END'
;
或在statementBlock
的定义中添加statement
作为替代。