Ironyを使用して C99 を解析しようとしていますが、オンラインで文法を見つけました。
宣言とステートメントの競合に問題があります。次のルールは、イニシャライザを使用したポインタ宣言の検出に失敗します。
blockItemList.Rule = MakePlusRule(blockItemList, blockItem);
blockItem.Rule = declaration | statement;
失敗している行のタイプは次のとおりです。
MyType *x = foo();
ステートメントのルール (どちらも識別子で始まる可能性があります) から、labeledStatement と expressionStatement を削除すると、このタイプの宣言が正しく認識されます。
ステートメントを試す前に、Irony に宣言ルールを使い果たすように強制する最良の方法は何ですか? または、Irony が解析するときに文法に追加して、MyType を識別子ではなく端末として登録できるようにすることはできますか?