欢迎来到天天文库
浏览记录
ID:36772336
大小:716.92 KB
页数:4页
时间:2019-05-15
《严格来说.这并不是讲迷J》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、维普资讯http://www.cqvip.com技术·Java严格来说.这并不是讲迷Java鞋术的文章:ANTER.一个被誉为蛙yacc/~x之后一个崭新的语法分析嚣受到很多人的美注只不过碰巧ANTER是用Java语言开发的对蝙译器枝术感*趣的读者也许能从这篇文章中发现一些有益的末西ANTLR入门TerenoeParr/文马维达/编译1.引介往2003初,ANTLR每月的下载次数大约是5,000。ANTLR完全处在共域中,甚至没有版权并且还提供了垒部源码。在上个世纪8O年代我通过手工构建丁许许多多recoN1Nerc识别器)和tranNator(翻译器)
2、,最后我厌烦透了,想使这个2.安装ANTLR(以2.7.2为例)过程自动化;由此产生了我的座右铭:为何要用五天时间手工蝙写你能蝣用一生中的五年使之ANT1.R以单个)或压缩的Lar文件的形式提供。解压你自动他的程序?”下载的文件,你将得到一个叫作antlr2.7.2的目录,其子目手工构逮如此多项目的好处是你能看到它们的共性,并且录有a=【1t1r.docexamples及Ub。你会发现antlr.1at(<400k),看到我们可以合理地期待哪些东西被形式化和自动化。那时我其中含有使用ANTLR生成的、基于Java的recognizergr~的井不太了解y
3、acc总之我想要的是能够重新生成我手工构建代所有runtime,并且还包含了ANTLR工具自身。你需要把码的软件。于是就有了ANTLR(实际上最初叫作PCCTS)。现antir2.7.2/an~r.jar放人你的cLAssPATH环境变量,以让在,我花在开发ANTI.R的时间已经超过了十年。系统找到ANTLR.claSs文件例如.如果你把antLr2.7.2ANTLR(AN~herToolforLatwaageRecogru~on)能够放在目录/tools中,你需要把接受文法语言描述,井生成能识别用语言书写的文句程序。作/t~ls/ar,tlr-2.7.
4、2/arrtlr.jar附加到你的elASSPATHI如果你用的是Windows系统.为translabr的—部分,体可以通过简单的操怍符和动作来扩充Ⅲ0改用你的文法,以告诉ANTLR怎样构建AST(AbstractSyntax\tools\ant1r一27.2%antlr.jarTree,抽象晤法树】.及怎样生成输出。ANT[.R能够生成用对antlr.+的引用将会映射到/tools/anflr2.7.2/antlr/Java、c十+、C#编写的『e∞gr也盯.很快还将支持~Lhon。.claSs。在你的机器上必须至少装有JDKI.1。ANTLR构建的
5、rec0gnizer能够将文法结构施加于三种不同ANTLR是命令行工具(但许多开发环境能让体在该环境的输八:ci】字符流,()token流(token:基本的、不可分中运行ANTLR来处理文法文件)。antlr.To。1的main方法是的文法单位),以及(m)二维树结构。它们自然地对应干lexer、ANTLR进入点parser以及treewalker。定义这些文法的语法(也印元语言),javaant1r.Tno1fi]e.g几乎在所有情况下都是一样的如果你在运行ANTLR时遇到问题,确定你正确地安装了一旦休熟悉了ANTLR或类似的工具,你就会开始以不同J
6、ava,并确定你适当地设置了CLASSPH。的眼光看待编程。忤多任务都迫切需要远远超出通常的编程语要让ANTLR生成使用c+或C#的recognizer,需要编言类型的语言方案。例如,本文是用TMLcTerence’aMarkup译生成相应的run,me详情可参阅ANTLR附带的文档。Language)撰写的。我讨厌输入ttTML,所以我编写了一个微不足道的transla~r,用ANTLR把文本(进行了一些额外的标3ANTLR语法简介记)转换为HTML格式PDF格式,或无论什么我厌烦为之写generatorc生成器)的格式。我们最好通过例子来了解ANTL
7、R。简单的计算器是常用的最后,箍要指出,ANTLR只是一个工具——就是这么多。八门例子,原因是:它易于理解,并且很简单有许多为ANrLR通过使那些得到了良好理解的、乏味的组件自动化它能谚帮撰写的类似侧子和教程,我将在这里用自己的语言描述一个计助你构建软件,但它不会让你用一条描述就定卫出一整个编译算器。首先我们将构建能直接对简单表达式进行求值的计算器。器。对于要编写令人吃惊的“一行器(oneliner),以在刊物然后我们将生成树,并耐树进行求值,以得到相同的答案。上发表文章的人而言,声称能做到这样的事情的工具的确很了尽管你知道你最终必须把字符输人流分解为多
8、个token.不起,但在实际项目中,这些工具却会悲惨地失败。思考一下表达式的文法
此文档下载收益归作者所有