- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课程设计报告 词法分析器 语法分析器 Lex词法分析器 学生姓名: 学号: 教 师 姓 名: 提交报告时间:2010年6月27日 课程设计目标 编写词法分析器scanner和语法分析器parser 能实现对测试程序进行词法扫描和语法分析,并能给出错误提示。 分析与设计 实现方法:实现算法:递归下降语法分析 编程语言:C++ 系统总图, 扫描器由scanner.cpp文件实现,用getToken()函数从测试代码中获取Token,通过printToken()函数实现将Token输出。 分析器由parser.cpp文件实现,通过parse()函数开始进行递归下降语法分析,语法分析的输入是scanner的输出Token,将获得的语法树tree通过printTree()将语法树输出。 扫描器: 各单词的转换图: 单词转换表: letter digit = ! / * other START INID INNUM LT MT ASSIGN NOT_EQ OVER TIMES OVER INCOMMENT DONE TIMES DONE INID INID DONE INNUM INNUM DONE ASSIGN EQ DONE LT LT_EQ DONE MT MT_EQ DONE LT_EQ DONE MT_EQ DONE NOT_EQ DONE 符号表: Reserved Words:IF、ELSE、INT、RETURN、VOID、WHILE Symbols:+、-、*、/、、=、、=、==、!=、=、;、,、(、)、[、]、{、}、/*、*/ Other:number、identifier 分析器:由于使用的是递归下降的编译方法,所以没有分析表、Yacc源文件和输出文件。 代码设计说明 程序结构图, 代码包含了maim.cpp、scanner.cpp、parser.cpp、util.cpp、global.h、util.h、scan.h、parse.h和util.h。 文件和函数的设计说明: Global.h用于对TokenType(Token类型)、NodeKind(节点类型)、StmtKind(语句类型)、ExpKind、ExpType、TreeNode(语法树节点)等进行枚举定义。 Scanner.cpp用于对测试程序的代码进行词法分析,通过getToken()函数获取token,通过util.cpp中printToken()函数将从测试代码中获取的token输出。 Parser.cpp用于对测试程序代码经scanner词法分析输出的token进行语法分析,通过parse()函数开始语法分析,通过util.cpp中printTree()函数将分析得到的语法树输出。采用的是递归下降算法实现parser。 具体的parser函数: static TreeNode * declaration_list(void); static TreeNode * declaration(void); static TreeNode * var_declaration(void); static TreeNode * fun_declaration(void); static TreeNode * params(void); static TreeNode * param_list(void); static TreeNode * compound_stmt(void); static TreeNode * param(void); static TreeNode * local_declarations(void); static TreeNode * statement_list(void); static treeNode * statement(void); static TreeNode * expression_stmt(void); static TreeNode * expression(void); static TreeNode * selection_stmt(void); static TreeNode * iteration_stmt(void); static TreeNode * return_stmt(void); static
您可能关注的文档
- 城市轨道交通课程设计-110kV主变电所设计.doc
- 单片机原理及应用(1)课程设计报告-基于51单片机的秒表计时系统.doc
- 管理信息系统课程设计说明书--学生选修课管理信息系统.doc
- 计算机网络课程设计--DNS中继服务器实验报告.docx
- 计算机网络课程设计报告--简单Web服务器设计与实现.doc
- 计算机网络课程设计--简单web服务器的设计与实现.doc
- 节电灯课程设计.doc
- 课程设计--18mm斜凹槽拨叉设计.doc
- 课程设计--900吨锅炉脱硫设计.doc
- 课程设计--AD590的应用.doc
- 编译原理课程设计报告任务书--DO-WHILE循环语句的翻译程序设计(递归下降法,输出四元式).docx
- 编译原理课程设计报告--算符优先分析表生成模拟.doc
- 编译原理课程设计报告--中间代码生成器设计-逆波兰式的生成.doc
- 编译原理课程设计报告--一个简单的编译器.doc
- 操作系统课程设计__设备管理实现_源代码.doc
- 操作系统课程设计--Nachos设计.doc
- 操作系统课程设计--程序实现页面置换算法设计(吃水果问题).doc
- 编译原理课程设计--利用词法自动生成实现词法扫描器.doc
- 操作系统课程设计--模拟请求页式管理.doc
- 操作系统课程设计--内核调试环境(Linux).pdf
文档评论(0)