- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
毕业论文_编译原理课程设计报告c_语言词法与语法分析器的实现.doc
编译原理课程设计报告
课题名称: 编译原理课程设计 C-语言词法与语法分析器的实现 提交文档学生姓名: 提交文档学生学号: 同组 成 员 名 单: 指导 教 师 姓 名: 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间: 年 月 日
C-词法与语法分析器的实现
1.课程设计目标
(1)
C-语言拥有一个完整语言的基本属性,通过编写C-语言的词法分析和语法分析,对于理解编译原理的相关理论和知识有很大的作用。通过编写C-语言词法和语法分析程序,能够对编译原理的相关知识:正则表达式、有限自动机、语法分析等有一个比较清晰的了解和掌握。
(2)C-语言的词法说明
① 语言的关键字:
else if int return void while
所有的关键字都是保留字,并且必须是小写。
②专用符号:
+ - * / ! ; , [ ] /* */
③其他标记是ID和NUM,通过下列正则表达式定义:
ID letter letter*
NUM digit digit*
letter a|..|z|A|..|Z
digit 0|..|9 注:ID表示标识符,NUM表示数字,letter表示一个字母,digit表示一个数字。
小写和大写字母是有区别的。
④ 空格由空白、换行符和制表符组成。空格通常被忽略。
⑤ 注释用通常的c语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置 即注释不能放在标记内 上,且可以超过一行。注释不能嵌套。
(3)程序设计目标
能够对一个程序正确的进行词法及语法分析。
2.分析与设计
(1)设计思想
词法分析
词法分析的实现主要利用有穷自动机理论。有穷自动机可用作描述在输入串中识别模式的过程,因此也能用作构造扫描程序。
语法分析
语法分析采用递归下降分析。递归下降法是语法分析中最易懂的一种方法。它的主要原理是,对每个非终结符按其产生式结构构造相应语法分析子程序,其中终结符产生匹配命令,而非终结符则产生过程调用命令。因为文法递归相应子程序也递归,所以称这种方法为递归子程序下降法或递归下降法。其中子程序的结构与产生式结构几乎是一致的。
(2)程序流程图
程序主流程图: 词法分析: 语法分析:
词法分析子流程图:
语法分析子流程图:
3.程序代码实现
整个词法以及语法的程序设计在一个工程里面,一共包含了8个文件,分别为main.cpp、.cpp、scan.cpp、util.cpp、scan.h、util.h、 globals.h、parse.h,其中scan.cpp和scan.h为词法分析程序。
以下仅列出各个文件中的核心代码:
Main.cpp
#include globals.h
#define NO_PARSE FALSE
#include util.h
#if NO_PARSE
#include scan.h
#else
#include parse.h
#endif
int lineno 0;
FILE * source;
FILE * listing;
FILE * code;
int EchoSource TRUE;
int TraceScan TRUE;
int TraceParse TRUE;
int Error FALSE;
int main int argc,char * argv[] TreeNode * syntaxTree;
char pgm[120];
scanf %s,pgm ;
source fopen pgm,r ;
if source NULL fprintf stderr,File %s not found\n,pgm ;
exit 1 ; listing stdout;
fprintf listing,\nC COMPILATION: %s\n,pgm ;
#if NO_PARSE
while getToken ! ENDFILE ;
#else
syntaxTree parse ;
if TraceParse fprintf listing,\nSyntaxtree:\n ;
printTree syntaxTree ; #endif
fclose source ;
return 0; Parse.cpp
#include globals.h
#include util.h
#include scan.h
#include parse.h
static TokenType token; /* holds current token */
/* function prototypes for recursive calls */
static T
您可能关注的文档
- 毕业论文_lg916四合一铲斗开启缸的设计.doc
- 毕业论文_mbr膜生物反应器设计.doc
- 毕业论文_mcs51单片机温度控制系统.doc
- 毕业论文_matlab软件与数学建模讲义.doc
- 毕业论文_mupo滚装码头工程施工组织设计方案.doc
- 毕业论文_nba赛程的分析与评价数学建模论文.doc
- 毕业论文_nedl工艺模块化净水设备刮渣机设计论文.doc
- 毕业论文_nfdl工艺模块化净水设备结构设计论文.doc
- 毕业论文_no对受镉胁迫下叶用莴苣光合速率的保护效应论文.doc
- 毕业论文_nutch爬虫系统分析.doc
- 中国普通硅酸盐水泥项目创业投资方案.docx
- 中国普通马桶盖项目创业投资方案.docx
- 中国普通刨花板项目创业投资方案.docx
- 中国七彩夹层玻璃项目创业投资方案.docx
- 四川省洪雅青衣江元明粉有限公司行业竞争力评级分析报告(2023版).pdf
- 苏教版高中化学选择性必修3有机化学基础精品课件 专题5 药物合成的重要原料——卤代烃、胺、酰胺 第一单元 卤代烃-微专题7 卤代烃的形成及其在有机合成中的“桥梁”作用.ppt
- 中国嵌入式衣柜项目创业投资方案.docx
- 中国平流式沉淀池项目创业投资方案.docx
- 中国七彩夹层玻璃市场竞争态势及投资规划建议报告项目创业投资方案.docx
- 中国嵌入式红酒柜项目创业投资方案.docx
文档评论(0)