现在我们想要基于Antlr4的PL/I,COBOL语法。如果没有人提供这些语法,请您分享一下您对从头开发这些语法的想法/经验,谢谢。
发布于 2014-10-15 11:23:17
我想您是指IBM /I和COBOL。(其他PL/存在的并不多,但我认为这并没有真正改变答案)。
寻找成熟的ANTLR语法的明显地方是ANTLR3语法库;那里没有PL/1或COBOL语法。Antlr V4 (一个非常新的、激进的、向后不兼容的ANTLR3重组)主页谈到了ANTLR3和C#;这里没有PL/1或COBOL的暗示;鉴于它的新颖性,也就不足为奇了。如果你真的很幸运,有人可能会给你一个,然后大声说出来。
开发这样的语法是困难的,原因有几个(根据为这两个特定项目构建生产质量解析器的个人经验,使用一个与ANTLR不同的非常强大的解析器系统-参见我的bio获取更多细节):
拿到AST后,你会想用它做点什么的。这意味着您至少需要构建符号表(从标识符实例到其声明和任何相关类型信息的映射)。ANTLR没有提供任何特殊的支持这个AFAIK,除了支持步行的AST。这也很难纠正,COBOL有疯狂的规则,如果没有其他冲突的解释,那么如何将不合格的标识符引用解释为特定的数据字段。(如果您想要获得有关该程序的良好语义信息,那么在解析后还有更多关于Life的内容;请参阅我的bio以获得更多细节;对于这些语义方面,您都开发了它们,然后为了验证,请返回并在大型代码基础上运行它们。)
TL;DR
为这些语言构建解析器(嗯,“前端”)是一项很大的工作,不管您选择哪个解析引擎。很可能解释了为什么他们还没有在ANTLR的语法动物园里。
发布于 2017-08-22 07:08:53
看看OpenSource Cobol-85解析器来自ProLeap,基于antlr4并创建as和ASG。而且,最棒的是,它真的有效!
https://github.com/uwol/proleap-cobol-parser
我不知道有类似的PLI语法,但是一个很好的开端是来自Ralf L (CWI,阿姆斯特丹)和Chris Verhoef (WINS,Universiteit van阿姆斯特丹)的http://www.cs.vu.nl/grammarware/browsable/os-pli-v2r3/的EBNF定义。
https://stackoverflow.com/questions/26377386
复制相似问题