LL1文法的判别c语言,编译原理实验七:LL1文法的判断

《编译原理实验七:LL1文法的判断》由会员分享,可在线阅读,更多相关《编译原理实验七:LL1文法的判断(11页珍藏版)》请在人人文库网上搜索。

1、实验七:LL(1)文法的判断 一:要求输入:任意的上下文无关文法。输出:判断是否为LL(1)文法二:实验目的1掌握LL(1)的判断,掌握求first和follow集合的算法2熟悉运用C/C+语言对求first和follow集合进行实现 三:实验原理设x1x2xn,FIRST()可按下列方法求得:令FIRST(),i1;(1)若xiVT,则xiFIRST();(2)若xiVN; 若 FIRST(xi),则FIRST(xi)FIRST(); 若FIRST(xi),则FIRST(xi)FIRST();(3)ii+1,重复(1)、(2),直到xiVT,(i2,3,n)或xiVN且若 FIRST(xi)。

2、或in为止。当一个文法中存在产生式时,例如,存在A,只有知道哪些符号可以合法地出现在非终结符A之后,才能知道是否选择A产生式。这些合法地出现在非终结符A之后的符号组成的集合被称为FOLLOW集合。下面我们给出文法的FOLLOW集的定义。设文法GS(VN,VT,P,S),则FOLLOW(A)a | S Aa ,aVT。若S A,#FOLLOW(A)。由定义可以看出,FOLLOW(A)是指在文法GS的所有句型中,紧跟在非终结符A后的终结符号的集合。FOLLOW集可按下列方法求得:(1)对于文法GS的开始符号S,有#FOLLOW(S);(2)若文法GS中有形如BxAy的规则,其中x,yV *,则FI。

3、RST(y)FOLLOW(A);(3)若文法GS中有形如BxA的规则,或形如BxAy的规则且FIRST(y),其中x,yV *,则FOLLOW(B)FOLLOW(A);四:数据结构与算法typedef struct Chomsky /定义一个产生式结构体string left; /定义产生式的左部string right; /定义产生式的右部Chomsky;void apart(Chomsky *p,int i) /分开产生式左右部,i代表产生式的编号string is_empty(Chomsky *p)/判断某非终结符能否直接推出空,空用#代替string isempty(Chomsky *。

4、p)/可以间接推出空的非终结符void search(Chomsky *p,int n)/提取产生式中的非终结符void First(Chomsky *p,int n,char m,int mm)/求文法中非终结符的First集void Follow(Chomsky *p,int n,int m)/求文法的follow集string erase(string s)/去First集及follow集中的重复字符void select(string s1,string s2)/求产生式的select集,s1是产生式左部,s2是产生式右部五:出错分析1:select集计算不出,关键在于能产生空的非终结。

5、符没有求出来2:单个符号的first集与一串符号的first集区别3:实验最后没能输出select集,没能判断出来是否是LL(1)文法 六:实验结果与分析七:源代码#include#includeusing namespace std;#define max 100typedef struct Chomsky /定义一个产生式结构体string left; /定义产生式的左部string right; /定义产生式的右部Chomsky;int n;/产生式总数string strings;/存储产生式string noend;/存放文法中的非终结符string empty;/存放可以推出空的非。

6、终结符string firstmax;/存放非终结符的first集string followmax;/存放非终结符的follow集string selectmax;/存放产生式的select集void apart(Chomsky *p,int i) /分开产生式左右部,i代表产生式的编号int j;for(j=0;j=0)/若此非终结符已经存在直接推出空那里,在此无需重复计算elsefor(j=0;j=0&noend.find(pi.left0)=0&noend.find(pi.rightj)=pi.right0)firstmm=firstmm+pi.right.substr(0,1);if(pi.right0=#)firstmm=firstmm+pi.right.substr(0,1);if(A=pi.right0)for(j=0;jn;Chomsky *p=new Chomskyn; / 初始化产生式数组for(i=0;istrings; apart(p,i); coutf;search(p,n);/提取产生式中的非终结符/empty=is_empty(p)+isempty(p);/可以推出空的所有非终结符for(m=0;mpi.right:selectiendl;system(pause。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include void fun (char *ch1, char *ch2){int i, n(0), k;int length;bool judge(true);for (length 0; *(ch1 length) ! \0; length );// 计算ch1长度for (i length - 1; i > 0; i --){if (*(ch1 (length - 1))…

AVR单片机计算器C语言源程序,AVR单片机简单计算器的Proteus仿真实现+源码

#include "mega16.h"#include "1602.h"#include "key.h"float k1,k2; //记录最终输入运算的两个数uint one,two,three,four; //记录每次输入的数字uint flag; //计数标志位uint flag1,flag2; //第一个数 第二…

android上传图片文件至c 服务器,Android 史上最优雅的实现文件上传、下载及进度的监听...

本文已授权「刘望舒」微信公众号独家原创发布前言本文将直接使用RxHttp库实现文件上传、下载、断点下载、进度的监听,不对RxHttp做过多讲解,如果对RxHttp不了解,请移步本文目的在于让更多的读者知道RxHttp库,如果您已阅读上面4篇文…

Android中http断点下载,Android HttpURLConnection断点下载(单线程)

HttpCilent 跟 HttpURLConnection 是安卓原生的用来实现http请求的类:Android 6.0之后取消了HttpClient,不支持跟新 ,今天小编使用的是HttpURLConnection :直接上代码:URL url null;BufferedInputStream bin null;Ht…

Android ui 单元测试 覆盖率,Android单元测试—UI测试(Espresso)

前言我们先回顾一下,在上一篇博客中,主要分享了Android单元测试的逻辑测试部分。接下来,我们重点讲解Android单元测试的UI测试部分!何为UI测试呢?就是对用户界面的交互元素进行测试,如TextView、ImageView&…

android shape 圆角百分比,Android shape显示圆角问题

当需要定义一个圆角效果,当在ADT中预览,没有有效果时,只要运行就可以了!xmlns:Android"http://schemas.android.com/apk/res/android">android:state_pressed"true">android:startColor"#ff8c00"android:endColor"#FFFFFF…

Android png模拟svg,Android 中使用svg图片

1. svg认识SVG:android5.0出现,w3c推出使用xml 描述二维图形语言,矢量图,放大缩小无影响为什么用svg,现在手机的短板是内存,不是cpu,svg通过cpu计算,png占用内存Android上对svg进行阉割,使用Vector Drawable对svg支持,…

android 删除垃圾文件夹,别再用手机管家清理垃圾了!删除这些文件夹,内存瞬间释放几个G...

随着手机使用时间的增加,手机中缓存的东西越来越多,这时候手机内存空间就会告急,从而影响手机的流畅性。那么在这种时候不要乱清理,我们只需要删除这几个文件夹,就可以帮手机轻松释放好几个G的内存。下面我们就一起来看…

android软件perthbus,Transit

v5.9.10版更新说明(2021-03-19)Whether you’re riding transit for business, pleasure, or to get shredded from a socially-spaced-out bus ballet, you’ll notice “Favourite destination” icons have been newly primped to prom perfection.What else? Hello Free2M…

HTML中scr是图片的什么,HTML中关于url、scr、href的区别

HTML中关于url、scr、href的区别URL是什么URL:Uniform Resource Locators(统一资源定位器)的简写,Web浏览器通过URL从Web服务器请求页面。url不是属性,src和href是属性,src用于替换当前元素,href用于在当前文档和引用资…

html5页面结构案例,前端学习笔记(五)HTML+CSS静态页面实战案例:幸福西饼首页和百度首页...

按照知乎上面汪小黑推荐的前端学习路径,在自学了HTML和CSS之后,开始尝试实战制作静态页面小项目。幸福西饼首页制作首先我在网上下载到了千锋教育提供的的幸福西饼官网静态页面的教学视频和图片素材、源码等。我是先看一集视频,然后关掉视频自…

计算机的应用技术课程的看法,统计教学与计算机应用的几点看法论文

统计教学与计算机应用的几点看法论文一、传统教学方法的局限性和弊端统计学是一门关于搜集、整理、汇总、描述和分析数据资料,并在此基础上进行推断和决策的方法论科学,具有很强的应用性、实践性。统计学课程是中等职业学校、财经类专业的基础核心课程。…

计算机应用基础试卷结果分析,计算机应用基础 试题

计算机应用基础 试题计算机应用基础的试题有哪些?打击知道吗?下面小编为大家带来计算机应用基础试题,仅供参考,希望能够帮到大家。计算机应用基础试题选择题:1、现代信息社会的主要标志是 ___ 。(A) 汽车的大量使用 (B) 人口的日益增长 (C) 自然环境的…

中国石油大学计算机专业调剂信息,2014年中国石油大学(北京)计算机专业考研调剂信息(新)...

写在前面:随着2014年34所自主划线院校考研分数线及国家线的公布,2014年考研复试、调剂工作也陆续拉开序幕。为了帮助更多考生顺利通过复试,考研论坛特开启复试调剂答疑活动,解答2014年考生有关考研复试和调剂的问题,为…

jupyter可以打开HTML文件吗,Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)...

前面用了很久Notebook来交互式编程了,此次说说几个其余的选项:htmlNotebook Markdown此次选Markdown模式(关于Markdown基础能够看以前写的Markdown Base)python和代码同样,Shift回车就能够预览了,怎么样是否是很酷的感受&#xff…

计算机专业毕业论文指导记录详细,毕业论文指导记录怎么写 了解一下

1、指导记录总共6次,请各位同学按照法学院网站上公布的毕业论文写作进度确定每次指导记录的时间。同时根据自己的论文选题和实际情况,可稍作调整。2、第一次:根据学院的统一部署,布置学生毕业论文写作的总体要求与进度&#xff0c…

计算机专业会议评级,2018计算机专业工程教育认证研讨会

为帮助计算机专业了解我国工程教育认证进展、理解认证标准的本质、引导专业建立正确的认证观,落实以认证推进专业建设和完善内部质量保障体系、以认证工作推进一流专业建设,把认证和专业改革发展有机结合,提高计算机教学教育的质量。中国计算…

如何用计算机基础知识提问,职业学校《计算机应用基础》课的提问策略

【摘 要】《计算机应用基础》是中等职业学校的公共基础课,是一门融理论、技能、实训于一体的课程。本文简要分析《计算机应用基础》课的教学现状,通过对课堂教学现状的表现及原因的分析,从五个方便阐述职业学校《计算机应用基础》课的提问策略…

计算机网络技术基础教学内容,计算机网络技术基础

无计算机网络技术基础》课程教案一 计算机网络技术基础》课题: 课题:计算机网络概述(一) ) 教学顺序: 教学顺序:1 教学时数: 教学时数: 2 学时 教学目的:了解计算机网络产生的背景,掌…

淮阴工学院计算机答辩,淮阴工学院关于做好2014级研究生学位论文答辩工作的通知...

根据《淮阴工学院全日制工程硕士专业学位授予工作细则》(淮工院〔2013〕49号)(附件1)文件精神,淮阴工学院现将2014级研究生学位论文答辩相关工作事宜通知如下。下面,小编为大家分享淮阴工学院关于做好2014级研究生学位论文答辩工作的通知,全文…