您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 编译原理课设-(中版)
1编译原理课程设计简单编译器学院(系):电子信息与电气工程学部学生姓名:李梦珂学号:201181216班级:电计1101同组人:宫丽迪电计1101201181306陈笛电计1101201181326大连理工大学DalianUniversityofTechnology编译原理课程设计——简单编译器–1–目录1词法分析...............................................................21.1实验目的.........................................................21.2实验要求.........................................................21.2.1待分析的简单的词法..........................................21.2.2各种单词符号对应的种别码:.................................21.2.3词法分析程序的功能:.......................................31.3词法分析程序的算法思想:.........................................31.3.1主程序示意图:.............................................31.3.2扫描子程序的算法思想:.....................................41.3.3词法分析程序的C语言程序源代码:...........................61.3.4结果分析:.................................................61.3.5总结:.....................................................72语法分析...............................................................82.1实验目的.........................................................82.2实验要求..........................................................82.2.1待分析的简单语言的语法.....................................82.2.2实验算法结构...............................................8语法分析程序的算法思想............................................82.3结果分析:......................................................132.4总结:..........................................................153语义分析程序..........................................................163.1实验目的:......................................................163.2实验要求:......................................................163.3算法思想:......................................................163.3.1程序结构图................................................163.3.2设置语义过程..............................................203.3.3函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。...213.3.4简单赋值语句的翻译文法....................................213.4结果分析........................................................223.5总结:..........................................................25编译原理课程设计——简单编译器–2–1词法分析(李梦珂201181216负责)1.1实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1.2实验要求设计、编制并调试一个词法分析程序,三人一组。1.2.1待分析的简单的词法(1)关键字:intifthenelsewhiledoreadwrite所有的关键字都是小写。(2)运算符和界符::==+-++--*/=!===;(){}#(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:ID=letter(letter|digit)*NUM=digitdigit*(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。1.2.2各种单词符号对应的种别码:表1.1各种单词符号对应的种别码单词符号种别码单词符号种别码int1++17If2--18Then3:=19else420while5!=21do6=22read723write8=24编译原理课程设计——简单编译器–3–lettet(letter|digit)*10==25dightdight*11;26=12(27+13)28-14\30*15!31/16:32,33{35}361.2.3词法分析程序的功能:输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。例如:对源程序输入如下:{Intx,y;X:=2*y;If(x5)Thenx:=2*x+2/3;}#后经词法分析输出如下序列:({35}(int1)(x10)(,33)(y10)(;26)(x10)……1.3词法分析程序的算法思想:算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。1.3.1主程序示意图:主程序示意图如图1.1所示。其中初始包括以下两个方面:⑴关键字表的初值。编译原理课程设计——简单编译器–4–关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[6]={“int”,“if”,“then”,“else”,“while”,“do”,“read”,”write”};图1.1(2)程序中需要用到的主要变量为syn,token和sum1.3.2扫描子程序的算法思想:首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。扫描子程序主要部分流程如图1.2所示。编译原理课程设计——简单编译器–5–图1.2编译原理课程设计——简单编译器–6–1.3.3词法分析程序的C语言程序源代码:1.3.4结果分析:输入如下:{Intx,y;X:=2*y;If(x5)Thenx:=2*x+2/3;}#后经词法分析输出如下序列:({35}(int1)(x10)(,33)(y10)(;26)(x10)……如图1.3所示:图1.3编译原理课程设计——简单编译器–7–1.3.5总结:词法分析的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。通过本试验的完成,更加加深了对词法分析原理的理解。编译原理课程设计——简单编译器–8–2语法分析2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。2.2实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析。2.2.1待分析的简单语言的语法用扩充的BNF表示如下:⑴程序::=声明语句串;⑵语句串::=语句{;语句}⑶语句::=赋值语句⑷赋值语句::=ID:=表达式⑸表达式::=项{+项|-项}⑹项::=因子{*因子|/因子⑺因子::=ID|NUM|(表达式)2.2.2实验算法结构输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。例如:输入{inta,x,b;a:=9;x:=2*3;b:=a+x}输出success!语法分析程序的算法思想(1)主程序示意图如图2.1所示。编译原理课程设计——简单编译器–9–图2.1语法分析主程序示意图(2)递归下降分析程序示意图如图2.2所示。编译原理课程设计——简单编译器–10–图2.2递归下降分析程序示意图(3)语句串分析过程示意图如图2.3所示。编译原理课程设计——简单编译器–11–图2-3语句串分析示意图(4)statement语句分析程序流程如图2.4、2.5、2.6、2.7所示。编译原理课程设计——简单编译器–12–图2.4statement语句分析函数示意图图2.5expression表达式分析函数示意图编译原理课程设计——简单编译器–13–图2.6term分析函数示意图图2.7factor分析过程示意图2.3结果分析:输入后输出success!如图2.8所示:图2.8编译原理课程设计——简单编译器–14–输入后输出error如图2.9所示:图2.9编译原理课程设计——简单编译器–15–2.4总结:通过本次试验,了解了语法分析的运行过程,主程序大致流程为:“置初值”调用scaner函数读下一个单词符号调用IrParse结束。递归下降分析的大致流程为:“先判断是否有声明”不是则“出错处理”,若是则“调用scaner函数”调用语句串分析函数“判断是否为end”不是则“出错处理”,若是则调用scaner函数“判断syn=0&&kk=0是否成立”成立则说明分析成功打印出来。不成立则“出错处理”。编译原理课程设计——简单编译器–16–3语义分析程序3.1实验目的:通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。3.2实验要求:采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。3.3算法思想:3.3.1程序结构图(1)主程序示意图如图3.1所示。图3.1语法分析主程序示意图编译原理课程设计——简单编译器–17–(2)递归下降分析程序示意图如图3.2所示。(3)语句串分析过程示意图如图3.3所示。图3.2递归下降分析程序示意图编译原理课程设计——简单编译器–18–图3.3语句串分析示意图(4)statement语句分析程序流程如图3.4、3.5、3.6、3.7所示。编译原理课程设计——简单编译器–19–图3.4statement语句分析函数示意图图3.5expression表达式分析函数示意图图3.6term分析函数示意图编译原理课程设计——简单编译器–20–图2-7factor分析过程示意图3.3.2设置语义过程(1)emit(char*result,char*ag1,char*op,char*
本文标题:编译原理课设-(中版)
链接地址:https://www.777doc.com/doc-5719165 .html