最近打算重做以前的一个留下遗憾的工作,当中的一项小任务就是要求编写一个简易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服务放到服务器端。

java语言生成语法分析_语法分析器自动生成工具一览相关推荐

  1. 语法分析器自动生成工具一览

    http://www.cnblogs.com/sword03/archive/2010/06/23/1764010.html

  2. java语法分析_语法分析器(java语法分析器)

    亲这是一款采用递归下降语法分析器,是一种适合手写语法编译器的方法,且非常简单.递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方 ...

  3. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  4. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  5. Java支持latex,基于Java和LaTeX的文档自动生成技术研究

    基于Java和 LaTeX 的文档 自动生成技术研究 ◆尚宝欣 徐 屹 (东北电力大学理学院,吉林 长春 132012) [摘 要]讨论了结合Java与LaTex 自动生成 PDF文档的方法.针 展名 ...

  6. html自动生成工具_关于STM32代码自动生成的工具的进度....

    前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...

  7. android getter不起作用,java - 如何在Android Studio中自动生成getter和setter

    java - 如何在Android Studio中自动生成getter和setter Android Studio中是否有一个快捷方式可以自动生成给定类中的getter和setter? 14个解决方案 ...

  8. 极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭

    日期:2013-4-17  来源:GBin1.com 技术专题介绍 分享专题:java mvc 增删改查 自动生成工具来袭 分享人:激情燃烧的UI 授课时间:2013/04/19  21:00-22: ...

  9. python和报表生成工具_报表自动生成工具的原理方法,及热门软件

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

最新文章

  1. 逃课上网吧编程、玩摇滚的另类学生,如何成为独角兽公司的 CTO?
  2. 可以与空间耦合的神经网络分子微扰模型BeO
  3. [转载]常用CASE工具介绍
  4. 异常检测时间序列_时间序列的无监督异常检测
  5. 8003.ros2创建win10工程
  6. javascript 理解对象--- 定义多个属性和读取属性的特性
  7. 花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)
  8. 操作系统的运行机制体系结构
  9. conformal mapping的理解
  10. tomcat在conf/Catalina/localhost目录下配置项目路径
  11. 【目标识别】SIFT算法理论部分
  12. 慢慢人生路,学点Jakarta基础-集合类
  13. 电力载波通信模块JST-HPLC-N-C在物联网通信领域的应用
  14. 支付宝小程序获取外部任意小程序appId及页面路径(附常见appid)
  15. http://blog.csdn.net/lnb333666/article/details/8546497
  16. Kaggle文本语义相似度计算Top5解决方案分享
  17. 认识很浅的云南最后的秘境
  18. 论“期权股”的财富经 !!!
  19. 实战:使用Pytorch搭建分类网络(肺结节假阳性剔除)
  20. 数独的生成以及解答--回溯算法c++附详细代码

热门文章

  1. 语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标
  2. 61个物联网传感器应用领域一网打尽
  3. 典型工业企业大数据平台解决方案(含数据治理)
  4. win10 安装flutter
  5. Autoit 知识要点
  6. AutoIt入门学习
  7. Weevely——Linux中的菜刀
  8. 日期分析小明和小强都是张老师的学生,张老师的生日是M月N日
  9. 微程序控制器之微指令
  10. 快递电子面单 对接快递鸟