这个';:';和';|';标记在(Python)Antlr语法中的意思是
我继承了Python程序中使用的旧Antlr语法。其中一个产品如下所示:这个';:';和';|';标记在(Python)Antlr语法中的意思是,python,antlr,Python,Antlr,我继承了Python程序中使用的旧Antlr语法。其中一个产品如下所示: merge :! l:expr ( n:name_list r:expr { /* do something with n and r*/ } | { /* do something else */ } ) |! n2:name_list '*' o:expr { /*
merge
:! l:expr
( n:name_list r:expr
{ /* do something with n and r*/ }
|
{ /* do something else */ }
)
|!
n2:name_list '*' o:expr
{ /* do something with n2 and o */ }
;
现在,我已经熟悉了来自Yacc和Antlr的
:
和|
标记,但是额外的有什么意义呢代码>是否有,如果有的话?:!和|!意思是不要为周围的规则构建AST。所以我应该将这个结果解释为:“如果你看到一个expr
(称它为l
),如果你看到一个名称列表
,另一个expr
(称它们为n
和r
)执行/*使用n和r*
/执行某些操作,但不要为合并创建AST
?如果我记得正确,它仍然会创建节点(分配给标签),但不会将它们链接到树中。您的操作必须这样做。