下载此文档

编译原理课程设计-C-词法扫描器及语法分析器实现.docx


文档分类:IT计算机 | 页数:约40页 举报非法文档有奖
1/40
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/40 下载此文档
文档列表 文档介绍
编译原理课程设计报告
课题名称: C- 词法扫描器及语法分析器实现
提交文档学生姓名:
提交文档学生学号:
同组成员名单: 无
指导教师姓名: 金军
指导教师评阅成绩:
指导教师评阅意见:
提交报告时间:2014年6月xx日
《编译原理课程设计报告》 xx xxxxxxxxx
指导老师:金军
目录
目录 2
1课程设计目标 3
2分析与设计 4
4
3程序代码实现 8

8
8
scan..c 10
.7
29

4测试结果
36
37.
给出标准测试程序的词法和语法分析结果: 37........
词法分析结果 .37
语法分析结果 40
.修改代码后的结果: .41
修改 41
.本课程设计我的独创工作 43
.总结 .43
《编译原理课程设计报告》 xx xxxxxxxxx
指导老师:金军
1课程设计目标
学生在学****编译原理》课程过程中,结合各章节的构造编译程序的基本理论,要求用 C或 C++语言描述及上机调试,实现一个C-Minus小编译程序(包括词法分析,语法分析等重要子程 序),使学生将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高学生软 件开发的能力。
要求:
(1)设计词法分析器
设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调 用的子程序。功能包括:
。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计 一个供词法分析调用的预处理子程序;

(种别码,属性值)。
(2)语法分析
要求用学****过的自底向上或自顶向下的分析方法等,实现对表达式、各种说明语句、控制语句 进行语法分析。若语法正确,则用语法制导翻译法进行语义翻译;生成并打印出语法树;若语 法错误,要求指出出错性质和出错位置(行号)。
《编译原理课程设计报告》 xx xxxxxxxxx
指导老师:金军
2分析与设计

本程序采用C++语言以面向对象的思想编写,程序分为两部分:词法分析(Scanner )和语法分 析(Parser )。
扫描程序执行词法分析,并将字符序列收集到token中,并将每一行的Token打印出来。
实现方法:
Scanner:手工实现
Parser:递归下降
系统总图:
程序流程:
在程序中,词法分析获取所有 Token ,并将获取的 Token存储在scanner 对象的
tokenString 中。然后Parser类的语法分析程序就根据tokenString 中的Token进行语法 分析,生成语法树,最后打印语法树。同时,这也是程序的流程。
《编译原理课程设计报告》 xx xxxxxxxxx
指导老师:金军
整体程序流程图
扫描器:
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
《编译原理课程设计报告》 xx xxxxxxxxx
指导老师:金军
4、空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NU或键字。
/* ... * / 围起来。注释可以放在任何空白出现的位置(即注释不
能放在标记内)上,且可以超过一行。注释不能嵌套。
DF照如下:
初始状态设置为START当需要得到下一个token时,取得此token的第一个字符,并且按照DFAW对 此字符的类型的分析,转换状态。重复此步骤,直到 DON的止,输出token类型。
参考课本中所给的TINY扫描程序的DFA C-的DFA^同之处在于注释以及(==,!=,< =, > =) 的处理:

(==,!=,< =, > =)
时并没有新建状态,而是在状态INASSIGN^分了 4种情况,通过一个变量分
别处理。
语法分析:
《编译原理课程设计报告》 xx xxxxxxxxx

编译原理课程设计-C-词法扫描器及语法分析器实现 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息