【发布时间】:2010-07-03 08:07:08
【问题描述】:
我正在编写一个解析器,它可以解析 myfunc1()、myfunc2(param1) 和 myfunc3(param1, param2) 等表达式(参数数量未知)。现在我正试图让我的解析表达式正确。我正在使用Lemon Parser Generator。这是我想出的:
application(res) ::= APPLICATIONNAME(a) BRACE_OPEN params BRACE_CLOSE. {res = a;}
application(res) ::= APPLICATIONNAME(a) BRACE_OPEN BRACE_CLOSE. {res = a;}
params ::= PARAM(p). {res = p;}
params ::= SEPARATOR.
暂时不要介意花括号的内容。 params 定义允许空参数(彼此之后的几个分隔符),目前可以。但是,我将如何更改定义以强制使用非空参数,但所有参数仍由 SEPARATOR 标记分隔?
【问题讨论】:
标签: parsing function optional-parameters bnf lemon