我有这个语法:
name = /[_a-zA-Z][a-zA-Z0-9]*/;
expression = name '+' name;
def_body = 'def' name:name args:{name} body:expression;
但是当我尝试解析时,它总是将表达式的名字作为参数的一部分。有没有办法让它在 args 闭包中的每个名称之前测试它是否可以匹配表达式并在它通过时结束?
提前致谢。
编辑:我通过语义解决了它,但我仍然很好奇它是否可以通过 grako ebnf。