我正在尝试使用Irony来解析 C99,我在网上找到了一个语法来指导我。
我在声明与声明的冲突中遇到困难。以下规则未能检测到带有初始化程序的指针声明。
blockItemList.Rule = MakePlusRule(blockItemList, blockItem);
blockItem.Rule = declaration | statement;
它失败的线路类型是:
MyType *x = foo();
当我从语句的规则中删除labeledStatement 和expressionStatement 时(两者都可能以标识符开头),这种类型的声明被正确识别。
在尝试声明之前强制 Irony 用尽声明规则的最佳方法是什么?或者,我可以在 Irony 解析时添加到语法中,以便它可以将 MyType 注册为终端而不是标识符?