编译原理 符号表和词法分析
- 格式:ppt
- 大小:126.00 KB
- 文档页数:22


哈工大编译原理基本原理1. 什么是编译原理?编译原理(Compiler Design)是计算机科学中的一个重要分支,研究的是将高级语言程序翻译成机器语言程序的过程和方法。
编译原理包括语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
2. 编译器的基本工作流程编译器通常由以下几个阶段组成:2.1 词法分析词法分析阶段将源代码划分为一个个的单词(Token),并进行分类。
例如,对于C语言而言,单词可以是关键字(如if、for)、标识符(如变量名)、常量(如整数、字符)等。
2.2 语法分析语法分析阶段根据程序的上下文无关文法规则,将单词序列转换为抽象语法树(Abstract Syntax Tree,AST),以便进一步进行语义分析和中间代码生成。
常用的方法有自顶向下的递归下降分析和自底向上的LR(1)分析。
2.3 语义分析语义分析阶段主要检查源程序是否符合给定的语义规则,并对其进行语义翻译。
例如,检查变量是否被声明、函数调用是否正确等。
语义分析通常会生成符号表,用于记录程序中的变量、函数等信息。
2.4 中间代码生成中间代码是一种介于源代码和目标代码之间的抽象表示形式,通常使用三地址码或四元式表示。
中间代码生成阶段将抽象语法树转换为中间代码,以便进行后续的优化和目标代码生成。
2.5 代码优化代码优化阶段对中间代码进行优化,以提高程序的执行效率和资源利用率。
常见的优化技术包括常量传播、公共子表达式消除、循环展开等。
2.6 目标代码生成目标代码生成阶段将优化后的中间代码转换为特定机器上可执行的目标代码。
目标代码可以是汇编语言或机器语言,并且通常需要考虑底层硬件架构的特性和限制。
3. 哈工大编译原理相关的基本原理哈尔滨工业大学(Harbin Institute of Technology)在编译原理领域做出了很多重要贡献,以下列举了几个与哈工大相关的基本原理:3.1 LL(1)文法LL(1)文法是一种上下文无关文法,其中L表示从左到右扫描输入,第一个L表示从左侧推导,1表示每个非终结符的每个输入串只有一个产生式可以应用。
学年第学期《编译原理》实验报告学院(系):计算机科学与工程学院班级:11303070A学号:***********姓名:无名氏指导教师:保密式时间:2016 年7 月目录1.实验目的 (1)2.实验内容及要求 (1)3.实验方案设计 (1)3.1 编译系统原理介绍 (1)3.1.1 编译程序介绍 (2)3.1.2 对所写编译程序的源语言的描述 (2)3.2 词法分析程序的设计 (3)3.3 语法分析程序设计 (4)3.4 语义分析和中间代码生成程序的设计 (4)4. 结果及测试分析 (4)4.1软件运行环境及限制 (4)4.2测试数据说明 (5)4.3运行结果及功能说明 (5)5.总结及心得体会 (7)1.实验目的根据Sample语言或者自定义的某种语言,设计该语言的编译前端。
包括词法分析,语法分析、语义分析及中间代码生成部分。
2.实验内容及要求(1)词法分析器输入源程序,输出对应的token表,符号表和词法错误信息。
按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误;(2)语法分析器输入token串,通过语法分析,寻找其中的语法错误。
要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。
(3)语义分析和中间代码生成输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生成中间代码。
要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。
实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。
3.实验方案设计3.1 编译系统原理介绍编译器逐行扫描高级语言程序源程序,编译的过程如下:(1).词法分析识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。