我想要的記號來描述簡單的語法與AND
和OR
,但失敗並出現以下錯誤Antlr4:規則的以下幾組相互左遞歸
的規則下集是相互左遞歸
語法是以下:
expr:
NAME |
and |
or;
and:
expr AND expr;
or:
expr OR expr;
NAME : 'A' .. 'B' + ;
OR: 'OR' | '|';
AND: 'AND' | '&';
同時,下面的語法
expr:
NAME |
expr AND expr |
expr OR expr;
NAME : 'A' .. 'B' + ;
OR: 'OR' | '|';
AND: 'AND' | '&';
確實編譯。
爲什麼?
但我需要爲每個操作都有合適的節點,比如分析樹中的AND和OR。如果有一條規則會解析所有這些規則,這是如何實現的? – Dims
你可以通過查看現有的語法學到很多東西(例如https://github.com/antlr/grammars-v4)。您可以定義您的規則,以便將左遞歸部分最終放入單個規則中,或者可以以非遞歸方式進行操作。 –