我在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/

10-13 05:55