antlr3 NOT 规则

标签 antlr antlr3 lexer

negExpression   :   (NOT^)* primitiveElement    ;

这是我的规则。我现在有这个代码:

!!(1==1)

我预计我最终会得到这棵树:

NOT
 |
NOT
 |
 ==
/  \
1  1

然而,在 Antlr3 中,树的结局似乎是这样的

  NOT
 /   \
NOT  ==
    /  \
    1  1

IE。我最终得到的第二个节点没有子节点,而是它应该具有的子节点已成为其兄弟节点。

我做错了什么?

最佳答案

当我写下这个问题时,我意识到我的规则可能是错误的。 事实上,这完全符合我的预期。

negExpression : NOT^ negExpression | primitiveElement^;

关于antlr3 NOT 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064090/

相关文章:

antlr - 有没有办法检测一个可选的(?运算符)树语法规则是否在一个 Action 中执行?

ANTLR : How to replace all characters defined as space with actual space

java - ANTLR 生成空条件

python - wxPython StyleSetSpec 和 SetLexer 不工作?

java - 除了行和列之外,如何跟踪 token 的偏移位置?

c++ - ANTLR - 保持 block 不变

java - 将 token 映射到枚举值的更好方法?

antlr - 使用 ANTLR 解析字母范围

java - 在 ANTLR 中重用保留关键字规则

java - 如何在 Windows 10 中设置 Javacc