[讨论] 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的文档,应该就清晰多了。 |