[讨论] LPG的使用

redaijufeng 2014-10-14
最近在调研一项语法语义解析(针对SQL语句的),发现LPG这个东西挺强大的。

目前我遇到的问题是我有现成的针对SQL语义语法的解析逻辑(Eclipse的DTP插件已经实现了),但我想对其支持的关键字等语法进行扩展,所以问题来了。。。

DTP原有的解析逻辑是利用LPG来实现的,但我看了一下官方英文文档,本人实力有限,始终不得其解,不知道哪位能指点一二,好让我入门找到入手点。

另外,根据文档也没找到对应的例子实际运行一下lpg生成解析逻辑,实在是汗颜。。。

所以接触过的请不吝赐教。有相关资料的也请慷慨解囊,谢谢。


PS:不知道这个群组是不是涉及到这方面内容呢,还请版主勿删
RednaxelaFX 2014-10-15
楼主说的LPG是这个么?http://sourceforge.net/projects/lpg/ / http://lpg.sourceforge.net/
然后想修改的是这个语法文件?http://git.eclipse.org/c/datatools/org.eclipse.datatools.sqltools.git/tree/plugins/org.eclipse.datatools.sqltools.parsers.sql/src/org/eclipse/datatools/sqltools/parsers/sql/sqlparserTemplate.lpg

是的话这个我还没用过…但既然是LALR系的parser generator,想来也差不了多少…
楼主以前有用过其它LALR系的parser generator不,像是yacc或者bison之类的?

说来还有人给LPG写了专门的编辑器,真有爱:http://sourceforge.net/projects/jgedit/
redaijufeng 2014-10-15
RednaxelaFX 写道
楼主说的LPG是这个么?http://sourceforge.net/projects/lpg/ / http://lpg.sourceforge.net/
然后想修改的是这个语法文件?http://git.eclipse.org/c/datatools/org.eclipse.datatools.sqltools.git/tree/plugins/org.eclipse.datatools.sqltools.parsers.sql/src/org/eclipse/datatools/sqltools/parsers/sql/sqlparserTemplate.lpg

是的话这个我还没用过…但既然是LALR系的parser generator,想来也差不了多少…
楼主以前有用过其它LALR系的parser generator不,像是yacc或者bison之类的?

说来还有人给LPG写了专门的编辑器,真有爱:http://sourceforge.net/projects/jgedit/

是的,兄台果真接触过。

我就是想通过lpg自己写一套针对Oracle语法的解析器(仿照sqlparserTemplate.lpg写,增加Oracle的特殊语法),但目前问题在于不知如何去写这个语法文件,同时写出来后怎么生成对应的Java类

我先用你提供的那个编辑器试试,找找路子
redaijufeng 2014-10-15
RednaxelaFX 写道
楼主说的LPG是这个么?http://sourceforge.net/projects/lpg/ / http://lpg.sourceforge.net/
然后想修改的是这个语法文件?http://git.eclipse.org/c/datatools/org.eclipse.datatools.sqltools.git/tree/plugins/org.eclipse.datatools.sqltools.parsers.sql/src/org/eclipse/datatools/sqltools/parsers/sql/sqlparserTemplate.lpg

是的话这个我还没用过…但既然是LALR系的parser generator,想来也差不了多少…
楼主以前有用过其它LALR系的parser generator不,像是yacc或者bison之类的?

说来还有人给LPG写了专门的编辑器,真有爱:http://sourceforge.net/projects/jgedit/


我对LALR parser 完全不了解,只是遇到这方面问题了,才不得不硬着头皮着手解决
RednaxelaFX 2014-10-16
那楼主需要的是一本编译原理的书。非常多编译原理的书都会介绍LALR系的parser。如何实现的部分忽略不看也罢,主要是看看原理:语法和语法树的关系、LR系语法有什么注意事项(shift-reduce conflict 和 reduce-reduce conflict之类)。

先有了基础再去看LPG的文档,应该就清晰多了。
Global site tag (gtag.js) - Google Analytics