安装ParserGenerator软件,熟悉其使用,对讲义中简单表达式计算的Yacc程序进行修改1.将所有的词法分析功能均放在yygettoken函数内实现,为+、-、*、\、(、)每个运算符及整数分别定义一个单词类别,在yygettoken内实现代码,能识别这些单词,并将单词类别前往给词法分析程序。
2.实现功能更强的词法分析程序,可识别并忽略空格、制表符、回车等空白符,能识别多位十进制整数。
3.修改Yacc程序,不进行表达式的计算,而是实现中缀表达式到后缀表达式的转换。
C语言版,包含.y和对应的两个.h,.c文件,在VS2013上编译成功。
2020/8/10 1:03:26 5KB YACC lex
1
108题中有部分题目重合,因此么有收录在压缩文件中。
华为机试├─001字符串最后一个单词长度│└─Source├─002计算字符个数│└─Source├─003明明的随机数│└─Source├─004字符串分隔│└─Source├─005进制转换│└─Source├─006质数因子│└─Source├─007取近似值│└─Source├─008合并表记录│└─Source├─009提取不重复的整数│└─Source├─010字符个数统计│└─Source├─011数字颠倒│└─Source├─012字符串反转│└─Source├─013句子逆序│└─Source├─014字典序排序│└─Source├─015求int型正整数在内存中存储是1的个数│└─Source├─016购物单│├─Debug│├─Source││└─Debug│├─Source-时间优先││└─Debug│└─Source-空间优先│├─Debug│└─Release├─017坐标移动├─018识别IP地址分类统计│└─Source│└─Debug├─019错误记录├─020密码验证合格程序├─021密码破解├─023删除字符串中出现次数最少字符│└─Source│└─Debug├─024合唱队│└─Source│├─Debug│└─Release├─025数据分类处理│└─Source│└─Debug├─026查找兄弟单词│└─Source│└─Debug├─027素数伴侣│└─Source│└─Debug├─028字符串合并处理│└─Source│└─Debug├─030密码截取(查找最长回文字符串)├─031蛇形矩阵│└─Source│└─Debug├─033判断IP能否属于同一子网│└─Source│└─Debug├─034称砝码│└─Source│└─Debug├─035学英语│└─Source│└─Debug├─036迷宫问题│└─Source│└─Debug├─037数独问题│└─Debug├─038名字漂亮度│└─Source│└─Debug├─039字符串截取│└─Source│└─Debug├─040单链表删除数据│└─Source│└─Debug├─041多线程│└─Source│├─Backup│├─Debug││└─041.tlog│└─Release│└─041.tlog├─042表达式计算│└─Source│└─Debug├─043计算字符串距离│└─Source│└─Debug├─044杨辉三角形变形├─046挑7├─047完全数│└─Debug├─048高精度加法├─049输出n个数中最小的k个│└─Debug├─050找出字符串只出现一次的字符│└─Debug├─051组成一个偶数最接近的2个质数│└─Debug├─052M个苹果放入N个盘子├─053查找整数二进制中1的个数├─054DNA子串├─055MP3光标位置│└─Source│└─Debug├─056查找2个字符串最大相同子串│└─Debug├─057配置文件恢复│└─Source│└─Debug├─05824点计算│└─Debug├─059成绩排序├─060矩阵相乘├─061矩阵乘法次数计算├─062字符串通配符│└─Debug├─066命令行解析│└─Source│└─Debug├─067最大相同子串长度│└─Debug├─068火车编号进站│└─Debug├─072数组合并├─074埃及分数│└─Source│└─Debug├─076密码截取│└─Sourc
2018/6/8 16:28:18 4.55MB 机试 在线编程 华为机试
1
附录c编译程序实验实验目的:用c语言对一个简单语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。
语法分析C2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析.C2.2实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析.C2.2.1待分析的简单语言的语法实验目的通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法.实验要求采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。
实验的输入和输出输入是语法分析提供的正确的单词串,输出为三地址指令方式的四元式序列。
例如:对于语句串begina:=2+3*4;x:=(a+b)/cend#输出的三地址指令如下:(1)t1=3*4(2)t2=2+t1(3)a=t2(4)t3=a+b(5)t4=t3/c(6)x=t4算法思想1设置语义过程(1)emit(char*result,char*arg1,char*op,char*ag2)该函数功能是生成一个三地址语句送到四元式表中。
四元式表的结构如下:struct{charresult[8];charag1[8];charop[8];charag2[8];}quad[20];(2)char*newtemp()该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,….Char*newtemp(void){char*p;charm[8];p=(char*)malloc(8);k++;itoa(k,m,10);strcpy(p+1,m);p[0]=’t’;return(p);}(2)主程序示意图如图c.10所示。
(2)函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。
在实验中我们只对表达式、赋值语句进行翻译。
语义分析程序的C语言程序框架intlrparser(){intschain=0;kk=0;if(syn=1){读下一个单词符号;
schain=yucu;/调用语句串分析函数进行分析/if(syn=6){读下一个单词符号;
if(syn=0&&(kk==0))输出(“success”);}else{if(kk!=1)输出‘缺end’错误;
kk=1;}else{输出’begin’错误;
kk=1;}}return(schain);intyucu(){intschain=0;schain=statement();/调用语句分析函数进行分析/while(syn=26){读下一个单词符号;
schain=statement();/调用语句分析函数进行分析/}return(schain);}intstatement(){chartt[8],eplace[8];intschain=0;{switch(syn){case10:strcpy(tt,token);scanner();if(syn=18){读下一个单词符号;
strcpy(eplace,expression());emit(tt,eplace,””,””);schain=0;}else{输出’缺少赋值号’的错误;
kk=1;}return(schain);break;}}char*expression(void){char*tp,*ep2,*eplace,*tt;tp=(char*)malloc(12);/分配空间/ep2=(char*)malloc(12);eplace=(char*)malloc(12);tt=(char)malloc(12);strcpy(eplace,term());/调用term分析产生表达式计算的第一项eplace/while(syn=13or14){操作符tt=‘+’或者‘—’;
读下一个单词符号;
strcpy(ep2,term());/调用term分析产生表达式计算的第二项ep2/strcpy(tp,newtemp());/调用newtemp产生临时变量tp存储计算结果/emit(tp,eplace,tt,ep2);/生成四元式送入四元式表/strcpy(eplace,tp);}return(eplace);}char*term(void)/仿照函数expression编写/char*factor
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 钉钉 钉钉打卡