每个表达式都有 ANTLR4 NEWLINE 但最后一个是可选的

ANTLR4 NEWLINE at each expression but optional for the last

我正在尝试构建一个简单的应用程序来识别简单的数学表达式,每个表达式都由换行符分隔。一切正常,但我不知道如何在最后一个表达式之后使 NEWLINE 可选。这是我的语法文件的一部分,只有必要的东西:

statements
: statement+ EOF
;

statement
: variableId ASSIGN expression NEWLINE+                                     
;

NEWLINE             : '\r'? '\n';

目前最后一个语句必须跟在 NEWLINE 之后。如果使 NEWLINE 可选 (*),那么我可以在同一行插入 2 个语句,这是我不想要的。

提前致谢。

尝试:

statements
: statement (NEWLINE+ statement)* NEWLINE* EOF
;

Statement
: variable ASSIGN expression
;

这种方法使用 NEWLINE 作为分隔符而不是终止符,这似乎正是您要找的。