我正在尝试用 Treetop 编写一个简单的计算语法。为了简化这个问题的示例,我只使用变量、数字和+
运算符。我希望能够写出这样的表达式:
A
1
A+B
A+1
A+1+B
这是我的语法:
grammar Calculation
rule expression
(plus / number / variable)
end
rule plus
expression "+" expression
end
rule number
'-'? [0-9]+ ('.' [0-9]+)?
end
rule variable
[A-Za-z0-9]+
end
end
当我运行它时,它会无限递归。谷歌搜索了一段时间后,我认为我的问题与左递归有关,但我是解析器的新手,我不太明白这意味着什么。有人可以解释为什么我的特定示例不起作用以及如何解决它?