句法谓词+树操作符

时间:2014-03-11 16:45:01

标签: java antlr3

我在function_call_expression规则中使用了Syntactic Predicates的语法。请参阅下面的规则定义:

function_call_expression
 :
  (atom_sub (DOT identifier_name)) => atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+
  | atom_sub_call
    ->
      ^('functioncall' atom_sub_call)
  ;

我想修改语法,为每个functionCall引入新的树节点,如下所示

atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+ 
-> 
 ^ ( 'functioncall' atom_sub (DOT identifier_name (LPAREN expression_list? RPAREN))+ )

如果规则备选中存在语义谓词,我不知道该怎么做。请帮我做同样的事。

1 个答案:

答案 0 :(得分:1)

语法谓词在树重写中不起作用。添加您的重写代码就像没有谓词一样。预测仅用于指导解析器(它就像本地回溯)。