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的元语言和它产生的东西。稍后,我们会将注意力集中在创建复杂的翻译程序上。
特伦斯·帕尔
简介
在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的元语言和它产生的东西。稍后,我们会将注意力集中在创建复杂的翻译程序上。
相关文章推荐
- ANTLR(语言识别的另一工具)的简介之二[翻译]
- ANTLR(语言识别的另一工具)的简介之三[翻译]
- ANTLR(语言识别的另一工具)的简介之四[翻译]
- 又一个语言识别工具(ANTLR)
- 云翻译?谷歌翻译工具包(Google Translate Toolkit)简介
- 怎样使用已有的工具训练Tesseract 3.03–3.05来识别新的语言
- 语言模型(一) 工具和使用简介
- 调用worldlingo.com翻译服务,制作的一个多国语言翻译工具
- 七款代码味道识别工具【简介】
- Android开发工具-多国语言翻译对照表
- QT工具___语言翻译
- 能自动将软件翻译成不同语言的工具
- Python操作Excel(翻译工具(一种语言))
- 【原创翻译】Go语言工具(Go tools)
- 七款代码味道识别工具【简介】
- 利用开源工具搭一套汉英翻译系统(三):语言模型工具SRILM
- 【翻译】语法分析工具Gold介绍(1)——系统简介
- Qt语言翻译工具的使用(续)
- android工程字符串多语言翻译遗漏查找工具
- Java语言实验机器与环境及JDK开发工具简介及Java程序开发步骤