编译原理课程设计-精选.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计-精选.ppt

大吉大利 大吉大利 大吉大利 编译原理课程设计 翟玉庆、周晓宇 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 : NUMBER {$$=$1;} | expr + expr {$$ = $1 + $3; } | expr - expr {$$ = $1 - $3; } | expr * expr {$$ = $1 * $3; } | expr / expr {$$ = $1 / $3; } %% 8、Yacc * 用户子例程段 #include stdio.h? extern char yytext[]; extern int column;? yyerror

文档评论(0)

liuxiaoyu99 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档