优秀论文 审核通过 未经允许 切勿外传
编译原理课程设计
题 目 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、单词符号及种别表示
单词符号 main int float double char if else do while l(l|d)* dd* 种别编码 1 2 3 4 5 6 7 8 9 10 20 21 22 23 24 25 26 27 28 29 30 31 = + - * ( ) { } , ;
> >= < <= == != ‘\\0’ ERROR 32 33 34 35 36 37 1000 -1
3、语法结构定义如下: <程序> ::= main()<语句块> <语句块> ::= ‘{‘<语句串>’}’ <语句串>::=<语句>{;<语句>};
<语句>::=<赋值语句>|<条件语句>|<循环语句> <赋值语句>::=ID=<表达式> <条件语句>::=if<条件><语句块> <循环语句>::=do <语句块>while <条件> <条件>::=<表达式><关系运算符><表达式> <表达式> ::= <项>{ +<项>|-<项>} <项> ::= <因子>{*<因子>|<因子>} <因子> ::=ID|num|(<表达式>) <关系运算符> ::= <|<=|>|>=|==|!