[英]Unexpected behaviour when parsing a string with optional Suffix in antlr4
[英]Antlr4 grammar optional brackets around string
我正在尝试编写一个语法来评估一个方程式,该方程式可能会或可能不会被括号括起来。 前 -
在我的规则中,我有
clause
: expression EOF
;
expression
:
LPAREN expression RPAREN #parenExpression
| isNumeric #isNumericExpression
| leftSide IS NOT? NULL #nullExpression
| compare #comparatorExpression
| NOT #notExpression
;
compare : NOT? LPAREN? NOT? leftSide op=comparator rightSide RPAREN? ;
现在,这有几个问题。
任何有关如何为这些规则编写语法的帮助都会非常有用。
提前致谢!
从概念上讲,表达为(典型地)或者复合物, 即 ,递归的,或简单的:
expression
: LPAREN expression RPAREN #parenExpression
| NOT expression #notExpression
| simpleExpression
;
simpleExpression
: isNumeric #isNumericExpression
| leftSide IS NOT? NULL #nullExpression
| leftSide op rightSide #comparatorExpression
;
第一个复合alt允许表达式周围的任何级别的平衡括号。 第二个允许一个或多个NOT
s在任何表达式之前。
简单的alts代表表达式的最基本形式。
所以, (NOT (str1 matches 'hello'))
将匹配
parenExpression
- > notExpression
- > parenExpression
- > comparatorExpression
。
当然,这两条规则可以合二为一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.