递归下降分析法一、实验目的:根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。
本次实验的目的主要是加深对递归下降分析法的理解。
二、实验说明1、递归下降分析法的功能词法分析器的功能是利用函数之间的递归调用模拟语法树自上而下的构造过程。
2、递归下降分析法的前提改造文法:消除二义性、消除左递归、提取左因子,判断是否为LL(1)文法,3、递归下降分析法实验设计思想及算法为G的每个非终结符号U构造一个递归过程,不妨命名为U。
U的产生式的右边指出这个过程的代码结构:(1)若是终结符号,则和向前看符号对照,若匹配则向前进一个符号;
否则出错。
(2)若是非终结符号,则调用与此非终结符对应的过程。
当A的右部有多个产生式时,可用选择结构实现。
三、实验要求(一)准备:1.阅读课本有关章节,2.考虑好设计方案;
3.设计出模块结构、测试数据,初步编制好程序。
(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。
第二次上机调试通过。
(三)程序要求:程序输入/输出示例:对下列文法,用递归下降分析法对任意输入的符号串进行分析:(1)E->eBaA(2)A->a|bAcB(3)B->dEd|aC(4)C->e|dc输出的格式如下:(1)递归下降分析程序,编制人:姓名,学号,班级(2)输入一以#结束的符号串:在此位置输入符号串例如:eadeaa#(3)输出结果:eadeaa#为合法符号串注意:1.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);
2.对学有余力的同学,可以详细的输出推导的过程,即详细列出每一步使用的产生式。
(四)程序思路0.定义部分:定义常量、变量、数据结构。
1.初始化:从文件将输入符号串输入到字符缓冲区中。
2.利用递归下降分析法分析,对每个非终结符编写函数,在主函数中调用文法开始符号的函数。
2025/2/10 19:45:51 39KB 编译原理 语法 递归下降
1
河北工业大学移动应用开发实验报告,思考题啥的都做了,实验成绩为优秀。
copy代码的时候记得把我的学号和姓名换成你们自己的啊。


我可不想老师那有我的传说。
2025/2/4 14:48:14 6.1MB 实验报告
1
学生成绩管理系统,主要用于对学生的学号、姓名及各项学科成绩进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理。
2025/1/24 19:17:51 1.04MB 成绩管理系统
1
录入=newJButton("录入");查询=newJButton("查询");删除=newJButton("删除");修改=newJButton("修改");显示=newJButton("显示");录入.addActionListener(newInputAct());查询.addActionListener(newInquestAct());修改.addActionListener(newModifyAct());删除.addActionListener(newDeleteAct());显示.addActionListener(newShowAct());修改.setEnabled(false);p1=newJPanel();p1.add(newJLabel("学号:",JLabel.CENTER));p1.add(学号);p2=newJPanel();p2.add(newJLabel("姓名:",JLabel.CENTER));p2.add(姓名);p3=newJPanel();p3.add(newJLabel("性别:",JLabel.CENTER));p3.add(男);p3.add(女);p4=newJPanel();p4.add(newJLabel("专业:",JLabel.CENTER));p4.add(专业);p5=newJPanel();p5.add(newJLabel("年级:",JLabel.CENTER));p5.add(年级);p6=newJPanel();p6.add(newJLabel("出生:",JLabel.CENTER));p6.add(出生);pv=newJPanel();pv.setLayout(newGridLayout(6,1));pv.add(p1);pv.add(p2);pv.add(p3);pv.add(p4);pv.add(p5);pv.add(p6);ph=newJPanel();ph.add(录入);ph.add(查询);ph.add(修改);ph.add(删除);ph.add(显示);file=newFile("学生信息.txt");学生散列表=newHashtable();if(!file.exists()){try{FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(学生散列表);objectOut.close();out.close();}catch(IOExceptione){}}Containercon=getContentPane();con.setLayout(newBorderLayout());con.add(lb,BorderLayout.WEST);con.add(pv,BorderLayout.CENTER);con.add(ph,BorderLayout.SOUTH);setDefaultCloseOperation(EXIT_ON_CLOSE);setBounds(100,100,600,300);setVisible(true);Statementstmt; ResultSetrs;}publicstaticvoidmain(String[]args){StudentManagerff=newStudentManag
1
宿舍管理查询软件(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)(4)查询:a.按姓名查询;b.按学号查询;c按房号查询(5)打印任一查询结果(可以连续操作)
1
编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。
然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。
再按学号顺序和学生名次顺序把学生成绩显示出来。
2025/1/12 18:28:04 47KB 学生成绩名次表实验
1
程序功能(1)存取功能,能够从磁盘上的文本文件读取学生信息,并将内存中的学生信息保存到磁盘上的文件中。
学生信息包括学号、姓名、数学成绩、英语成绩、政治成绩。
(2)查询功能,分别能按学生学号和学生姓名进行查找学生信息,根据提示输入不同的数字,进行不同的查找方式。
(3)学生成绩统计功能,能够统计学生的平均成绩和总成绩。
(4)插入功能,能够插入学生信息,若新插入的学号应经存在系统中,会进行提示,此时不允许在插入具有相同学号的学生信息。
(5)修改功能,先用学号或姓名关键字查找要修改的学生的信息,若找到,则可进行修改。
(6)删除功能,能够删除指定的学生信息。
2025/1/4 6:04:50 70KB C语言 学生成绩管理信息系统
1
这个C++管理系统基本涵盖了“学生成绩管理系统”的所有功能,你可以从中借鉴到C++链表、类、封装、继承、文件操作、排序等等很多知识,极具借鉴意义,以下为本项目的功能介绍:1.建立文件(1)可以使用默认文件名或指定文件名将记录存储到(2)设置适当的标志位,作为对记录进行操作的(3)写同名文件将覆盖原来文件的2.增加学生记录(1)可在已有记录后面追加新的记录(2)可以随时增加新的记录,它们仅保存在向量数组中(3)可以将一个文件读入,追加在已有记录之后(4)采取文件追加方式时,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续追加操作方式3.新建学生信息文件(1)用来新建学生信息记录(2)如果已经有记录存在,可以覆盖原记录或者在原记录后面追加,也可以将原有记录信息保存到一个指定文件,然后重新建立记录(3)给出相应的提示信息4.显示记录(1)如果没有记录可供显示,给出提示信息(2)可以随时显示内存中的记录(3)显示表头5.文件存储(1)可以按默认名字或指定名字存储记录文件6.读取文件(1)可以按默认名字或指定名字将记录文件读入内存(2)可以将指定或默认文件追加到现有记录的尾部(3)可以将文件连续追加到现有记录并更新记录中的“名次”7.删除记录(1)可以按“学号”、“姓名”或“名次”方式删除记录(2)标志将被删除的记录,可以再次取消标志,经确认后删除已经标志的记录(3)如果记录是空表,删除时应给出提示信息并返回主菜单(4)如果没有要删除的信息,输出“没有找到”的信息(5)更新其他记录的名次(6)删除操作仅限于内存,只有执行存储操作时,才能覆盖原记录8.修改记录(1)可以按“学号”、“姓名”或“名次”方式查找要修改的记录内容(2)给出将被修改记录的信息,经确认后进行修改(3)如果记录已经是空表,应给出提示信息并返回主菜单(4)如果没有找到需要修改的信息,输出“没有找到”的信息(5)更新其他记录的名次(6)修改操作仅限于内存,只有执行存储操作时,才能覆盖原记录9.查询记录(1)可以按“学号”、“姓名”或“名次”方式查询记录(2)能给出查询记录的信息(3)如果查询的信息不存在,输出提示信息10.对记录进行排序(1)可以按”学号”进行升序和降序排列(2)可以按”姓名”进行升序和降序排列(3)可以按”名次”进行升序和降序排列(4)如果属于选择错误,可以立即退出程序
2025/1/1 8:56:08 33KB C++ 学生 管理系统 源代码
1
《宿舍管理系统》是一款针对高校学生住宿管理的信息化解决方案,旨在提高管理效率,确保宿舍安全,同时提供便捷的信息查询和报表生成功能。
系统采用UML(统一建模语言)进行设计,涵盖了学生、宿舍楼管理员、系统管理员和其他一般用户等多个角色的需求。
在需求分析阶段,系统主要关注以下几个方面:1.**学生基本信息**:每个学生都有唯一的学号,分配到特定的宿舍楼和宿舍,有入住时间。
同院系的学生通常会被安排在同一宿舍,便于管理。
学生信息包括学号、入住时间、宿舍号和院系名称。
2.**宿舍信息**:每间宿舍有唯一的宿舍号和地址,记录着宿舍的奖惩情况。
3.**宿舍财产信息**:学校财产如电灯、床铺等均有财产号,方便报修和管理。
4.**报修管理**:当宿舍财产损坏时,学生需向管理员报告,记录报修时间、损坏原因、维修状态和解决时间。
5.**夜归管理**:宿舍楼设定关门时间,晚归学生需登记,记录姓名、宿舍号、时间及原因。
6.**离返校管理**:假期离校和返校信息的记录,便于学校安全管理。
7.**毕业管理**:毕业生离校前需统计个人损毁的宿舍财产,支付相应罚款。
系统功能需求如下:-**宿舍楼管理员**:可以查询所有相关信息,对学生信息进行修改,记录报修和维修情况,发布公告。
-**学生**:能查询自己宿舍和个人的相关信息,提交报修,登记离返校时间。
-**系统管理员**:负责用户信息管理,权限分配,以及系统维护。
-**其他一般用户**:如辅导员和各级领导,可查看宿舍整体状况,生成报表。
系统由多个模块组成:-**基本数据维护模块**:管理用户基本信息。
-**基本业务模块**:处理如报修、学生变动等业务流程。
-**数据库模块**:存储和管理所有数据。
-**信息查询模块**:支持信息查询和报表生成。
UML建模通过用例图展示了各个角色的交互:-**学生**:可以登陆、报修、离校登记、返校登记、毕业、退学、支付罚款。
-**宿舍管理员**:登陆、查询个人信息和宿舍信息、修改信息、通知维修、登记维修完成、登记晚归、发布公告。
-**系统管理员**:登陆、管理用户信息、分配权限。
-**一般用户**:登陆、查看基本信息、查看个人和学生信息。
通过这些用例图和事件流分析,我们可以清晰地理解宿舍管理系统的功能架构和操作流程,为系统的开发提供了详尽的需求描述和设计蓝图。
2024/12/9 18:59:27 147KB 文档资料
1
(1)创建RDD(2)将RDD转为DataFrame(3)调用registerTempTable,注册为表,表名为:tb_book(4)使用使用sql语句查询前15条(5)模糊查询书名包含“微积分”的书(6)输出图书的前10行的name和price字段信息(7)统计书名包含“微积分”的书的数量(8)查询评分大于9的图书,,且只展示前10条(9)计算所有书名包含“微积分”的评分平均值(10)把书目按照评分从高到低进行排列,且只展示前15条(11)把图书按照出版社进行分组,统计出不同出版社图书的总数(12)将书名包含“微积分”的书记录保存到本地或HDFS上,且保存的格式为csv,文件名为:学号.csv(13)然后再从该csv文件加载,创建DataFrame,并查询和显示
2024/11/21 13:03:40 1.54MB DataFrame spark sql python
1
共 221 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡