已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LL1 实验报告实验报告 1 设计原理设计原理 所谓 LL 1 分析法 就是指从左到右扫描输入串 源程序 同时采用最左推导 且 对每次直接推导只需向前看一个输入符号 便可确定当前所应当选择的规则 实现 LL 1 分析的程序又称为 LL 1 分析程序或 LL1 1 分析器 我们知道一个文法要能进行 LL 1 分析 那么这个文法应该满足 无二义性 无左 递归 无左公因子 当文法满足条件后 再分别构造文法每个非终结符的 FIRST 和 FOLLOW 集合 然后根据 FIRST 和 FOLLOW 集合构造 LL 1 分析表 最后利用分析表 根据 LL 1 语法分析构造一个分析器 LL 1 的语法分析程序包含了三个部分 总控程序 预测分析表函数 先进先出的语法分析栈 本程序也是采用了同样的方法进行语法分析 该程序是采用了 C 语言来编写 其逻辑结构图如下 LL 1 预测分析程序的总控程序在任何时候都是按 STACK 栈顶符号 X 和当前的输 入符号 a 做哪种过程的 对于任何 X a 总控程序每次都执行下述三种可能的动作之 一 若 X a 则宣布分析成功 停止分析过程 若 X a 则把 X 从 STACK 栈顶弹出 让 a 指向下一个输入符号 若 X 是一个非终结符 则查看预测分析表 M 若 M A a 中存放着关于 X 的 一个产生式 那么 首先把 X 弹出 STACK 栈顶 然后 把产生式的右部符号串按反序一 一弹出 STACK 栈 若右部符号为 则不推什么东西进 STACK 栈 若 M A a 中存放 着 出错标志 则调用出错诊断程序 ERROR 事实上 LL 1 的分析是根据文法构造的 它反映了相应文法所定义的语言的固定 特征 因此在 LL 1 分析器中 实际上是以 LL 1 分析表代替相应方法来进行分析的 2 分析分析 LL 1 分析表是一个二维表 它的表列符号是当前符号 包括文法所有的终结 和自定义 的句子结束符号 它的表行符号是可能在文法符号栈 SYN 中出现的所有符号 包括所有的非终结符 所有出现在产生式右侧且不在首位置的终结符 自定义 的句子结束符号 表项 为当前栈符号与当前符号匹配后 所要求的栈操作和输入操作 表项表明了文 法的终结符与非终结符是否可能相遇 其中 栈操作包括两种 一是弹栈 二 是弹栈后 将符号串 ABc 反转后压栈 输 入 操作 包 括 两 种 一 是 读 入下一符号 是保持当前符号不变 具体的造算法为 171 1 设 A B 为文法的非终结符 C 为文法的终结符和非终结符组成的字符串 a 为文法的终结符将所 有 产 生式分为四类 6 A aB 则 A a 项填写为 B 调 向后压栈 读入下一个字符 ii A a A a 则将 A a 项填写为 弹栈 读入下 一个字符 iii A BC 则将 A select A BC 项全部填写为 将 BC 调向后压栈 保持当前字符不读入 iv A N 则将 A follow A 项全部填写为 弹栈 保持 当前字符不读 2 对表行和表列的所有字符进行循环 3 如果当前表行的字符是非终结符 它必有产生式 依据此产生式的类型 填写表项 4 如果当前表列的字符不在此产生式的选择集合中 该项填写为 Eror 5 对 项填写为 OK 6 对当前表行字符为终结符的 只有它与表列字符相同时 才填写为 弹栈 读入下一个字符 否则填入 Eror 3 流程图流程图 是 是 开始 读入文法 有效 是 LL 1 文法 判断句型报错 结束 数据结构数据结构 include iostream h include stdio h include malloc h include conio h struct Lchar char char ch struct Lchar next Lchar p h temp top base char curchar char curtocmp int right int table 5 8 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 int i j void push char pchar temp struct Lchar malloc sizeof Lchar temp char ch pchar temp next top top temp void pop void curtocmp top char ch if top char ch top top next void doforpush int t switch t case 0 push A push T break case 5 push A push T break case 11 push A push T push break case 20 push B push F break case 23 push B push F break case 32 push B push F push break case 40 push i break case 43 push push E push void changchartoint switch curtocmp case A i 1 break case B i 3 break case E i 0 break case T i 2 break case F i 4 switch curchar case i j 0 break case j 1 break case j 2 break case j 3 break case j 4 break case j 5 void dosome void int t for pop curchar h char ch printf n c t c curchar curtocmp if curtocmp if curtocmp A curtocmp B curtocmp E curtocmp T curtocmp F if curtocmp changchartoint if table i j t 10 i j doforpush t continue else right 0 break else if curtocmp curchar right 0 break else break else if curtocmp curchar right 0 break else h h next continue void main void char ch cout 文件名称 语法分析 endl cout endl cout 程序相关说明 endl cout endl cout A E B T endl cout 目 的 对输入 LL 1 文法字符串 本程序能自动判断所给字符串是 endl cout 否为所给文法的句子 并能给出分析过程 endl cout endl cout 表达式文法为 endl cout E T T endl cout T F F endl cout E i endl cout 请在下行输入要分析的串 号结束 next NULL base char ch temp struct Lchar malloc sizeof Lchar temp next base temp char ch E top temp h struct Lchar malloc sizeof Lchar h next NULL p h do ch getch putch ch if ch i ch ch ch ch ch ch ch temp struct Lchar malloc sizeof Lchar temp next NULL temp char ch ch h next temp h h next else temp p next printf nInput a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务会计凭证填写与装订规范操作指南
- 跟骨骨折切开复位内固定术后护理查房
- 安全生产责任告知函(6篇)
- 项目执行方案承诺书(5篇)
- 技术服务长期性保证承诺书7篇
- 广东省深圳福田区五校联考2025-2026学年初三下学期质量检查(I)语文试题含解析
- 河南省信阳市淮滨县重点达标名校2025-2026学年初三下学期中考模拟(一)英语试题含解析
- 大规模数据库集成和优化数据管理解决方案
- 2026年江苏省江阴南闸实验校中考英语试题考前模拟试题含解析
- 广东省韶关市曲江初级中学2026年初三9月质量检测试题英语试题含解析
- (一模)2026年深圳市高三年级第一次调研考试语文试卷(含答案解析)
- 市政道路工程安全生产应急救援预案范文
- 2026春季浙江嘉兴市平湖农商银行招聘考试参考题库及答案解析
- 雨课堂学堂在线学堂云《兵棋(中国人民武装警察部队警官学院)》单元测试考核答案
- 艾滋病诊疗指南(2025版)
- 2026年及未来5年市场数据中国社区型购物中心行业发展前景预测及投资策略研究报告
- 2026年成都农商银行软件开发岗(应用架构方向)社会招聘10人备考题库附答案详解
- 2026年及未来5年市场数据中国装甲车行业发展前景预测及投资战略数据分析研究报告
- 村务监督委员会培训课件
- 深圳龙岗区产服集团招聘笔试题库2026
- 雨课堂学堂在线学堂云《运动训练基本原理与方法(北京体育大学 )》单元测试考核答案
评论
0/150
提交评论