【发布时间】:2014-08-23 22:22:45
【问题描述】:
我正在尝试使用Irony 来解析C99,以及I found a grammar online to guide me。
我在声明与声明的冲突方面遇到困难。以下规则未能检测到带有初始化程序的指针声明。
blockItemList.Rule = MakePlusRule(blockItemList, blockItem);
blockItem.Rule = declaration | statement;
失败的线路类型是:
MyType *x = foo();
当我从语句的规则中删除labeledStatement 和expressionStatement(两者都可能以标识符开头)时,这种类型的声明被正确识别。
在尝试声明之前强制 Irony 用尽声明规则的最佳方法是什么?或者,我可以在 Irony 解析时添加到语法中,以便它可以将 MyType 注册为终端而不是标识符?
【问题讨论】:
标签: c# parsing grammar lalr irony