我在函数\调用\表达式规则中有语法 predicate 。请参见下面的规则定义:
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))+ )
我不知道如何做,如果有symantic predicate 规则替代。请帮我做同样的事。
1条答案
按热度按时间gmxoilav1#
句法 predicate 在树重写中不起作用。就像没有 predicate 一样添加重写代码。predictate只用于指导解析器(类似于本地回溯)。