规则匹配时的Grako结束闭包

2024-04-25 05:58:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的语法:

name = /[_a-zA-Z][a-zA-Z0-9]*/;
expression = name '+' name;
def_body = 'def' name:name args:{name} body:expression;

但当我尝试解析时,它总是使用表达式的名字 作为争论的一部分。有没有办法让它在args闭包中的每个名称之前进行测试,如果它能匹配表达式,并且在通过时结束?你知道吗

提前谢谢。你知道吗

编辑:我通过语义解决了这个问题,但我仍然好奇是否可以通过grakoebnf。你知道吗


Tags: name名称编辑表达式def语义语法args
1条回答
网友
1楼 · 发布于 2024-04-25 05:58:52

由于缺少参数的分隔符,因此需要进一步查看输入,以确定是否应该继续关闭。消极的前瞻应该在语法层面上解决问题:

def_body = 'def' name:name args:{name !'+'} body:expression;

展望未来不是“欺骗”。因为重要的原因,它们是PEG定义的一个组成部分。你知道吗

相关问题 更多 >