1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言小型编译器编写 小型C语言编译器设计(4页)-原创力文档

c语言小型编译器编写 小型C语言编译器设计(4页)-原创力文档

时间:2022-11-20 04:44:15

相关推荐

c语言小型编译器编写 小型C语言编译器设计(4页)-原创力文档

小型C语言编译器设计

实验项目指导书

实验目的

1. 构造一小型C语言SimpleC的编译器软件,达到综合理解和运用编译原理课程所讲解的关键过程(词法分析、语法分析、静态语义分析、代码生成)及相关算法的目的。

2. 通过本实验理解和掌握一般编译程序的程序组织方法和测试方法。

实验环境

硬件环境:1台Pentium PC机/人

软件环境:Windows XP/2000/、Linux操作系统、Visual C++ 6.0/7.0 C/C++ IDE或Eclipse IDE for GCC

实验内容和要求

1. 语法分析以下小型C语言SimpleC并实现中间代码生成:

SimpleC为标准C的一个子集,其语法特征如下:

基本数据类型BasicType: int

变量声明: BasicType avariable;

函数定义: BasicType foo(BasicType param1, BasicType param2,...)

四则运算: +,-,/,*

赋值: =

返回: return, return BasicTypeValue

逻辑判断: if, else (含复合语句)

循环: while(含复合语句)

复合语句块标记: { }

在由词法分析程序分析SimpleC产生的token文件、符号表文件的基础上,完善语法和词法分析,产生相应的中间代码-四元式序列。

2. 编译程序组织的参考结构:

本编译程序组织的参考结构,如图1-1所示。

图1-1本编译程序组织的参考结构

在图1-1中,整个编译程序结构以语法分析组件为中心,在语法分析组件对句子结构生成或归约的控制下,其调用词法分析组件从输入的SimpleC源程序字符流中识别单词,完成语法树的逐步构造,其间词法分析程序、语法分析程序将对符号表进行操纵。在语法树构造完成后,调用语义分析对语法树进行静态语义分析,当通过静态语义分析(即表明源程序无静态语义错误)后,调用代码生成组件完成中间代码(四元式)的生成。出错检查和处理程序服务于词法分析、语法分析和代码生成组件。

3. SimpleC的参考EBNF文法

SimpleC的参考EBNF文法如下:

->

-> (void|int)main

-> (|void)

-> ’(’’)’

-> {,|}

-> ’{’’}’

-> int={,=}

-> {,}

-> int

-> {}

-> ||’}’|

;|;|;|

;|;|

-> =

-> if’(’’)’|

else’(’’)’

-> while

-> scanf’(’’)’

-> printf’(’’)’

-> return ’(’’)’

-> (|void)

->{+|-}{}

-> {}

-> |’(’’)’||

-> {|}

-> a|b|………..|z

-> 0|

-> 1|2|3|4|5|6|7|8|9

-> ”{|}”

-> +|-

-> *|/

-> |>=|!=|= =

4. 四元式的参考操作码

SimpleC编译器后端所产生的四元式的参考操作代码及其解释如下:

操作码

Op1

Op2

Result

+

X

Y

X和Y相加

-

X

Y

X和Y相减

*

X

Y

X和Y相乘

/

X

Y

X和Y相除

=

Y

Y 赋值

<

X

Y

X小于Y

>

X

Y

X大于Y

!=

X

Y

X不等于Y

<=

X

Y

X小于等于Y

>=

X

Y

X大于等于Y

==

X

Y

X等于Y

J

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。