我正在尝试使用有点递归的 Treetop 创建一个解析器。表达式可以是数字,但也可以是表达式的加法,所以我写了这个:
grammar Language
rule expression
"(" _ expression _ ")" / addition / integer
end
rule addition
expression _ "+" _ expression
/
expression _ "-" _ expression
end
rule integer
'-'? _ [0-9]+
end
# space
rule _
' '*
end
end
那是行不通的。每当我试图解析任何东西时,我都会得到一个异常“SystemStackError:堆栈级别太深”(堆栈溢出!耶!)。任何想法为什么?用 Treetop 指定这种递归定义的正确方法是什么?