ANTLR 不明确的引用 - 如何获取输出?

标签 antlr semantics rules ambiguity

所以我有一个语句规则,它可以导致更多语句:

statement returns[String txt]
    :   '{'{
            $txt="{";
        }
        (statement{
            $txt+=$statement.txt;
        })*
        '}'{
            $txt+="}";
        }
    | ... //more rules // ...
    ;

我正在获取

引用 $statement 不明确;规则语句是封闭规则并在产生式中引用(假设封闭规则)

但不知道如何解决。不知何故,我需要告诉 ANTLR 我需要父 statementstatement 的返回 txt。请帮帮我:)

最佳答案

如果您使用$statement ,ANTLR 不知道您是指规则本身,还是 statement里面( ... )* .

尝试这样的事情:

statement returns[String txt]
    :   '{'{
            $txt="{";
        }
        (s=statement{
            $txt+=$s.txt;
        })*
        '}'{
            $txt+="}";
        }
    | ...
        ;

关于ANTLR 不明确的引用 - 如何获取输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705996/

相关文章:

java - 我正在尝试从文本中提取语义信息

java - 推理引擎根据内部规则计算匹配集

memory-leaks - ANTLR4内存清理

java - 使用 TopBraid SPIN API 运行 SPARQL/SPIN 模板

c# - 带有 CIL 代码编译器的 Antlr

c++ - 放置 new 加析构函数和简单的值初始化 noexcept 语义

PostgreSQL SELECT-RULES ,继承,行级权限

java - 强化规则不触发

java - 如何在 ANTLR4 中发出 token ?

c - ANTLRv3 : C target error handling. 更改 System.err 输出