Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个';:';和';|';标记在(Python)Antlr语法中的意思是_Python_Antlr - Fatal编程技术网

这个';:';和';|';标记在(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 { /*

我继承了Python程序中使用的旧Antlr语法。其中一个产品如下所示:

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
?如果我记得正确,它仍然会创建节点(分配给标签),但不会将它们链接到树中。您的操作必须这样做。