当前位置:首页 > 编译原理课设(中版)
编译原理课程设计
简单编译器
学 院(系):电子信息与电气工程学部 学 生 姓 名:李梦珂 学 号:201181216 班 级:电计1101 同 组 人 :宫丽迪 电计1101 201181306
陈笛 电计1101 201181326
大连理工大学
Dalian University of Technology
1
编译原理课程设计——简单编译器
目 录
1 词法分析 ............................................................... 2
1.1 实验目的 ......................................................... 2 1.2 实验要求 ......................................................... 2
1.2.1待分析的简单的词法 .......................................... 2 1.2.2 各种单词符号对应的种别码: ................................. 2 1.2.3 词法分析程序的功能: ....................................... 3 1.3 词法分析程序的算法思想: ......................................... 3
1.3.1 主程序示意图: ............................................. 3 1.3.2 扫描子程序的算法思想: ..................................... 4 1.3.3 词法分析程序的C语言程序源代码: ........................... 6 1.3.4 结果分析: ................................................. 6 1.3.5 总结: ..................................................... 7
2 语法分析 ............................................................... 8
2.1 实验目的 ......................................................... 8 2.2实验要求 .......................................................... 8
2.2.1 待分析的简单语言的语法 ..................................... 8 2.2.2 实验算法结构 ............................................... 8 语法分析程序的算法思想 ............................................ 8 2.3 结果分析: ...................................................... 13 2.4 总结: .......................................................... 15 3 语义分析程序 .......................................................... 16
3.1 实验目的: ...................................................... 16 3.2 实验要求: ...................................................... 16 3.3 算法思想: ...................................................... 16
3.3.1 程序结构图 ................................................ 16 3.3.2 设置语义过程 .............................................. 20 3.3.3 函数lrparser 在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。 ... 21 3.3.4 简单赋值语句的翻译文法 .................................... 21 3.4 结果分析 ........................................................ 22 3.5 总结: .......................................................... 25
–1–
编译原理课程设计——简单编译器
1 词法分析(李梦珂 201181216 负责)
1.1 实验目的
设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
1.2 实验要求
设计、编制并调试一个词法分析程序,三人一组。 1.2.1待分析的简单的词法
(1)关键字:
int if then else while do read write 所有的关键字都是小写。 (2)运算符和界符
: := = + - ++ -- * / < <= != > >= = ; ( ) { } # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit*
(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
1.2.2 各种单词符号对应的种别码:
表1.1 各种单词符号对应的种别码
单词符号 int If Then else while do read write 种别码 1 2 3 4 5 6 7 8 单词符号 ++ -- := < != <= > >= 种别码 17 18 19 20 21 22 23 24 –2–
编译原理课程设计——简单编译器
lettet(letter|digit)* dight dight* = + - * / , } 10 11 12 13 14 15 16 33 36 == ; ( ) \\ ! : { 25 26 27 28 30 31 32 35
1.2.3 词法分析程序的功能:
输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;
token为存放的单词自身字符串; sum为整型常数。 例如:对源程序输入如下: {
Int x,y; X:=2*y; If(x>5)
Then x:=2*x+2/3; }#
后经词法分析输出如下序列:({ 35} (int 1)(x 10)(, 33)(y 10) (;26)(x 10)??
1.3 词法分析程序的算法思想:
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 1.3.1 主程序示意图:
主程序示意图如图1.1所示。其中初始包括以下两个方面: ⑴ 关键字表的初值。
–3–
共分享92篇相关文档