antlr简介及中文手册

antlr简介及中文手册

ID:1354792

大小:630.00 KB

页数:25页

时间:2017-11-10

antlr简介及中文手册_第1页
antlr简介及中文手册_第2页
antlr简介及中文手册_第3页
antlr简介及中文手册_第4页
antlr简介及中文手册_第5页
资源描述:

《antlr简介及中文手册》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Antlr简介06通讯软件06382027郑毅本文主要介绍了什么是ANTLR,以及ANTLR的使用,其中ANTLR的使用包括了ANTLR的安装及使用,ANTLR语法文件解析,ANTLR规则(RULE)解析,ANTLR语法实例—SensorSQL,ANTLRStudio及其功能介绍等。Antlr(ANotherToolforLanguageRecognition)是一个工具,前身是PCCTS,它为我们构造自己的识别器(recognizers)、编译器(compiler)和转换器(translators)提供了一个基础。

2、通过定义自己的语言规则,Antlr可以为我们生成相应的语言解析器,这样便可以省却了自己全手工打造的劳苦。它是这样的一种工具,它可以接受文法语言描述,并能产生识别这些语言的语句的程序。作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,语言包括Java,C++,C#和不久的Python。ANTLR知道怎样构建识别程序,这些程序可以对以下三种不同的输入应用文法结构:(i)字符流,(ii)记号流,和(iii)两

3、维的树结构。很自然的它们分别与词法分析程序(lexers,以下简称lexer),语言解析程序和树遍历程序向匹配。这个用于定义这些语法的元语言,在所有情况下几乎一样的。一旦你对ANTLR和类似工具比较顺手,你会开始以一种新的目光来看编程。许多任务强烈需要语言解决方案,而不是采用传统编程语言的做法。比如,这些过程的注解都是用特伦斯标记语言写的。而ANTLR则能来将文本(内含一些额外的东西和转换)转化为HTML,PDF或者其他那些生成程序的文件格式。最后,ANTLR只是一件工具,仅仅这些。虽然它能通过将容易理解的乏味部分自

4、动化来帮助你创建软件,但却不能企图让你指定整个编译器。例如,在单个的描述里就不行。那些宣称这类事情非常伟大,可以为发布刊物文章编写惊人的“一揽子解决方案”,却会悲惨失败在实际项目中。词法分析器(Lexer)词法分析器又称为Scanner,Lexicalanalyser和Tokenizer。程序设计语言通常由关键字和严格定义的语法结构组成。编译的最终目的是将程序设计语言的高层指令翻译成物力机器或虚拟机可以执行的指令。此法分析器的工作是分析量化那些本来毫无意义的字符流,将他们翻译成离散的字符组(也就是一个一个的Token

5、)括关键字,标识符,符号(symbols)和操作符供语法分析器使用。语法分析器(Parser)编译器又称为Syntacticalanalyser。在分析字符流的时候,Lexer不关心所生成的单个Token的语法意义及其与上下文之间的关系,而这就是Parser的工作。语法分析器将收到的Tokens组织起来,并转换成为目标语言语法定义所允许的序列。无论是Lexer还是Parser都是一种识别器,Lexer是字符序列识别器而Parser是Token序列识别器。他们在本质上是类似的东西,而只是在分工上有所不同而已。ANTLR

6、ANTLR将上述两者结合起来,它允许我们定义识别字符流的词法规则和用于解释Token流的词法分析规则。然后,ANTLR将根据用户提供的语法文件自动生成相应的词法/语法分析器。用户可以利用他们将输入的文本进行编译,并转换成其他形式(如AST—AbstractSyntaxTree,抽象的语法树)。Antlr使用安装及使用到http://www.antlr.org/下载最新版本的ANTLR开发包和源码(例如版本3.01)。将antlr-3.0.1.jar所在目录配置到你的环境变量中,写好语法文件(例如SensorSQL.g

7、),运行命令“javaantlr.ToolSensorSQL.g”就可以获得自动生成语法/词法分析器。ANTLR语法文件解析下面我们对图中所描述的ANTLR语法文件做一些详细的分析。为了更好的使用ANTLR,你还可以下载ANTLR的Eclipse插件来帮助你完成工作。1.        header域:所有出现在这里的部分,都会出现在由ANTLR编译之后生成的Java文件的最顶部。在本例中你可以将包名和其他信息放到这一区域中,生成的结果如由面对应代码部分所示。2.        你在这一部分所提供的内容对于文件中的每

8、个语法都是唯一的。这一区域的内容将出现在实际的类定义之前。也就是说,两个import仅属于类CalcParser,而不属于在同一个文件中定义的其他类(如CalcLexer)3.        这里是语法定义部分,你同样可以将它看成是类定义。4.        在Option域中,你可以为你的语法提供可选项。例如是否建立缺省的抽象语法树,指定LL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。