您的位置:首页 > 其它

ANTLR(语言识别的另一工具)的简介之一[翻译]

2004-02-11 14:08 423 查看
ANTLR简介
特伦斯·帕尔
简介
在20世纪80年代,我手工创建许多许多的语言识别程序和翻译程序,最后这变得十分厌烦,以至于开始尝试使这个过程自动化; 由此产生了我的格言:
"你能够用生命中五年的时间使之自动化的事情,为什么要在五天之内手工编程完成。"
手工构建如此之多的工程的好处就是你能明白它们的共性,并希望那些工作可以合理的被形式化和自动化。然而我并不能很好的理解yacc,但无论如何又想要某种东西,它能够重新产生我手工创建的程序。ANLTR就是这个结果(实际上最初被叫做PCCTS)。我现在已经十多年在着力于它的工作了。[看快速历史,可以得到更多的细节].
ANTLR,即语言识别的另一工具。它是这样的一种工具,它可以接受文法语言描述,并能产生识别这些语言的语句的程序。作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,语言包括Java,C++,C#和不久的Python。
ANTLR知道怎样构建识别程序,这些程序可以对以下三种不同的输入应用文法结构:(i) 字符流, (ii) 记号流,和(iii)两维的树结构。很自然的它们分别与词法分析程序(lexers,以下简称lexer),语言解析程序和树遍历程序向匹配。这个用于定义这些语法的元语言,在所有情况下几乎一样的。
一旦你对ANTLR和类似工具比较顺手,你会开始以一种新的目光来看编程。许多任务强烈需要语言解决方案,而不是采用传统编程语言的做法。比如,这些过程的注解都是用特伦斯标记语言写的。由于我讨厌键入HTML,所以我使用ANTLR编写了一个非常小的翻译器,用来将文本(内含一些额外的东西和转换)转化为HTML,PDF或者其他那些我厌烦为之编写生成程序的文件格式。
最后,我要指出的是ANTLR只是一件工具,仅仅这些。 虽然它能通过将容易理解的乏味部分自动化来帮助你创建软件,但却不能企图让你指定整个编译器。例如,在单个的描述里就不行。那些宣称这类事情非常伟大,可以为发布刊物文章编写惊人的“一揽子解决方案”,却会悲惨失败在实际项目中。
从2003年早些开始,每月都有将近5000次的ANLTR下载。ANTLR 完全公开,甚至没有一个版权,并且带有完全的源码。这些文字都假定你熟悉基本的识别和翻译感念。从现在看是,你需要熟悉ANLTR的元语言和它产生的东西。稍后,我们会将注意力集中在创建复杂的翻译程序上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: