下载此文档

编译原理课程设计 C语言编译器的实现.doc


文档分类:IT计算机 | 页数:约33页 举报非法文档有奖
1/33
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/33 下载此文档
文档列表 文档介绍
编译原理课程设计____C语言编译器的实现南华大学
编译原理课程设计名:编译代生成器设计
专业计算机科学与技术
学生姓名熊浩斌
班级计算机01班
学号
指导老师陈星
实验地点 8栋 2-209
完成日期:
一、课程设计的目的
编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的PASCAL语言(EL语言)的编译程序,提高学生设计程序的能力,加深对编译理论知识的理解与应用。
二、课程设计的要求
明确课程设计任务,复****编译理论知识,查阅复印相关的编译资料。
按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正确。
写出完整的算法框架。
编写完整的编译程序。
三、课程设计的内容
课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF语句、While语句以及do…while语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。
四、总体设计方案及详细设计
总体设计方案:

主程序
词法分析程序
语法分析程序
中间代码生成程序
2.
各种单词符号对应的种别码
单词符号
种别码
单词符号
种别码
bgin
1
:
17
If
2
:=
18
Then
3
<
20
wile
4
<>
21
do
5
<=
22
end
6
>
23
lettet(letter|digit)*
10
>=
24
dight dight*
11
=
25
+
13
;
26

14
(
27
*
15
)
28
/
16
#
0
详细设计:

(1)一共三个选项:
①choice 1--------cifafenxi
②choice 2--------yufafenxi
③choice 3--------zhongjiandaima
(2)界面演示

图一



图二


图三


置初值
调用扫描子程序
输出单词二元组
输入串结束
结束


(1)流程图设计
(2)具体功能的具体设计
1、cifafenxi( )
首先设置prog[n]来接收输入的语句,以‘#’来结束;
调用扫描子程序 scaner1( ),每一次得到一个类型码;
用switch判别相应输出;
直到syn1=0为止。
2、扫描子程序scaner1( )-----------------扫描输入的语句
首先设置3个变量:
①token1用来存放构成单词符号的字符串;
②sum1用来存放整型单词;
③syn1用来存放单词符号的类型码。
有关scaner1()中关键点解析:

while((ch==' ')||(ch=='\n')) ch=prog[p++]; ;忽略空格

if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
{ while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9')))
{ token[m++]=ch;
ch=prog[p++];
} ;判别标识符

for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{ syn=n+1;
break;
} ;标识符是否是关键字

if((ch>='0')&&(ch<='9'))
{ while((ch>='0')&&(ch<='9'))
{ sum=sum*10+ch-'0';
ch=prog[p++];
} }
;判别整数
(3) 词法分析的运行结果
输入
begin x:=1; y:=1+2;end #
输出

(1) 具体功能

编译原理课程设计 C语言编译器的实现 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数33
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xiang1982071
  • 文件大小310 KB
  • 时间2018-02-22