Don*_*eld 11 c++ debugging yacc visualizer
我一直在帮助我公司内部增加一项二十年的专有语言.它是一种图灵完整的大型语言.将它翻译成另一种语法(如Antlr)不是一种选择(我不能做出决定).
在大多数情况下,扩展语法已经顺利进行.但每隔一段时间我就会得到减少减少或减少减少
在经历了很多痛苦的盯着y.output文件和实验语法重构之后,我通常会到达我想去的地方.有时我不得不做出令人不满意的妥协.
那么,是否有任何工具可以吸收yacc语法,这可以增强浏览,试验和允许调试变更?
如果我添加一个产品,我希望看到的不仅仅是"到处使用的原子生产"(认为标识符)"与规则foo冲突"(是的,有更多的信息,s/r,r/r,比那个,但我认为你得到了我的漂移).除了戴上我的思维帽并试图想象一个符号堆栈和状态机之外,有一些相互影响的暗示会很好.
更新:我想我应该澄清一下.我们使用Berkeley Yacc.我一直在使用最新版本的Bison进行测试.对于输出,我用--report = itemset编译了语法.
我在这篇文章中的目标是寻找外部工具来增强 yacc附带的语法调试工具.今天使用默认设置很痛苦.帮助我找到更好的交互式工具,例如可以与Antlr一起使用的工具.
你可能会得到一些帮助yacc -d,它会产生调试输出 - 它基本上给出了符号堆栈状态等的完整列表.输出是密集和庞大的,所以试图直接读取所有它很少完成很多(无论如何我从来没有).但是,当您更改(例如)r/r冲突时,您可以运行yacc -d旧语法和新语法,然后对结果运行diff,以便更详细地了解更改(s)引起了冲突.
然而,值得注意的是,s/r冲突通常是良性的 - 除非你很确定它是一个问题,试图"修复"它往往是不值得的.但是r/r冲突却不是这样.虽然这些有时是良性的,但它相对较少.
编辑:哎呀 - 抱歉,应该是-v.你提到了y.output,所以你显然已经知道如何做这个部分了.关键是你不要试图直接查看y.output文件,而是在干净利落的文件和没有得到实际冲突细节的文件之间做差异(不要盯着10千万行的"东西",这很好.
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |