我在這裏使用C語法:https://github.com/antlr/grammars-v4/tree/master/c來解析表達式int a2 = 5;
。 ANTLR版本是4.3。簡單C表達式的大解析樹
這裏的「5」匹配一個非常大的規則鏈:initializer->assignmentExpression->conditionalExpression->logicalOrExpression->logicalAndExpression->
...大約10個以上-> primaryExpression->5
。
雖然解析最終是正確的,但這似乎是語法中的一個錯誤。有人可以提出修正或澄清?
我還有一個疑問:語法將'int a1;'解釋爲'declarationSpecfiers',即令牌'int'和'a1'被解釋爲'declarationSpecifier'。我期望'a1'被解釋爲'initDeclaratorList'的一部分。我通過改變'declaration'規則來解決這個問題,使用'initDeclarationList'而不是'initDeclarationList?'。這是好的還是這打破了別的東西? –
@AnujKalia,嗯,不知道。您可以在存儲庫的跟蹤器上提出問題/問題:https://github.com/antlr/grammars-v4/issues –