antlr3 НЕ правило - PullRequest
       52

antlr3 НЕ правило

2 голосов
/ 15 августа 2011
negExpression   :   (NOT^)* primitiveElement    ;

Это правило, которое у меня есть. Теперь у меня есть этот код:

!!(1==1)

Я ожидал, что получу это дерево:

NOT
 |
NOT
 |
 ==
/  \
1  1

Однако в Antlr3 кажется, что дерево заканчивается как

  NOT
 /   \
NOT  ==
    /  \
    1  1

IE. В итоге второй NOT, не имеющий дочерних узлов, вместо этого стал дочерним узлом, который стал его родным узлом.

Что я делаю не так?

1 Ответ

3 голосов
/ 15 августа 2011

И когда я написал вопрос, мне пришло в голову, что мое правило, возможно, неверно.И действительно, этот делает именно то, что я ожидал.

negExpression : NOT^ negExpression | primitiveElement^;
...