- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课程设计报告
课题名称: C- Minus词法分析和语法分析设计
提交文档学生姓名: X X X
提交文档学生学号: XXXXXXXXXX
同组 成 员 名 单: X X X
指导 教 师 姓 名: X X
指导教师评阅成绩: 指导教师评阅意见:
.
.
提交报告时间:2015 年6 月10 日
课程设计目标
实验建立C-编译器。只含有扫描程序(scanner)和语法分析(parser)部分。
分析与设计
C-编译器设计的整体框架,本实验实现扫描处理和语法分析程序(图中粗黑部。分)
打开源代码文件
打开源代码文件
source.txt
扫描处理
(词法分析)
记号
语法分析程序
语法树
语义分析程序
错误处理器
注释树
记号表
源代码优化程序
文字表
中间代码
代码生成器
目标代码
目标代码优化程序
目标代码
、扫描程序scanner部分2.1.1系统设计思想
设计思想:根据DFA 图用switch-case结构实现状态转换。惯用词法:
① 语言的关键字:else if int return void while
② 专用符号:+ - * / = = == != = ; , ( ) [ ] { } /*
*/
③ 其他标记是ID 和NUM,通过下列正则表达式定义: ID = letter letter*
NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9
大写和小写字母是有区别的
④ 空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM 关
键字。
⑤ 注释用通常的C 语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套
scanner的DFA
+ - * = = == != ; , ( ) [] { }
+ - * = = == != ; , ( ) [] { }
INASSIGN
White space
\t
\n
,,=,!
digit
=
NUM
[other]
digit
[other]
START
letter
DONE
letter
[other]
/
INID
ZHU
[other]
*
/
[other]
INCOMMENT
*
[other]
ZZHU
*
说明:当输入的字符使DFA 到达接受状态的时候,则可以确定一个单词了。初始状态设置为
START,当需要得到下一个token时,取得次token的第一个字符,并且按照DFA 与对此字符的类型分析,转换状态。重复此步骤,直D到ONE为止,输出token类型。当字符为“/”时,状态转换为SLAH再判断下一个字符,如果为“*”则继续转到INCOMMENT,最后以“*”时转到ENDCOMMENT状态,表明是注释,如果其他的则是字符停滞于当前字符并,且输出“/”。
程2 序流程图
源文件
源文件
读取源文件一
行输出
读取一个字符
否
是否到达终态
是
赋值token
输出token
各文件或函数的设计说明
扫描程序用到:scanner.h,scanner.cpp scanner.h:声明词法状态,词法分析
//DFA中的状态typedef enum
{
START = 1, INNUM, INID, INDBSYM, DONE
} DFAState;
//定义的Token的类型(31 种),分别对应于else、if、int、return、void、while、+、
-、*、/、、=、、=、==、!=、=、;、,、(、)、[、]、{、}、/*、*/、num、id、错误、结束
typedef enum
{
ELSE = 1,IF,INT,RETURN,VOID,WHILE, PLUS,MINUS,TIMES,OVER,LT,LEQ,GT,GEQ,EQ,NEQ,ASSIGN,SEMI,COMMA,LPAREN,RPAREN, LMBRACKET,RMBRACKET,LBBRACKET,RBBRACKET,LCOMMENT,RCOMMENT, NUM,ID,ERROR,ENDFILE
} TokenType;
//定义的Token结构体,包括类型、对应的串、所在代码的行号struct Token
{
TokenType tokenType; string tokenString; int lineNo;
};
//每种TokenType对应的串,如tokenTypeString[ELSE]==ELSE
const string tokenTypeString[32] = {OTHER, ELSE, IF, INT, RETURN, VOID,WHILE,PLUS,MINUS,TIMES,OVER,L
您可能关注的文档
- 电子产品营销与技术服务试卷及答案-B卷.docx
- 电子电工类模拟试卷(10).docx
- 电子工程师综合知识试题(含答案).docx
- 车间员工技术等级评定方案.docx
- 车间组长考核方案.docx
- 车库顶板行车道加固方案.docx
- 车库耐磨地坪漆施工方案.docx
- 车库租赁合同范本下载五篇.docx
- 车辆安全教育.docx
- 车辆出入管理系统方案.docx
- 人教版数学九年级上册《 二次函数》说课稿(共19张PPT).ppt
- 人教版八年级上册 12.2.2三角形全等的判定 “边角边”判定三角形全等 (共22张PPT).ppt
- 人教版初中数学2011课标版八年级上册第十二章12.2 三角形全等的判定 课件(共16张PPT).ppt
- 人教版九年级第十单元课题1浓硫酸1 (共18张PPT).ppt
- 人教版初中数学七年级上册 1.4 有理数的乘除法(共22张PPT).ppt
- 人教版八年级物理上册第1章 第2节运动的描述习题课件(共20张PPT).ppt
- 人教版九年级课题2酸和碱之间会发生什么反应(共21张PPT).ppt
- 人教版初中物理2011课标版 九年级 第十八章 电功率第三节 测量小灯泡的电功率(共25张PPT).pptx
- 人教版初中数学2011课标版九年级上册第二十四章24.1圆的有关性质(共17张PPT).ppt
- 人教版初中数学2011课标版九年级上册21.2解一元二次方程(共22张PPT).pptx
原创力文档


文档评论(0)