第三次上机—语法分析1目的:熟练掌握自上而下的语法分析方法,并能用C++程序实现。
要求:1.使用的文法如下: E®TE¢ E¢®+TE¢|e T®FT¢ T¢®*FT¢|e F®(E)|id2.对于任意给定的输入串(词法记号流)进行语法分析,递归下降方法和非递归预测分析方法可以任选其一来实现。
3.要有一定的错误处理功能。
即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。
可以参考书上介绍的同步记号集合来处理。
可能的出错情况:idid*id,id**id,(id+id,+id*+id……4.输入串以#结尾,输出推导过程中使用到的产生式。
例如:输入:id+id*id#输出:E®TE¢T®FT¢F®idE¢®+TE¢T®FT¢……如果输入串有错误,则在输出中要体现是跳过输入串的某些记号了,还是弹栈,弹出某个非终结符或者是终结符了,同时给出相应的出错提示信息。
比如:idid*id对应的出错信息是:“输入串跳过记号id,用户多输入了一个id”;
id**id对应的出错信息是:“弹栈,弹出非终结符F,用户少输入了一个id”(id+id对应的出错信息是:“弹栈,弹出终结符),用户少输入了一个右括号(或者说,括号不匹配)”有余力的同学可进一步考虑如下扩展:1. 将递归下降方法和非递归预测分析方法都实现2. 在语法分析的过程中调用第二次上机的结果,即利用词法分析器来返回一个记号给语法分析器。
3. 编写First和Follow函数,实现其求解过程。
测试文法:A->BCDEB->aBA|εC->F|εD->b|c|εE->e|εF->d|ε
2023/9/19 0:58:21 10KB 递归 LL(1) 自上而下
1
1.使用如下文法: E®E+T|T T®T*F|F F®(E)|id2.对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。
手工构造LR分析表,利用移进-归约分析算法(P71图3.12)输出(P73表3.8)对应的动作部分。
如:输入:id*+id/(id+id)#输出:移进按F->id归约按T->F归约移进error……3.要有一定的错误处理功能。
即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。
例如:从状态0开始的记号流为:bm将b移进之后,栈里的情况应该为:0b2此时查表发现action[2,m]=error输出打印:error把A和状态1相继压入栈,用户指针后移到FOLLOW(A)对应的元素继续分析。
4.利用P94页的表3.13的方式将错误进行分类提示,即给出具体的出错信息。
扩展:在已有文法的基础上再加上减法“-”和除法“/”对应的产生式构成最终的文法。
从而使得记号流可以处理带括号的加、减、乘、除四则运算。
2023/8/20 23:55:43 6KB 编译原理
1
编译原理LL1文法的mfc实现,其中包括对LL1文法的First集合的算法,Follow集合的算法select集合的算法还包括消除左递归提取左因子
2023/8/1 23:46:21 10.78MB LL1文法 mfc 左递归 左因子
1
C#2010完整开发编译原理(词法分析+LL(1)分析),词法分析实现输入代码自动标识关键字(该颜色,智能编程环境,不限语言),LL(1)分析实现输入文法,求解FIRST,FOLLOW集,得出预测分析表,匹配字符串。
2023/6/30 4:56:54 112KB 编译原理
1
利用First集,Follow集,预测分析表以及先进后出栈来实现LL(1)文法的分析程序,以及判别某个串是否属于当前文法的范畴,内含c++源代码和实验报告说明
2023/6/1 12:52:36 3.1MB 编译原理 上下文无关文
1
编译原理课程方案。



约莫的FIRST集FOLLOW集求解的法度圭表标准。



收缩文档中ffs.cpp为源法度圭表标准。



使用了bool。



所以做了cpp。



Production文本是供法度圭表标准使用的暴发式。



其余的是进程文件。



能够漠视。



2023/4/21 20:21:25 48KB 编译原理
1
第4次上机—语法阐发2目的:熟练操作自下而上的语法阐发方式,并能用C++法度圭表标准实现。
申请:1.使用如下文法: E®E+T|T T®T*F|F F®(E)|id2.对于纵情给定的输入串(词法暗号流)举行语法阐发,申请付与LR阐发器来实现。
手工结构LR阐宣告,行使移进-归约阐发算法(P69图3.12)输入(P70表3.8)对于应的行为部份。
如:输入:id*+id/(id+id)#输入:移进按F->id归约按T->F归约移进error……3.要有未必的差迟处置成果。
即对于差迟能揭示,并且能在未必水平上漠视尽量即便少的暗号来举行接下来的阐发。
譬如:从外形0末了的暗号流为:bm将b移进之后,栈里的情景应该为:0b2此时查表发现action[2,m]=error输入打印:error把A以及外形1相继压入栈,用户指针后移到FOLLOW(A)对于应的元素络续阐发。
4.行使P92页的表3.13的方式将差迟举行分类揭示,即给出详尽的侵蚀信息。
扩展:在已经有文法的底子上再加之减法“-”以及除了法“/”对于应的暴发式组成最终的文法。
从而使患上暗号流能够处置带括号的加、减、乘、除了四则运算。
2023/4/19 11:58:18 5KB LR
1
随着我直接向您的Mastodon存眷者发送新闻,以告知他们此举。
这个名目再也不弥留,由于新增了将追寻者从一个实例移到另一个实例时的成果。
假如您只是从一个实例挪动到另一个实例,则大概要告知您的存眷者在该实例中存眷您。
由于大概不会齐全人都看到果真变更的果真帖子,于是向您的存眷者发送直接人民新闻会暴发更大的影响。
此处的剧本毗邻到两个实例以比力存眷者列表,并且仅向不存眷您的now帐户的货物发送直接新闻。
装置在当地盘算机上运行mongodb建树一个虚构的pythonenv。
使用pipinstall-rrequirements.txt装置软件包组态在运行剧本以前,请同时变更配置配备枚举以及新闻在follow_me.py文件中要变更的3件事(旧的,新的以及新闻):OLD='mastodon.social'#InsertherethedomainnameofyouroldinstanceNEW='merveilles.town'#InsertherethedomainnameofyournewinstanceAPP
2023/3/29 8:51:42 15KB social mastodon MastodonPython
1
C言语写的语法分析器,对于给出的任意LL1文法,实现了求First集,Follow集,预测分析表的生成,分析栈分析句子的合法性。
原创的
2023/2/14 12:21:15 205KB C 语法分析 源代码
1
设计Follow(A)算法的实现:已知文法G(Z):S→eT|RTT→DR|lR→dR|lD→a|bd输出:文法输出:Follow(S)={#}Follow(T)={#}Follow(R)={a,b,#}Follow(D)={d,#}
2023/1/13 9:02:18 6KB 设计求Follow(A)算法
1
共 33 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡