【发布时间】:2017-02-11 01:48:16
【问题描述】:
所以,我正在尝试使用PegJS 为一种简单的语言定义解析器。
该语言纯粹由无限深的函数调用组成,它们用逗号分隔,例如:
f(4, g()) => [f, [4, g, []]]
g()
f(5) => [g, [], f, [5]]
这是我的语法:
call =
func"("arg")"
func =
[a-zA-Z]+
arg =
[0-9a-z,A-Z]+ / call
_ "whitespace"
= [ \t\n\r]*
但它不是递归的:
输入:b(r(6))
错误:Line 1, column 4: Expected ")" or [0-9a-z,A-Z] but "(" found.
我知道左右递归的想法,但我不知道如何让它无限地递归调用规则。
【问题讨论】:
标签: javascript parsing recursion pegjs