我在 ANTLR 语法中写下了以下语句:
loopStatement
: 'loop' (statement|exit)* 'end' 'loop' ';'
;
如果我理解正确,(statement|exit)*则意味着我可以拥有 astatement或exit statement. 那就是 ie statement_1 exit_1, or statement_1, or statement_1 statement_2, exit_1, 对吧?
我的解析器工作,除了没有声明。
例如:
这有效:
loop
x:=x+1; <<< statement_1
exit when x=9; <<<<exit_1
end loop;
这也有效(否exit):
loop
x:=x+1; <<< statement_1
<<<<exit_1 (no exit)
end loop;
但这不起作用(否statement):
loop
<<< statement_1
exit when x=9; <<<<exit_1
end loop;
我的语法有什么问题吗?



