论文部分内容阅读
解析C语言中的语句是编译C语言源文件和头文件必须首先实现的过程。如何正确的解析C语言语句,对后面的编译工作和源代码的风格化都至关重要。按照编译原理的方法,在设计的过程中,本文先将C源程序中的字符流,从左至右逐个将字符进行符号化,产生一个个词法单元(token),作为语法分析的分析单元,这个过程是设计词法分析器的过程。最后采用DOM/AST技术把这些词法单元处理成一棵抽象语法树(AST),这个过程是语法分析的过程。也就是把C语言的语句解析分为词法和语法分析两级。文档对象模型(DOM)是为了实现HTML和XML文档而开发的API。它是万维网联盟(W3C)用与平台无关的方式定义的一个标准,是以层次结构组织的节点或信息片断的集合。而抽象语法树(AST)是用来描述用特定语言写的源代码的抽象或是简单语法结构的。为了给第三方提供简单快速访问C语言文件的接口,本文结合DOM和AST技术,创新地提出了一个DOM/AST技术概念,同时结合编译原理中的一些主要理论,提出并设计了一个通用的C语言的解析器,论文的主要工作包括:1.介绍了解析器的概念,阐述了解析器在编译器中的位置,创新地提出了DOM/AST技术的概念,同时还介绍了符号表、词法分析和语法分析的概念。2.在词法设计中,阐述了词法分析中的词法单元、模式和词素的概念,分析了一种在词法分析阶段中需要用到的输入缓冲技术以及词法识别算法,包括:词法单元的识别算法、解决词法错误的算法以及如何识别常量算法,在本文中的识别算法中,还重点分析了一种可以快速识别关键字的AC算法。3.在语法设计中,先介绍了文法的概念以及消除语法二义性的技术,接着简单地讨论了下C语法错误的本质以及错误恢复的一般策略,最后重点分析了自顶向下和自底向上的语法分析技术。在自顶向下的语法分析中,重点讨论了递归下降、预测分析和LL(1)语法分析技术,而在自底向上的语法分析中,先简要的介绍了移入—归约分析技术,最后重点的分析了如何构建一个LR(1)语法分析器。