预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Antlr简介06通讯软件06382027郑毅本文重要简介了什么是ANTLR,以及ANTLR使用,其中ANTLR使用涉及了ANTLR安装及使用,ANTLR语法文献解析,ANTLR规则(RULE)解析,ANTLR语法实例—SensorSQL,ANTLRStudio及其功能简介等。Antlr(ANotherToolforLanguageRecognition)是一种工具,前身是PCCTS,它为咱们构造自己辨认器(recognizers)、编译器(compiler)和转换器(translators)提供了一种基本。通过定义自己语言规则,Antlr可觉得咱们生成相应语言解析器,这样便可以省却了自己全手工打造劳苦。它是这样一种工具,它可以接受文法语言描述,并能产生辨认这些语言语句程序。作为翻译程序一某些,你可以使用简朴操作符和动作来参数化你文法,使之告诉ANTLR如何去创立抽象语法树(AST)和如何产生输出。ANTLR懂得如何去生成辨认程序,语言涉及Java,C++,C#和不久Python。ANTLR懂得如何构建辨认程序,这些程序可以对如下三种不同输入应用文法构造:(i)字符流,(ii)记号流,和(iii)两维树构造。很自然它们分别与词法分析程序(lexers,如下简称lexer),语言解析程序和树遍历程序向匹配。这个用于定义这些语法元语言,在所有状况下几乎同样。一旦你对ANTLR和类似工具比较顺手,你会开始以一种新目光来看编程。许多任务强烈需要语言解决方案,而不是采用老式编程语言做法。例如,这些过程注解都是用特伦斯标记语言写。而ANTLR则能来将文本(内含某些额外东西和转换)转化为HTML,PDF或者其她那些生成程序文献格式。最后,ANTLR只是一件工具,仅仅这些。虽然它能通过将容易理解乏味某些自动化来协助你创立软件,但却不能企图让你指定整个编译器。例如,在单个描述里就不行。那些宣称此类事情非常伟大,可觉得发布刊物文章编写惊人“一揽子解决方案”,却会悲惨失败在实际项目中。词法分析器(Lexer)词法分析器又称为Scanner,Lexicalanalyser和Tokenizer。程序设计语言普通由核心字和严格定义语法构造构成。编译最后目是将程序设计语言高层指令翻译成物力机器或虚拟机可以执行指令。此法分析器工作是分析量化那些本来毫无意义字符流,将她们翻译成离散字符组(也就是一种一种Token)括核心字,标记符,符号(symbols)和操作符供语法分析器使用。语法分析器(Parser)编译器又称为Syntacticalanalyser。在分析字符流时候,Lexer不关怀所生成单个Token语法意义及其与上下文之间关系,而这就是Parser工作。语法分析器将收到Tokens组织起来,并转换成为目的语言语法定义所容许序列。无论是Lexer还是Parser都是一种辨认器,Lexer是字符序列辨认器而Parser是Token序列辨认器。她们在本质上是类似东西,而只是在分工上有所不同而已。ANTLRANTLR将上述两者结合起来,它容许咱们定义辨认字符流词法规则和用于解释Token流词法分析规则。然后,ANTLR将依照顾客提供语法文献自动生成相应词法/语法分析器。顾客可以运用她们将输入文本进行编译,并转换成其她形式(如AST—AbstractSyntaxTree,抽象语法树)。Antlr使用安装及使用到HYPERLINK""\t"_top"下载最新版本ANTLR开发包和源码(例如版本3.01)。将antlr-3.0.1.jar所在目录配备到你环境变量中,写好语法文献(例如SensorSQL.g),运营命令“javaantlr.ToolSensorSQL.g”就可以获得自动生成语法/词法分析器。ANTLR语法文献解析下面咱们对图中所描述ANTLR语法文献做某些详细分析。为了更好使用ANTLR,你还可如下载ANTLREclipse插件来协助你完毕工作。1.header域:所有出当前这里某些,都会出当前由ANTLR编译之后生成Java文献最顶部。在本例中你可以将包名和其她信息放到这一区域中,生成成果如由面相应代码某些所示。2.你在这一某些所提供内容对于文献中每个语法都是唯一。这一区域内容将出当前实际类定义之前。也就是说,两个import仅属于类CalcParser,而不属于在同一种文献中定义其她类(如CalcLexer)3.这里是语法定义某些,你同样可以将它当作是类定义。4.在Option域中,你可觉得你语法提供可选项。例如与否建立缺省抽象语法树,指定LL(K)中参数k值(缺省为1)等等,更详细参数请参阅ANTLR自带手册。5.Token某些用来声明那些在词法分析器中没有被声明“想象”token。这些信息通惯用在TreeParser中指定“想象”节点。