我在 function_call_expression 规则中具有语法谓词的现有语法。请参阅下面的规则定义:
function_call_expression
:
(atom_sub (DOT identifier_name)) => atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+
| atom_sub_call
->
^('functioncall' atom_sub_call)
;
我想修改语法为每个函数调用引入新的树节点,如下所示
atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+
->
^ ( 'functioncall' atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+ )
如果规则替代中有语义谓词,我不知道该怎么做。请帮助我做同样的事情。
最佳答案
句法谓词在树重写中不起作用。添加您的重写代码,就像没有谓词一样。预测仅用于指导解析器(就像本地回溯)。
关于java - 语法谓词+树运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331153/