逗号分隔函数调用参数的解析器表达式
我正在编写一个解析器,可以解析诸如 myfunc1()
、myfunc2(param1)
和 myfunc3(param1, param2)
等表达式(数量未知)参数)。现在我正在尝试让我的解析表达式正确。我正在使用 Lemon 解析器生成器。这是我的想法:
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
标记分隔?
Im writing a parser than can parse expressions like myfunc1()
, myfunc2(param1)
and myfunc3(param1, param2)
(with an unknown amount of parameters). Now I'm trying to get my parse expressions right. I'm using the Lemon Parser Generator. Here is what I've come up with:
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.
Never mind the contents of the curly braces for the moment. The params
definition allows empty params (several separators after each other), which is ok at the moment. But how would I have to change the definition to force non-empty parameters but still have all parameters separated by the SEPARATOR
token?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
遵循 http://www.hwaci.com/sw/lemon/lemon 中的示例。 html 读取
list
为空(第二条规则)或包含至少一个element
的位置,各个element
分隔开通过空格,我想说你想要following the example from http://www.hwaci.com/sw/lemon/lemon.html which reads
where
list
is either empty (the second rule) or contains at least oneelement
, with individualelement
s separated by whitespace, i'd say you want