1、编译原理课程设计 编译原理课程设计 1 编译原理课程设计编译原理课程设计 S S 语言的编译器的设计与实现语言的编译器的设计与实现 学 院(系):计算机科学学院 学 生 姓 名: 学 号: 班 级: 同 组 人 : 编译原理课程设计 编译原理课程设计 2 引 言 编译原理是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业 的一门重要专业课程。该课程系统地向学生介绍编译程序的结构、工作流程及编译程序 各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽 象复杂,涉及到大量的软件设计算法,因此,一直是一门比较难学的课程。为了使学生 更好地理解和掌握编译技术的基本概
2、念、基本原理和实现方法,实践环节非常重要,只 有通过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增 强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。 编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析阶 段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字 符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则 识别单词(也称单词符号或符号)。词法分析程序实现这个任务。语法分析是对所 需要的语言进行分析,根据不同的分析方法采用不同的程序结构,本编译器采用 LL(1)文法的预测分析法进行语法分析,用
3、递归下降子程序法实现最为简单。 编译原理课程设计 编译原理课程设计 3 正 文 1 需求分析 1.1 功能需求 根据课程设计要求可知,程序需要实现的有词法分析,语法分析,语义分析目标代 码生成,四大部分子程序,其中语法分析部分因为采用递归下降子程序法,所以将语义 分析嵌入到语法分析部分实现。 所以,本程序需要三部分:词法分析,语法分析,语法制导翻译程序段。 1.2 性能需求 响应时间尽量短,分析的程序段无需过大,最大共 300 字符就行。 1.3 可靠性 出现输出错误的次数不可超过总试验次数的 5%。 编译原理课程设计 编译原理课程设计 4 2 概要设计 2.1 词法分析器 本编译器使用数组进
4、行处理,词法分析部分对输入的单词进行读入后录入数组中形 成有序列,后便可输出二元式序列,而数组操作十分的方便简单,易于理解。 自动机是单词识别的重要步骤,根据这个步骤便可以写出词法分析程序。词法分析 的结果放入 BUFFERmaxsizemax中,作为全局变量执行为语法分析提供单词序列。 2.2 语法分析 词法分析结束后得到一个单词序列,语法分析部分使用给定的文法对单词序列进行 分析,运用递归下降子程序法进行,所以在进行语法分析时先改造文法,使之能满足递 归下降的要求,即消除左递归和消除文法二义性。 构造函数时: 针对每个非终极符编写函数,根据规则候选式的结构, 按从左到右的顺序定义函 数体。对于规则中的终极符,sym匹配上了规则中的一个终极符,就把下一个待匹配符 读进 sym中;若匹配不成功, 表明有语法错误,语法检查停止。 对于规则右部的非终极符,就调用该非终极符所对应的函数。 2.3 语法制导翻译 根据设计说明和要求的指示,语法制导翻译与语法分析一同进行。 语法制导翻译有三种: 1、声明语句的翻译