课程设计报告示例.doc_第1页
课程设计报告示例.doc_第2页
课程设计报告示例.doc_第3页
课程设计报告示例.doc_第4页
课程设计报告示例.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 课程设计报告示例 课程设计报告示例 编译原理编译原理 课程设计报告课程设计报告 姓姓 名 名 学学 号 号 班班 级 级 专专 业 业 指导教师 指导教师 时时 间 间 项目名称 项目名称 贵州大学贵州大学 计算机科学与信息学院计算机科学与信息学院 2 目目 录录 一 课程设计目的一 课程设计目的 2 二 课程设计题目描述和要求二 课程设计题目描述和要求 2 2 1 选定文法的描述 选定文法的描述 2 2 2 课程设计要求描述 课程设计要求描述 2 2 3 实现的功能描述 实现的功能描述 2 2 4 分析器的使用描述 分析器的使用描述 3 3 三 课程设计实现描述三 课程设计实现描述 4 4 1 实现平台 实现平台 4 4 2 课程设计基本思路描述 课程设计基本思路描述 4 4 3 LR 分析器基本原理描述分析器基本原理描述 5 5 4 代码描述 代码描述 5 5 5 演示分析 演示分析 11 11 四 课程设计总结四 课程设计总结 11 11 五 参考书目五 参考书目 11 11 3 一 课程设计目的一 课程设计目的 加深对文法分析器的知识的掌握 掌握计算机语言的语法分析的过程 以及掌握计算机语言的语法分析程序设计与文法应用的实现方法 能够熟练 运用一种分析方法 自上而下或自下而上的方法分析一个给定的文法 我使 用的是自下而上的分析方法 并且能够正确判断出文法是否属于LR 0 文法 通过思考以及动手制作分析器的过程来锻炼自己的编程能力和逻辑思维能力 体会计算机编译器的奥妙之处 二 课程设计题目描述和要求二 课程设计题目描述和要求 1 1 选定的文法的描述选定的文法的描述 E E T E T T T F T F F E F d 2 2 课程设计的要求描述 课程设计的要求描述 1 选定某一文法 选定一种分析方法 自上而下 自下而上 2 允许用户输入语句并对该语句进行相应的语法分析 3 要求跟踪分析表和分析栈的状态 4 要求提供单步运行 让用户跟踪分析器工作的每一个步骤 3 3 实现的功能描述 实现的功能描述 1 选定一种文法 选定一种分析方法 自下而上 2 允许用户手动输入语句并对该语句进行相应的语法分析 3 跟踪了分析表和分析栈的每一个运行状态 4 提供单步运行 在分析输入的语句时能够通过红色标记跟踪分析表 单 步显示分析栈中的每一个步骤 4 4 分析器的使用描述分析器的使用描述 对于一个给定的文法 其分析表也就固定 所以在此分析器中可直接点击分 4 析表按钮 得到结果如右下角的分析表显示所示 在运行分析器的过程中 输 入的是相对应于文法所能够产生的句子进行分析 如果是不符合文法的语句 那么就会提示错误信息 首先在输入句子所对应的 TextBox 下输入所要分析的 句子 单击分析表 在分析过程中可以参看分析表检查分析是否正确 之后单 击开始分析 在分析栈中就会出现第一行 状态 0 符号栈中有 输入 中出现你所输入的句子 即输入串 单击单步跟踪按钮 在分析栈中显示第一 步分析的结果 在分析表中也会通过红色标记跟踪分析的每一个步骤 分析结 束时 如果所输入的句子是属于该文法的 那么弹出对话框显示 分析完毕 该语句属于该文法 若不属于该文法 那么弹出对话框显示 分析完毕 该语句不属于该文法 三 课程设计实现描述三 课程设计实现描述 1 1 实现平台 实现平台 Visual studio 2005 2 2 课程设计的基本思路描述课程设计的基本思路描述 程序运行的最后界面如下所示 5 设计该分析器的基本思路 选定一个文法选定一个文法 给出分析表给出分析表 输入分析句子输入分析句子 单单 步跟踪分析栈步跟踪分析栈 3 3 LRLR 分析器的基本原理描述分析器的基本原理描述 LR 分析器的核心部分是一张分析表 这张分析表包括两个部分 一是 动 作 ACTION 表 另一是 状态转换 GOTO 表 他们都是二维数组 ACTION s a 规定了当状态 s 面临输入符号 a 时应采取什么动作 GOTO s X 规定了状态 s 面对文法符号 X 终结符或非终结符 时下一状态是什么 显然 GOTO s X 定义了一个以文法符号为字母表的 DFA 每一项 ACTION s a 所规定的动作不外是下述四种可能之一 1 移进 把 s a 的下一个转态 s GOTO s X 和输入符号 a 推进 栈 下一输入符号变成现行输入符号 2 规约 指用某一产生式 A 进行规约 假若 的长度为 r 规约的 动作是 A 去除栈顶的 r 个项 使状态 Sm r 变成栈顶状态 然后把 Sm r A 的下一状态 s GOTO Sm r A 和文法符号 A 推进栈 规约动作不改变 现行输入符号 执行规约动作意味着 Xm r 1 Xm 已呈现于栈顶而且是 一个相对于 A 的句柄 3 接受 宣布分析成功 停止分析器的工作 4 报错 发现源程序含有错误 调用出错处理程序 4 4 实验中的代码描述 实验中的代码描述 a 分析表代码 text01 Text s5 6 text04 Text s4 text0E Text 1 text0F Text 3 text0T Text 2 状态0 的对应各种非终结符的动作和转移 text12 Text s6 text16 Text acc 状态1 的对应各种非终结符的动作和转移 text22 Text r2 text23 Text s7 text25 Text r2 text26 Text r2 状态2 的对应各种非终结符的动作和转移 text32 Text r4 text33 Text r4 text35 Text r4 text36 Text r4 状态3 的对应各种非终结符的动作和转移 text41 Text s5 text44 Text s4 text4E Text 8 text4T Text 2 text4F Text 3 状态4 的对应各种非终结符的动作和转移 text52 Text r6 text53 Text r6 text56 Text r6 text55 Text r6 状态5 的对应各种非终结符的动作和转移 text61 Text s5 text64 Text s4 text6T Text 9 text6F Text 3 状态6 的对应各种非终结符的动作和转移 text71 Text s5 text74 Text s4 text7F Text 10 状态7 的对应各种非终结符的动作和转移 text82 Text s6 text85 Text s11 状态8 的对应各种非终结符的动作和转移 text92 Text r1 text93 Text s7 text95 Text r1 7 text96 Text r1 状态9 的对应各种非终结符的动作和转移 text102 Text r3 text103 Text r3 text105 Text r3 text106 Text r3 状态A 的对应各种非终结符的动作和转移 text112 Text r5 text113 Text r5 text115 Text r5 text116 Text r5 状态B 的对应各种非终结符的动作和转移 b 开始分析按钮代码 初始化代码 listzhan Items Clear 状态栈的初始化 清空 listin Items Clear 输入栈的初始化 清空 listfuhao Items Clear 符号栈的初始化 清空 tempfuhao tempfuhao 符号栈的临时串 功能 程序对它做修改 再传入符号栈 tempzhan 0 tempzhan 状态栈的临时串 功能 程序对它作修改 再传入状态栈 shurust textshuru Text shurust 输入栈的临时串 功能 程序对它做修改 再传入输入栈 if textshuru Text DialogResult r1 MessageBox Show 未输入语句 错误 MessageBoxButtons OK MessageBoxIcon Error 判断输入串是否为空 如果为空 弹出提示窗口 else for int i 0 i ccsBox Items Count i jiedian i 0 ccsBox Items i ToString jiedian i 2 jiedian i 1 jiedian i 0 0 ToString for int j 2 j jiedian i 0 Length j jiedian i 2 jiedian i 0 j 读入各个产生式 并将每个产生式的开始符号传入 jiedian I 1 将产生式的 右半部分传入 jiedian I 2 listzhan Items Add tempzhan listin Items Add shurust listfuhao Items Add tempfuhao 将tempzhan压入状态栈 shurust压入输入栈 tempfuhao压入符号栈 c 单步跟踪 按钮代码 分布处理代码 8 text01 ForeColor Color Black text04 ForeColor Color Black text0E ForeColor Color Black 略去部分代码 将分析表中文本的字体颜色初始化为黑色 if textshuru Text DialogResult r1 MessageBox Show 未输入语句 错误 MessageBoxButtons OK MessageBoxIcon Error else string temp1 string temp2 string cmp1 cmp2 cmp1 tempzhan cmp2 tempfuhao int llll 1 llll 局部变量 用来标示是否已经执行过一次 1为未执行 0为已执行 if tempzhan tempzhan Length 1 0 tempfuhao d for int i 1 i shurust Length i temp1 shurust i ToString shurust temp1 llll 0 text01 ForeColor Color Red 将0状态下遇到d的动作文本 字体颜色变成红色显示 else if shurust shurucount tempzhan 4 tempfuhao for int i 1 i shurust Length i 9 temp1 shurust i ToString shurust temp1 llll 0 text04 ForeColor Color Red 将0状态下遇到 的动作文本 字体颜色变成红色显示 if tempzhan tempzhan Length 1 1 tempfuhao for int i 1 i shurust Length i temp1 shurust i ToString shurust temp1 llll 0 text12 ForeColor Color Red else if shurust shurucount llll 0 text16 ForeColor Color Red DialogResult r1 MessageBox Show 该语句属于该文法 分析完毕 MessageBoxButtons OK MessageBoxIcon Information if tempzhan tempzhan Length 1 2 tempfuhao for int i 1 i shurust Length i temp1 shurust i ToString shurust temp1 llll 0 text23 ForeColor Color Red else if shurust shurucount shurust shurucount shurust shurucount 响应规约时的 各个栈 变化函数 temp2 for int i 0 i tempfuhao Length 1 i temp2 tempfuhao i tempfuhao temp2 tempfuhao jiedian 1 1 temp2 for int i 0 i tempzhan Length 1 i temp2 tempzhan i tempzhan temp2 if tempzhan tempzhan Length 1 0 tempzhan 1 text0E ForeColor Color Red else if tempzhan tempzhan Length 1 4 tempzhan 8 text4E ForeColor Color Red llll 0 11 if shurust shurucount text22 ForeColor Color Red if shurust shurucount text25 ForeColor Color Red if shurust shurucount text26 ForeColor Color Red 略去部分代码 if cmp2 tempfuhao else listfuhao Items Add tempfuhao listin Items Add shurust listzhan Items Add temp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论