编译原理课程设计C-语言编译器
2
———————————————————————————————— 作者:
———————————————————————————————— 日期:
个人收集 仅供参考学习 勿做商业用途
编译原理课程设计报告
课题名称: C-语言编译器设计
提交文档学生姓名: 李杰
提交文档学生学号: 0743041240
同组 成 员 名 单: 无
指导 教 师 姓 名: 金军
指导教师评阅成绩:
指导教师评阅意见:
.
.
提交报告时间: 2021年 6 月 10日
3
个人收集 仅供参考学习 勿做商业用途
课程设计目标
实验建立C-编译器。只含有scanner和parser局部。
分析与设计
〔1〕实现方法:
编程语言为C语言。
编程方法:scanner局部根据DFA图用switch-case构造实现状态转换;parser局部用递归下降分析方法实现。
〔2〕扫描器:
C-惯用的词法
1、语言的关键字:else if int return void while
2、专用符号:+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */
3、其他标记是ID和NUM,通过以下正那么表达式定义:
ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9
4、空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。
5. 注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套
各单词的状态转换图〔DFA图如下〕词法构造见文件""中。
〔3〕分析器:分析树构造见文件""中。
C-的BNF语法如下:
4
个人收集 仅供参考学习 勿做商业用途
5
个人收集 仅供参考学习 勿做商业用途
〔4〕代码设计说明:
程序构造:语法分析函数parse通过调用词法分析函数getToken实现语法分析。
文件和函数的设计说明:printToken和printTree,以及分析树节点初始化相关的函数newStmtNode,newExpNode(Expkind)和copyString; ,主要函数为getToken; ,函数为与文法规那么对应的函数。
关键数据构造
程序代码实现
:
//实验
编译原理课程设计C语言编译器 来自淘豆网m.daumloan.com转载请标明出处.