毕业设计 c语言编译器,C语言编译器实现毕业设计.doc

C语言编译器实现毕业设计

编译原理课程设计

题 目 C语言编译器实现

计算机科学学院计算机科学与技术专业10 级 计本 班

学 号:

姓 名:

指导教师:

完成时间: 2013 年 6 月

目 录

一、 原理1

1、简介1

2、单词符号及种别表示1

3、语法结构定义如下:2

二、运行环境3

三、 算法设计思想3

1、词法分析主要算法3

2、语法分析主要算法3

3、语义分析主要算法4

四、 程序流程图5

五、运行测试结果8

六、心得体会9

七、源代码9

C语言编译器实现

一、 原理

1、简介

编译程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。

2、单词符号及种别表示

单词符号种别编码main1int 2float3double4char5if 6else 7do8while9l(l|d)*10dd* 20=21+22- 23* 24/ 25(26)27{28}29,30;31>32>=33<34<=35==36!=37‘\0’1000ERROR-1

3、语法结构定义如下:

::= ::= ‘{‘’}’

::={;};

::=||

::=ID=

::=if

::=do while

::=

::= ::= ::=)

::= Windows 系统 Visual C++ 6.0

三、 算法设计思想

1、词法分析主要算法

这部分对源文件进行分析,允许/* */注释。从源文件依次读取字符,对字符进行分析,组成字符串、数字、关系符等固定含义的token符,并把它们添加到token链中,如果遇到非法字符报错并退出程序。

2、语法分析主要算法

这部分对Token链进行分析,利用自底向上的分析方法,构建SLR(1)分析表的过程是手工完成的。语法分析的同时构建语法树,移进时创建叶子,规约时创建节点。

3、语义分析主要算法

这部分对语法树从左到右进行遍历,节点记录了规约式的编号,遍历到节点时就进行相应处理。语义分析主要检查变量、函数是否被定义或重定义,同时产生四元式。

函数一览表

void scanner();

void lrparser();

void staBlock(int *nChain);

void staString(int *nChain);

void sta(int *nChain);

void fuzhi();

void tiaojian(int *nChain);

void xunhuan();

char* E();

char* T();

char* F();

char *newTemp();

void backpatch(int p,int t);

int merge(int p1,int p2);

void emit(char *res,char *num1,char *op,char *num2);

四元组结构体定义:

struct{

char result[10];

char arg1[10];

char opera[10];

char arg2[10];

}fourCom[20];

四、 程序流程图

图1 主函数流程图

图2 递归下降分析分析程序流程图

图3 语句块分析流程图

图4 语句串分析流程图

是否

图5 语句分析流程图

五、运行测试结果

正确程序结果

错误程序结果:报错!(1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值