文章分类 - ANTLR
摘要:http://www.aliensoft.cn/chapter5.rar第五章 嵌入文法的Actions在ANTLR中词法规则和语法规则都是一些上下文无关的规则,它们不能满足语法分析中的一些高级需求或特殊需求。如:我们可能要判断一个表达式中的变量之前是否定义了,没有定义要给出编译错误信息,或者我们要在语法分析时记录一些信息以后使用。这时我们就要在文法中嵌入Actions。Actions就是嵌入文法中的程序代码,它与我们在asp或jsp页面html代码中嵌入VB和java的代码非常类似,在生成代码后actions会在恰当的位置起到恰到好处的作用。在ANTLR文法中嵌入的程序代码要用Options
阅读全文
摘要:http://www.aliensoft.cn/chapter4.mht第四章 语法分析语法分析是编译过程的第二步,在词法分析提供的记号流的基础上,对源代码的结构做总体的分析。无论分析的内容有多大语法分析总是由一个启始规则开始的,最后总是生成一棵语法树。一般情况语法规则是一个文法的主体部分,也是编写文法的难点。本章用几个示例来讲述如何用ANTLR定义语法规则。4.1语法分析的方法 在ANTLR中语法分析定义的规则名必须以小写字母开始大写如“baseClass”,“subfixSymbol”。如果词法规则与语法规则写在同一个文件时,虽然ANTLR中并没有严格定义规则的先后顺序,但一般情况下语法规
阅读全文
摘要:http://www.aliensoft.cn/chapter3.mht第三章 词法分析本章讲述ANTLR的词法分析部分。词法分析是编译过程的第一步,是编译过程的基础。词法分析除了上一章讲过它为语法分析提拱记号流,滤掉编译过程不关心的内容以外,还有一个重要的作用是有了词法分析可以大大提高编译的效率。可能有人曾有过疑问,为什么一定要有词法分析?词法分析和语法分析的关系与其它编译过程有些不同,如:语义分析,生成代码在编译过程中是独立的步骤与其它步骤有明显的区别。而词法分析和语法分析在形式上很相似,都要用文法规则去定义语言的结构,为什么不统一起来呢?可以想象一下如果把词法分析和语法分析合并会有什么不
阅读全文
摘要:http://www.aliensoft.cn/chapter2.mht第二章 编译原理基础知识编译是将计算机高级语言如C++、Java、C#编写的源程序翻译成可以在计算机上执行的机器语言的翻译过程。编译过程中分:词法分析、语法分析、语义分析、源代码优化、代码生成和目标代码优化几个过程。ANTLR解决的是词法分析和语法分析的问题,下面介绍一下编译原理中有关词法分析和语法分析的基本知识。词法分析语法分析语义分析源代码优化代码生成记号语法树注释树代码生成目标代码优化目标代码目标代码图2.1源程序字符串词法分析是对源程序一个一个字符地读取,从字符中识别出标识符、关键字、常量等相对独立的记号(toke
阅读全文
摘要:原址:http://www.aliensoft.cn/Chapter1.mht第一章Hello WorldJVM.NETANTLR文法ANTLR RuntimeC#生成Javacsc.exe语法分析器编译javac.exee语法分析器编译CC++Python… …嵌入C#,java…代码片段ANTLR是ANother Tool for Language Recognition的缩写“又一个语言识别工具”,读[ 'æntlə ]。从名字上可以看出在ANTLR出现之前已经存在其它语言识别工具了(如LEX[1],YACC[2])。ANTLR的官方定义为:根据一种可以嵌入如Java,
阅读全文
摘要:前言当今软件开发对开发效率和质量的要求越来越高,出现了许多新的编程语言,开发工具和框架。许多软件开发公司和个人也在开发适合自己领域或本行业的工具、框架来提高生产力。其中一些工具和框架需要分析现有编程语言的语法或通过配置文件来获得软件设计开发的元数据信息。比如:UML建模工具需要分析面向对象语言程序中定义了哪些类,类中又定义了哪些方法以及方法的参数,类与类之间的关系等。获得这些元数据信息后就可以绘制出类图。还有些工具需要定义新的语言或格式。如Hibernate定义了HQL语言来实现适合自己的数据查询方式。笔者之前在开发一个SQL分析工具时就要分析SELECT语句的语义,比如一个查询要查询哪些表“
阅读全文
浙公网安备 33010602011771号