实验目的:1.了解LL(1)语法分析是如何根据语法规则逐一分析词法分析所得到的单词,检查语法错误,即掌握语法分析过程。
2.掌握LL(1)文法判别调剂和LL(1)语法分析器的设计与调试。
实验内容:针对任意的文法,编写相应的左递归消除、左公共因子提取程序,求解相应的FIRST、FOLLOW集,构造预测分析表,并编写LL(1)语法分析程序,并给出测试句子的分析过程。
(注:左递归消除和左公共因子如果在实验三里做了,可以直接拿过来用)判断LL(1)文法部分:1.输入:文法2.处理:左递归消除、左公共因子提取,FIRST、FOLLOW等集合构造,判断LL(1)3.输出:是LL(1)的情况输出预测分析表,否则判断不是LL(1)LL(1)分析程序部分:1.输入:诸如对应文法的符号串,以$结束。
2.处理:基于分析表进行LL(1)语法分析,判断其是否符合文法。
3.输出:串是否合法。
三、实验要求1.构建合适的数据结构来表示文法符号和文法规则。
2.设计恰当的数据结构存储预测分析表。
(ε可用#代替)3.任选C/C++/Java或其他高级语言中的一种作为编程语言,要求所编程序结构清晰。
2023/12/3 18:40:57 4KB 11(1)分析
1
关于消除左递归的文法及代码
2023/10/17 22:38:03 10.78MB 消除左递归
1
编译原理LL1文法的mfc实现,其中包括对LL1文法的First集合的算法,Follow集合的算法select集合的算法还包括消除左递归提取左因子
2023/8/1 23:46:21 10.78MB LL1文法 mfc 左递归 左因子
1
实验要求:(1)要提供一个源程序编辑界面,让用户输入文法规则(可保存、打开存有文法规则的文件)(2)检查该文法是否存在着左递归,如果有,则消除该文法的左递归
因此需要提供窗口以便用户可以查看消除左递归后的结果。
(3)检查该文法是否存在着左公共因子,如果有,则消除该文法的左公共因子。
因此需要提供窗口以便用户可以查看消除左公共因子的结果。
(4)需要提供窗口以便用户可以查看文法对应的LL(1)分析表,并报告该文法是否为LL(1)文法。
(5)需要提供窗口以便用户输入需要分析的句子。
(6)需要提供窗口以便用户查看使用LL(1)分析该句子的过程。
【可以使用表格的方式逐行显示分析过程】(7)应该书写完善的软件文档
2023/3/19 9:43:58 1.12MB 编译原理 窗体应用程序 LL1分析器 Qt
1
使用LL(1)方法实现的语法分析程序,使用C++编程,其中包含消弭左递归,求非终结符的FIRST、FOLLOW集,求LL(1)分析表以及对输入字符串的接受过程分析。
2016/2/14 10:51:17 20KB C++ 语法分析
1
LL(1)文法分析程序,内含输入文件、输出文件、readme协助文件、程序源码及exe运行程序,程序整个过程为:读入源码,消除直接左递归,消除直接左公共因子,求First集,求Follow集,构建分析表,分析过程。
供大家交流学习。
2020/3/19 5:24:17 85KB SyntaxAnalyz
1
编译原理Java实现完整自顶向下语法分析——First、Follow、Select、判断LL(1)、提取公因子、消弭左递归、自顶向下分析输入串
1
编译原理课程设计项目,带报告根据LL(1)分析法编写的语法分析程序:(1)输入已知文法,由程序自动构造文法的分析表M。
(2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法能否为LL(1)文法。
(3)对于输入的文法和符号串,正确判断此串能否为文法的句子,输出分析过程。
(4)可消除左递归左公因子图形界面良好可分析如下产生式集合(空字用‘@’表示)"E->E+T|T,T->T*F|F,F->i|(E)";"S->ME,E->+ME|@,M->FT,T->*FT|@,F->i|(S)";"S->AB,S->bC,A->@,A->b,B->@,B->aD,C->AD,C->b,D->aS,D->c";"S->AB|b,A->Sm,B->eA";
2018/9/1 10:39:25 1.57MB LL(1) 编译原理 课程设计 项目
1
(含源码及报告)本程序分析了自2016年到2021年(外加)每年我国原油加工的产量,并且分析了2020年全国各地区原油加工量等,含饼状图,柱状图,折线图,数据在地图上显示。
运转本程序需要requests、bs4、csv、pandas、matplotlib、pyecharts库的支持,如果缺少某库请自行安装后再运转。
文件含6个excel表,若干个csv文件以及一个名字为render的html文件(需要用浏览器打开),直观的数据处理部分是图片以及html文件,可在地图中显示,数据处理的是excel文件。
不懂可以扫文件中二维码在QQ里面问。
2022/9/30 16:31:44 29.75MB 爬虫 python 源码软件 开发语言
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡