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

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的元语言和它产生的东西。稍后,我们会将注意力集中在创建复杂的翻译程序上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值