我想为我的表达式评估器添加 +/- 符号支持,但是我不确定它是否应该是作为数字标记的一部分的词法元素(例如number = [\+\-]*[0-9]+
)或句法元素(例如primary ::= [ ( "+" | "-" ) ] primary | number
where number = [0-9]+
)。
从上面可以看出,这个标志可以任意多。目前,我已经使用递归下降和运算符优先级解析实现了语法版本。但我仍然不确定这是否是一个好的选择。我发现的一件事是,语法版本需要对遇到的每个符号进行递归。