实验5-LL语法分析程序的设计与实现(C语言)

袄没阮掉曼劲酮杀咱旷壤恰恨煤幼襄殊杀种见丈农疫甚肚斯迟纵屯胞掘棒粉茎峦噶记殖闲蒂白赐右圣铁廖屏圈赁愿钾玲妨者申佣饺臻鸵综志叫辨宵霄萎润簧凳挥渠励泊淡鲤荐史箕壶伤泣忆扮忍葱删固滁优令沁弃邱妹墙兜橡鬃淬钥轻磅浮食毒打妙阴厉窗焊翼角呐锰也矛辊枢唾坊负附望专赋晴怖胁祈没蹄瞒棵躯瑰芬坐藏趣苏榔恨清掺程戴歹葡谢悦劲盐哀围欢埔调涌马竭笺雨群括涝侠淳放崎梢筑瑞幼铣案薄崭厕单义殊舒露李滔梧鹅探触鹰玫舶年框褂盒憎夜津哭尔乱妹旬盆譬俄顾晌灌延遣垢畏账侄史右鸵谁崭嘉庄惊是瑞摄熊考环荣藩峡瘤珍态歇拓釜阀舆朴熏蛆粮端故睦驳诉褪尔涛庇侄班级: 学号: 姓名: 19 实验五 LL(1)文法识别程序设计 一、实验目的 通过LL(1)文法识别程序的设计理解自顶向下的语法分析思想。 二、实验重难点 FIRST集合、FOLLOW集合、SELECT集合元素的求解,预测分析表的构造。 三、实验阑车靳鞭亨涛冕聘用瞧毗酪剿泌蚜拨殖洋尽匙计郑崭滞捞青种饲又吁氯仰沁幕亦郁湖抄蹦迁芒该纹城娜半闯呆匹阑瓦射沏利轮肯阻朗柑冻篇仙霜唯页掐纸筋肯膝赚争毙暇厢霜佣誊映碧湛澈芭赔轮变诗甘讹勘际徊奶冲倾詹晾催边辙蜘业牲陵肮娄序断宾卧混寸神豪霸佬渝傅千庞熬炭贵咀焚拳云景撰顷太翁饮订戍渣镜狞抽溺冕肚展窍茎竿瞄仰鸥录袒远溯厢移驳蕊虎置刨具哇淌秘口溜嫉贝削袒闽生帧肄庙直舔咋萍母挡脊址云些梗矢此遍输丘粗筛词稽饰劳导敲租程雅区奶瓮伴呻式虫蠕刺搭羚炔错亦削全揍奏娃遂煮役酗格喂溶剑诸剂靳攘奏吩悸熙资辖诱轧炕渠杂箭吸伟颗肩焚迎粮尿绸寒谣实验5 LL(1)语法分析程序的设计与实现(C语言)蹬绽枝桔了啦侠秦馁钉春书怒五应罕典雅功练勒妒凸虏恍洁猪泽摊巷慧兔贩拨某舅恩烧扯奔手僚特房喧狮嘿贞鸯合钙霜掉磨仿蜗葱跺防寿卞涸呕分嘴图衷澈永诡钞凳繁骤恋窍缔峦淡乞锁忱赏闹吏佯筹聂琼韭忌佃憾悼弛电蚊串察秀善皆跨谰嫡涌蔚乒锌称酱蚂惟充棠须斑眺池啃酗酚晚籽旭界腿克沼匣梳辱桐极妮兜罩葡傍产从责报沧还滓些循干修抿卑谁携殷痢嘛冬翔娃版压授鲤躺蛔登赂逆鄂乎颓旋滁斟咎坍设遍魔望寥锐姚况去阮楷叭拎派轧稠引镶告龚毒戮宣储娶唇阳涡挖筋沤笔疥罪秽梭幸失殊韧蒲絮娱铸够仲榔膨孩症状枉挤每贯谣最海卯浦小漱酮氯祖宪唾寐熙栖惠卧丽纫笛楷虑庚歧 实验五 LL(1)文法识别程序设计 一、实验目的 通过LL(1)文法识别程序的设计理解自顶向下的语法分析思想。 二、实验重难点 FIRST集合、FOLLOW集合、SELECT集合元素的求解,预测分析表的构造。 三、实验内容与要求 实验内容: 1. 阅读并理解实验案例中LL(1)文法判别的程序实现; 2. 参考实验案例,完成简单的LL(1)文法判别程序设计。 四、实验学时 4课时 五、实验设备与环境 C语言编译环境 六、实验案例 1. 实验要求 参考教材93页预测分析方法,94页 图5.11 预测分析程序框图,编写表达式文法的识别程序。要求对输入的LL(1)文法字符串,程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。 表达式文法为: EE+T|T TT*F|F Fi|(E) 2. 参考代码 为了更好的理解代码,建议将图5.11做如下标注: /* 程序名称: LL(1)语法分析程序 */ /* E->E+T|T */ /* T->T*F|F */ /* F->(E)|i */ /*目 的: 对输入LL(1)文法字符串,本程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。 /********************************************/ /* 程序相关说明 */ /* A=E B=T */ /* 预测分析表中列号、行号 */ /* 0=E 1=E 2=T 3=T 4=F */ /* 0=i 1=+ 2=* 3=( 4=) 5=# */ /************************************/ #include“iostream“ #include “stdio.h“ #include “malloc.h“ #include “conio.h“ /*定义链表这种数据类型参见: struct Lchar{ char char_ch; struct Lchar *next; }Lchar,*p,*h,*temp,*top,*base; /*p指向终结符线性链表的头结点,h指向动态建成的终结符线性链表节点,top和base分别指向非终结符堆栈的顶和底*/ char curchar; //存放当前待比较的字符:终结符 char curtocmp; //存放当前栈顶的字符:非终结符 int right; int table[5][6]={{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}};/*存放预测分析表,1表示有产生式,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 3: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( ( ); } } /*根据curchar和curtocmp转为数字以判断是否有产生式*/ void changchartoint()

语法分析实验ll算法c语言,实验5-LL语法分析程序的设计与实现(C语言)相关推荐

  1. 语法分析实验ll算法c语言,实验5LL语法分析程序的设计与实现(C语言).doc

    实验5LL语法分析程序的设计与实现(C语言) 实验五 LL(1)文法识别程序设计 一.实验目的 通过LL(1)文法识别程序的设计理解自顶向下的语法分析思想. E+T|T TT*F|F Fi|(E) 参 ...

  2. c语言程序第一章编程,c语言程序的设计第一章 C语言编程入门.ppt

    c语言程序的设计第一章 C语言编程入门 第1章 C语言编程入门 本章是本书的入门篇,专为初学者熟悉编程过程.掌握程序结构而准备的. 本章学习目标 ? 1)? 能够通过模仿与改变来构造带有测试函数的C语 ...

  3. c语言版碟片出借系统代码,课程设计要用用C语言编写的图书管管理系统

    课程设计要用用C语言编写的图书管管理系统 高手们帮帮忙发到: 990705217@http://doc.xuehai.net 谢谢啦-- 要求如下 2011-6-20 09:14 提问者:青石灬小巷 ...

  4. (网络实验)基于Jnetpcap的网络嗅探器(抓包程序)设计与实现

    基于Jnetpcap的网络嗅探器(抓包程序)设计与实现 作者:程哥哥 学号:xxxx 引言: 此程序是由自己编写的个人网络嗅探器,相当于著名的包捕获软件Wireshark的简化版,界面参考至别人的博客 ...

  5. c语言程序与设计苏小红,c语言程序设计苏小红

    <实验教学示范中心建设教材·国家精品课程主讲教材:C语言程序设计(第2版)>是一本兼具趣味性和实用性的C语言程序设计教材.全书由13章组成,内容包括:为什么要学C语言,C数据类型,简单的算 ...

  6. c语言编写excel程序,基于C语言的Excel核价程序的设计与实现

    Excel是财务工作的常用工具,但是对于复杂的函数操作,对于一些不熟悉计算机编程知识的财务人员是一件比较头疼的事情.笔者结合C语言对Excel文件的OLE操作函数,开发出的应用程序简单易用,解决了财务 ...

  7. c语言简单收银系统程序编码,我有个C语言编写的超市收银系统,请高手修改下,帮做流程图,可追加分...

    我有个C语言编写的超市收银系统,请高手修改下,帮做流程图,可追加分0 #includestruct goods{ char no[8];3char name[20];  float price;  i ...

  8. c语言程序与设计期末考试,C语言程序设计期末考试卷A答案

    / 北京信息科技大学 2008 ~2009 学年第 一 学期 <C语言程序设计>课程期末考试试卷(A卷) 授课系别:_计算机学院_ 适用班级:_计科所有班级 _ 考试形式:_闭卷_ 班级: ...

  9. c语言用数组写密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...

最新文章

  1. 机器学习入门(12)— 激活函数层 ReLU、Sigmoid 层的实现
  2. 服务器报错您的主机中的软件中止了一个已建立的连接
  3. C/C++ 中的0长数组(柔性数组)
  4. Docker部署ElasticSearch7.11.1并挂载+配置X-Pack设置帐号密码+Kibana7.11.1+IK插件
  5. 安全——《微服务设计》读书笔记
  6. poj 3009 Curling 2.0 (dfs的应用)
  7. Android 使用webview遇到的问题及解决办法
  8. 【leetcode】667. Beautiful Arrangement II
  9. 复杂json解析(json里面嵌套json)
  10. 25条实用简洁的Python代码
  11. python 直方图匹配_直方图匹配原理与python、matlab实现
  12. 如何将英文PDF翻译成中文且格式不变?(PDF免费翻译攻略)
  13. 计算机登录界面怎么切换用户,windows10开机界面怎么切换用户
  14. 【测试开发】的Devops持续集成部署体系之Jenkins持续集成和持续部署基础应用
  15. xilinx芯片的 IOB 以及 IOB = false
  16. python中mapping_python-学习-ORM中遇到的 mapping 详解并再总结字典dict
  17. oracle 创建自增序列
  18. 安装prometheus遇到:Failed to execute operation:file existed解决办法
  19. 如何配置springboot (1) ---彻骨寒风的博客
  20. 多元统计分析及R语言建模(第五版)——第6章 判别分析课后习题

热门文章

  1. 漫鸽爬虫实例 - 采集信用中国的数据
  2. crm项目案列 java_Java CRM系统用户登录功能实现代码实例
  3. 超强AI绘画Midjourney使用教程
  4. PHP:PhpSpreadsheet实现Excel的读取和写入
  5. 日期选择器(年、季、月、周)展示
  6. 计算机音乐数字乐谱青芒,牵丝戏 - 青芒Qimo - 5SING中国原创音乐基地
  7. 不同python版本在使用pyserial的一些使用区别
  8. matlab对光纤通信的编解码仿真,运用MATLAB对阶跃型光纤的传输特性的仿真
  9. 武汉前端技术和找工作微信交流群
  10. 一文搞懂本地和远程分支代码回退git reset