网上大多ANTLR的资源都是Java的,很少C#的示例,此文的目的就是以一个C#实现的表达式计算实例来说明如何在Visual Studio中编写ANTLR程序。大家可以把它看成一个简单的Hello World,后续我会陆续介绍ANTLR的一些高阶使用。
ANTLR是一款强大的语法分析生成器,可以用来读取,处理,执行和转换结构化文本或二进制文件。最著名的应用应该是Hibernate,用ANTLR搭建了HQL。除了大牌项目,你也可以建立各种有用的工具,如配置文件的读取,遗留代码转换器,Wiki标记的渲染器以及JSON解析器。通过语法的语言描述,ANTLR可以生成这种语言解析器并自动生成语法分析树(一种代表语法如何去匹配输入的的数据结构)。ANTLR也可自动生成树的遍历器,你可以用Visitor访问那些树的节点来执行应用程序特定的代码。
同类的工具
早期有很多优秀的语言识别工具,比如Lex/Yacc和Flex/Bison,但是年代久远,不支持C#。
1. Flex/Bison PostgreSQL用的是这个
2. Yacc MySQL用的是这个
4. Lemon 一个小巧的词法语法解析器,SQLite用的是这个
下面是一张主流的Parser的比较图:
在Visial Studio 2010中安装ANTLR插件
打开Tools中的Extension Manager...