java - 语法谓词+树运算符

标签 java antlr3

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

相关文章:

java - 在 hibernate-core-4.3.0.Beta5.jar 中获取 SessionFactory

java - Node.getChildNodes() 返回的额外对象是什么?

antlr3 - antlr 3.5.1 使用未声明的标识符 : _empty. 为 C 运行时生成代码有任何可用的修复吗?

antlr - ANTLR 词法分析器中的特殊字符处理

在 C 中编译 ANTLR 3 语法

java - apache mina sshd core 版本 1.3.0 版本的客户端是否有 gss/kerberos auth 支持

java - Android 4.4.2 设备的外部存储文件夹不会出现在 Windows 10 浏览器中

java - 如何以编程方式在 xml 配置文件中设置属性?

antlr - 在 ANTRL 重写器语法的 StringTemplate 中使用 $ 作为分隔符

java - Antlr 3.4.0 生成的解析器的输入不匹配,而不是在解释器中