语法分析器自动生成工具一览
2012-05-22 12:24
211 查看
最近打算重做以前的一个留下遗憾的工作,当中的一项小任务就是要求编写一个简易SQL语言的语法分析器。
本科的《编译原理》课程依稀在我脑中留下些许映象。当初的课程大作业是写一个叫Dicuf(貌似是这么发音)的编译器,在万恶的助教的鞭策下,我们使用了Lex和Yacc成功逃离了恐怖之狱。现在又要拾起编译来,还是有些挑战性的。
善其事,利其器。在网络上一番东游西逛,我对于时兴的一些语法分析器自动生成工具有了点了解。现总结如下,以资参考。
Lex/Yacc
它生于Unix,是最经典的词法\语法分析器,是经典教材中的示例御用工具。现在它也支持在Windows上生成(安装环境),然而其所生成语法分析器的语言仅有C语言。
Flex/Bison
与前者类似,Bison与Yacc有很高的兼容性。生成语言为C、C++和Java。
CoCo/R
较早的一个语法分析器生成工具。其生成语法分析器的语言极其之多,包括C#、 Java、 C++、F#、VB.Net、Oberon等等。
ANTLR
作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,生成语法分析器的语言包括Java,C++,C#. 语法有点麻烦。
GOLD
它是一个较为复杂的分析器,支持语言貌似最多。生成语言包括(官网说的):Assembly - Intel x86 、ANSI C、C#、D、Delphi、Java、Pascal、Python、Visual Basic、Visual Basic .NET、Visual C++、所有.NET语言、所有ActiveX语言。难以想象这居然是个免费的软件。
Grammatica
这是一个C#和Java的语法剖析器生成器(Parser Generator或叫作编译器的编译器:Compiler Complier) 。它相对于其它一些类似的工具如yacc和ANTLR有了更好的改进。这是因为Grammatica:
1.创建了更好的注释和易读的源代码.
2.拥有错误自动恢复并能够详述错误信息.
3.支持语法/词法测试与调试.
JavaCC
它是用JAVA开发的最受欢迎的语法分析生成器之一。它还提供JJTree等工具来帮助我们建立语法树。它还有一个用于辅助JavaCC应用程序开发的Eclipse插件.生成语法分析器语言为java。
还有很多语法分析器生成工具,比如JFlex、SableC、Beaver、JTopas、Runcc、CUP、SJPT、Chaperon。但我实在是没精力一一介绍了,之前实在没想到这工具如此繁多。
最后我选择了Grammatica,因为我需要C#语言的语法分析器,而且要求足够简单:)
我利用Grammatica的一个示例生成了一个C#的语法分析器,并移植到Silverlight项目上(由于另一个项目需要),目前运行良好。由于.Net与Silverlight.Net非常相像,这个移植工作比想象中要容易。不过,我不太赞成将语法分析器放到Web上,这样会使客户端明显增大,一种可以考虑的做法就是将用于验证功能的语法分析器封装成Web服务放到服务器端。
本科的《编译原理》课程依稀在我脑中留下些许映象。当初的课程大作业是写一个叫Dicuf(貌似是这么发音)的编译器,在万恶的助教的鞭策下,我们使用了Lex和Yacc成功逃离了恐怖之狱。现在又要拾起编译来,还是有些挑战性的。
善其事,利其器。在网络上一番东游西逛,我对于时兴的一些语法分析器自动生成工具有了点了解。现总结如下,以资参考。
Lex/Yacc
它生于Unix,是最经典的词法\语法分析器,是经典教材中的示例御用工具。现在它也支持在Windows上生成(安装环境),然而其所生成语法分析器的语言仅有C语言。
Flex/Bison
与前者类似,Bison与Yacc有很高的兼容性。生成语言为C、C++和Java。
CoCo/R
较早的一个语法分析器生成工具。其生成语法分析器的语言极其之多,包括C#、 Java、 C++、F#、VB.Net、Oberon等等。
ANTLR
作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,生成语法分析器的语言包括Java,C++,C#. 语法有点麻烦。
GOLD
它是一个较为复杂的分析器,支持语言貌似最多。生成语言包括(官网说的):Assembly - Intel x86 、ANSI C、C#、D、Delphi、Java、Pascal、Python、Visual Basic、Visual Basic .NET、Visual C++、所有.NET语言、所有ActiveX语言。难以想象这居然是个免费的软件。
Grammatica
这是一个C#和Java的语法剖析器生成器(Parser Generator或叫作编译器的编译器:Compiler Complier) 。它相对于其它一些类似的工具如yacc和ANTLR有了更好的改进。这是因为Grammatica:
1.创建了更好的注释和易读的源代码.
2.拥有错误自动恢复并能够详述错误信息.
3.支持语法/词法测试与调试.
JavaCC
它是用JAVA开发的最受欢迎的语法分析生成器之一。它还提供JJTree等工具来帮助我们建立语法树。它还有一个用于辅助JavaCC应用程序开发的Eclipse插件.生成语法分析器语言为java。
还有很多语法分析器生成工具,比如JFlex、SableC、Beaver、JTopas、Runcc、CUP、SJPT、Chaperon。但我实在是没精力一一介绍了,之前实在没想到这工具如此繁多。
最后我选择了Grammatica,因为我需要C#语言的语法分析器,而且要求足够简单:)
我利用Grammatica的一个示例生成了一个C#的语法分析器,并移植到Silverlight项目上(由于另一个项目需要),目前运行良好。由于.Net与Silverlight.Net非常相像,这个移植工作比想象中要容易。不过,我不太赞成将语法分析器放到Web上,这样会使客户端明显增大,一种可以考虑的做法就是将用于验证功能的语法分析器封装成Web服务放到服务器端。
相关文章推荐
- 语法分析器自动生成工具一览
- 语法分析器自动生成工具一览
- 语法分析器自动生成工具一览
- 语法分析器自动生成工具一览
- 语法分析器自动生成工具一览
- 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第5版)
- 极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭
- Pycrc教程(自动生成C语言的CRC代码工具)
- 修改应用图标及添加启动画面(更新官方命令行工具自动生成)
- ESB报文自动生成工具
- 自动生成MOSS Query的SQL语句的工具
- 自动代码工具-json自动生成模型文件
- Android_10_java调用C(借助NDK工具自动生成.so)
- 微信小程序定制开发工具,自动生成前端源码
- Makefile自动生成工具-----autotools的使用(详细)
- C#工具---使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- 用Pytohn写了一个根据表结构自动生成C#对像代码的小工具
- app后端开发二:API接口文档自动生成工具
- mybatis-generator 代码自动生成工具(maven方式)
- myBatis自动生成工具