2022年编译实验讲义.docx
精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用编译原理课程设计讲义黑龙江高校软件学院名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用编译原理课程设计讲义“ 编译原理” 课程是运算机专业中一门重要的专业理论课,是一门理论 性和实践性都很强的课程;为协作编译原理课程的教案,培育同学 的实际工作才能,加深对课堂教案内容的懂得,通过设计一个小型编译 器,更深刻地领悟其基本概念、基本工作原理和实现方法,从而具有初 步开发系统软件和应用软件的实际才能,特开设此课程设计;二、课程设计的题目 用高级程序设计语言实现小型编译器的设计与实现;三、课程设计的主要内容 通过小型编译器的设计与实现,使同学系统地把握编译程序的总体结 构以及词法分析程序、语法分析程序、语义分析程序、代码生成程序;把握结构化设计方法;明白大型软件的设计技术;四、课程设计的详细内容和要求 1 把握 PL/0 2 把握形式语言与自动机的概念,能构造识别相应符号串的自动机;3 把握编译程序的词法分析程序的构造,能改编 序和词法分析程序;4 把握编译程序中语法分析程序的构造,能改编 和语法分析程序;PL/O 编译程序的总控程PL/O 编译程序总控程序5 把握 LL1> 、 LR、算符优先等语法分析技术,构造相应的语法分析程67 把握语法制导生成四元式的算法,并构造将表达式翻译成四元式程序8 把握编译程序的代码生成程序,并改编PL/0的总控掌握和代码生成程序;名师归纳总结 - - - - - - -第 2 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用本课程在词法分析阶段、语法分析阶段、语义分析及代码生成阶段均安排了上机实践的内容,按以下的基本实践内容的要求改编总控程序和相同学在对 PL O 语言某一扫描的分析程序或主程序进行修改或护充时,必需储存完整的源程序正本,只需在相应源文件副本上进行修改;然后再重新对修改的程序进行编译,得到新的源文件和新的可执行文件,并用来编译用户编制的含有增加或修改成分的新源程序;试验一 用 PLO名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 一>试验目的:1 TURBO PASCAL2 PASCAL3 PLO 二>试验内容与步骤1 PL/02 PLO * * * * * * * * * * * * * * * * * * * * * * * * * 3PLO语言编写求31004 将一正数倒置;5 对任意给定的整数,列出其二进制、八进制、十六进制表示形式;67 EBNF描述 PLO语言的程序结构及构成规章;注:PL/0 语言程序编译器汇编语言程序<自行定义的源语言)<你所编译的结果目标程序)试验二 一>试验目的:名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用1 2 3 4 二>12高级语言编写程序:该程序能接受全部的常数 整数和定点小数>3PL/0 的全部保留字;4 用高级语言编写程序:该程序能接受 三>有关说明:1 C2试验三 一>PL/0 的全部界符、运算符;名师归纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - 1PLO个人资料整理仅限学习使用2 PLO3 PLO4 二>1可将全部标识符归为一类;将常数归为另一类:保留字、界符、运算符符就可实行一词一类;2可事先建立一保留字表,以备识别保留字时进行查询;变量名表及常数表就在词法分3所输出的每一单词,均按形如 数, CLASS字段为相应的类别码,CLASS, VALUE>的二元式编码;对于变量标识符和常 VALUE字段是该标识符、常数在其符号表中登记项的序号 要求在变量名表登记项中存放该标识符的字符串,其最大长度为四个字符;常数表登记项中就存放该常数 整数 >的二进制形式 >;对于保留字、界符和运算符,由于采纳一词一类的编码方式,所以仅需在二元式的 CLASS字段上放置相应的单词的类别码,VALUE字段就为“ 空” ; 或:为便于查看由词法分析程序输出的单词串也可以在 号串本身 >4 三>有关说明:1 PLOCLASS字段上放置单词符2PL O的编译程序中的词法分析程序,使之能识别含repeat 语句的程序;试验四表达式 一>名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - 1PLO个人资料整理仅限学习使用2 分别把握 LL1> 、算符优先、 LR 二>试验内容及步骤程序;算符优先矩阵 或 LL1> 矩阵或 SLR1>矩阵 >,并编制语法分析例如:给定文法 G1 ET E E 1 +TE 11 TFT T 1 *FT 1 Fi E>1> 先构造其 SELECT集合,判定其是否为 LL1> 文法;2> 是就构造其 LL<1)分析表;3> 给出句子 i+i*i# 及<i+i )*i# 的语法分析过程;试验五 语法分析程序的构造名师归纳总结 - - - - - - -第 7 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 一>1 把握 LL1> 、算符优先、 LR等语法分析方法的构造;2 按要求改编总控程序及语法分析程序; 二>试验内容及步骤1 挑选一种你感爱好的语法分析方法 程序的依据 . 算符优先、 LL1> 、SLR<1>)作为编制语法分析2PLO 语言,对PLO 语言的功能进行以下扩充,改编后并上机调试通过;1> 增加 for 2> 增加 do-while 语句 3> 条件语句IF 条件 THEN语句 ELSE语句 ZK> 4> VAR数组名 下界 <上界 >>下界和上界可用常量标识符 3 PLO 4 5名师归纳总结 和条件每人15 中挑选某几项或者全部;第 8 页,共 14 页- - - - - - -精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用试验六 中间语言翻译器的构造 一>试验目的123 二>试验步骤与内容1PUSH ,Q>表示 Q进 栈; POP ,B>表示从 栈出栈; NEXT表示读下一符号;输入流名字 Q 2 > # s-1如 1 2 ,POP , B> 1 PUSH , Q>PUSH ,就PUSH ,POP ,B> B> PUSH , NEXT > 2> PUSH , B> NEXT NEXT如 1 2 ,就POP ,B),PUSH ,B> PUSH ,Q> PUSH ,PUSH , 2> POP , B> STOP NEXT > NEXT NEXT NEXT 2名师归纳总结 - - - - - - -第 9 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用3可以是 +,- ,*试验七 一>1 PLO2 二>试验步骤及内容:名师归纳总结 1PL O>第 10 页,共 14 页根据试验四中步骤3 的四个方面增加PL 注:四项扩充可任选一项或某几项功能2PLO3调试通过增改后的PLO编译程序- - - - - - -精选学习资料 - - - - - - - - - 试验八综合设计个人资料整理仅限学习使用 < 一)试验目的: 1 系统地把握编译程序的总体结构; 2 把握词法分析、语法分析、语义分析、目标生成的实质含义; 3 把握结构化设计方法; 4 明白大型软件的设计技术; < 二)试验内容与步骤:1 采纳软件工程的结构化设计方法,将第三个试验到第六个试验利用结构化设计方法综合为一个完整的小型编译器,以达到系统把握开发软件系统的方法和技术的目的;2 设计该系统的总体菜单;3 通过总体菜单挑选某一功能进入子菜单;4 通过某一功能子菜单,进入相应各个子系统,完成详细的功能;5 通过帮助工具,进一步丰富和完善上述程序窗口、菜单的界面设计;名师归纳总结 - - - - - - -第 11 页,共 14 页精选学习资料 - - - - - - - - - 个人资料整理 仅限学习使用 1、 本课程设计共支配了八个设计题目,每个同学在试验后要根据软 件 工 程 的 思 想 写 出 设 计 文 档 , 并 在 文 档 的 最 后 给 出 对 设 计 的 收 获 、 体 会、期望和建议,以利于不断改进教案;不合格者需要重修; 2 、成果评定 : 每个试验题目需在规定时间内完成,成果达到及格以上 100 分;完 方可进行下一个试验题目;每个试验题目有各自的分值,总计 成全部设计题目 3序试验工程内容提要时间分有关说明号PL/O源程用高级语言编写程序建立支配数要 求 : 任 选 ,实和 访 问 正 文 文 件 , 并 用第四周5分完 成 任 选 题 目序结构及PL/O语言编写程序,扩充的同学可加分验构成规章规章;一实构造识别用语言实现,分别编写识第五周10验符号串的别各类单词的程序;| 第六周分要求:必做;二自动机以PL/O 编 译 程 序 为 样15要求:必做;词法分析实程序的构本,改编其总控程序和词验造法分析程序,使其能对扩第七周分三充后的PL/O 语言进行词法分析名师归纳总结 - - - - - - -第 12 页,共 14 页精选学习资料 - - - - - - - - - 表达式的用高级语言编写程序,使个人资料整理仅限学习使用要求:必做;实语法分析其 能 对 算 术 表 达 式 进 行第八周15要求:必做;验程序的构LL<1)、算符优先、LR的 | 分四造语法分析第九周实语法分析挑选一种语法分析方法对第十周验程序的构试验三所生成的单词序列 | 15 要求:必做;五造进行语法分析;第十四周分中间语言用 C语言编写程序,使其实翻译器的能将任意表达式翻译成逆第十五周15验构造波兰式,并用语法制导的 | 六方法生成表达式的四元式第十六周分序列实目标代码以 PL/O编译程序为样本,第十七周10要求:必做;生成改编总掌握程序及代码生验成程序分七要 求 : 实 验 完实综合设计通过结构化设计方法将上第十八周15成 后 , 经 测 试验述各种程序综合为一个完通 过 者 , 综 合八整的软件系统,以窗口、分前 几 个 实 验 成菜单做界面进入各个子系绩 和 平 时 的 出统 , 最终实现编译器原勤 分 数 , 给 出型系统的设计;整 个 实 验 的 成绩;名师归纳总结 - - - - - - -第 13 页,共 14 页精选学习资料 - - - - - - - - - 名师归纳总结 个人资料整理仅限学习使用第 14 页,共 14 页- - - - - - -