- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课程设计
重要提示 8、SeuLex算法 对正规表达式添加”.”操作符号:如果*、)、字符后面是字符或(则在此符号后加. 并以#结束 重要提示 9、SeuLex算法 DFA最小化:初始状态DFA分为非终态结点和终态结点并且终态相同的集合。在程序编写过程中发现如果仅仅将结点分为终态和非终态两个集合,那么最后终态就会出现冲突。 重要提示 10、SeuYacc算法 闭包算法:项目中每一个产生式只需做一遍扩展即可,如果每次扫描项目中已有的所有产生式并做扩展,会带来很多冗余的操作,影响了效率,可在产生式中设计了一个标志位,保证同一个项目中每个产生式只做一次扩展。。 编译原理课程设计 翟玉庆、周晓宇 yqzhai@seu.edu.cn zhouxy@seu.edu.cn 1、课程主要目的 加深对编译原理及编译程序构造过程的理解 增强程序设计能力 学会编写工具软件 2、课程主要实施方式 分组完成项目 每组三人 分阶段提交项目结果 小组交流 所用程序设计语言不限 3、项目基本内容 通过自己所设计的工具生成C Subset或Cminus的词法和语法分析器 通过你所设计的词法分析程序工具SeuLex生成C Subset或Cminus的词法分析器 和语法分析程序生成工具SeuYacc生成C Subset或Cminus的语法分析器 3、主要项目 SeuLex Lex输入文件的解析 正规表达式的解析 一个正规表达式到NFA的转换算法实现 多个NFA的合并 NFA的确定化和最小化算法实现 返回状态与返回内容的对应 SeuLex应用 3、主要项目 SeuYacc Yacc输入文件的解析 上下文无关文法到对应LR(1)文法的下推自动机的构造 LR(1)文法的下推自动机到相应分析表的构造 LR(1)总控程序的构造(查表程序) LR(1)到LALR(1)的映射 符号表的构建与相应管理程序 语义动作程序的加入 SeuYacc的应用 4、主要进程安排 第12周周五交SeuLex 第14周周五交SeuYacc 第14、15周末小组交流 5、提交文档要求 项目报告(要求打印) 项目主要内容和分工协作情况 项目涉及的主要数据结构定义 项目涉及的主要算法流程描述 项目实施过程中存在的主要问题及其解决方法 项目实施过程中的主要收获 包含项目讲解PPT文件及可演示的项目程序和源程序的光盘(每个班一张,每个小组一个目录) 6、成绩评定方式 完成全部要求,文档规范,并可演示—优秀 完成基本要求,文档规范,并可演示—良好 强化班同学至少达到良好水平 结构 定义段 %% 规则段 %% 用户子例程段 7、Lex 定义段 变量 常量 正规表达式 7、Lex 定义段 起始于%{符号,终止于%}符号,其间可以是包括include语句、声明语句在内的C语句。 %{ #include stdio.h #include y.tab.h“ #define LT 1 extern int lineno; %} /*正规表达式*/ delim [\t\n] ws {delim}+ letter [A-Za-z] digit [0-9] id {letter}({letter}|{digit})* 7、Lex 规则段 起始于“%%”符号,终止于“%%”符号,其间则是词法规则。 词法规则由模式和动作两部分组成。模式部分可以由任意的正则表达式组成,动作部分是由C语言语句组成,这些语句用来对所匹配的模式进行相应处理。 7、Lex 用户子例程段 可以包含用C语言编写的子程序,而这些子程序可以用在前面的动作中,这样就可以达到简化编程的目的 install_id() { …. } 7、Lex 结构 定义 %% 规则 %% 辅助子例程 8、Yacc 定义段 %{ #define YYSTYPE double %} %token NUMBER %left + - %left * / 注:%token NUMBER表明了NUMBER是一个单词符号,%left则表明了运算符号的左结合性,并且*和/和优先级比+和-的优先级高。 8、Yacc 规则段 %% expr :
您可能关注的文档
最近下载
- 600519 贵州茅台:2013年年度报告.pdf
- QSYTZ0523-2017油气管道定点测厚技术规范.pdf
- 第一单元 第一、二、三课 木材基础知识、度量和画线、锯切课件 2022-2023学年云南教育出版社劳技八年级下册.pptx VIP
- 房屋损坏赔偿协议书7篇.docx
- 2024年预见未来:中国元医院建设发展调研报告-瑞金医院&中国信通院.pdf VIP
- 区人社局乡村振兴工作总结.docx VIP
- HG_T20510-2014 仪表供气设计规范(完整版).doc
- 2025中级社会工作综合能力考试要点速记.pdf
- KDF电化学金属滤料.docx
- 泰坦之旅修改MOD教程和MOD文件解析.doc
文档评论(0)