我正在尝试构建一个简单的应用程序,该应用程序可以识别简单的数学表达式,每个表达式由NEWLINE分隔。一切都很好,但我不知道如何在最后一个表达式之后使NEWLINE可选。这是我语法文件的一部分,只有必要的东西:
statements
: statement+ EOF
;
statement
: variableId ASSIGN expression NEWLINE+
;
NEWLINE : 'r'? 'n';
目前,最后一句话后面必须紧跟NEWLINE。如果将NEWLINE设为可选(*(,那么我可以在同一行插入两条语句,这是我不希望的。
提前谢谢。
尝试:
statements
: statement (NEWLINE+ statement)* NEWLINE* EOF
;
Statement
: variable ASSIGN expression
;
这种方法使用NEWLINE
作为分隔符,而不是终止符,这似乎正是您想要的。