附录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
1、实现串赋值、串比较、求串长、串联接以及求子串这5种基本操作。
2、能利用上述实现的基本操作完成置换Replace(&S,T,V)以及从串中删除一段子串StrDelete(&S,pos,len)的操作。
3、以上要求实现的操作不能直接使用C言语提供的函数(gets(),puts()除外)完成。
2021/5/10 21:55:33 7KB 数据结构 C语言 串操作
1
支付宝扫码支付代码和文档asp,csharp,java,php测试时需要把partner和key换成你本人的,还有就是json串不能有空格
2016/3/12 15:30:05 3.06MB 支付宝扫码
1
有关json与jsonp的区别(json才是目的,jsonp只是手段)引见如下所示:一言以蔽之,json返回的是一串数据;
而jsonp返回的是脚本代码(包含一个函数调用);
JSON其实就是JavaScript中的一个对象,跟varobj={}在质上完全一样,只是在量上可以无限扩展。
简单地讲,json其实就是JavaScript中的对象(Object)和数组(Array,其实也是对象)这倆好基友在那儿你嵌我我嵌你地套上n多层,以此模拟出许多复杂的数据结构。
json易于人阅读和编写,也易于机器解析和生成,相对网络传输速率较高,功能型网站前后端往往要频繁大量交换数据,而json凭借其强大
2019/3/16 4:37:57 97KB ajax callback js
1
在做一个需要用到echarts地图的项目的时候,成功通过ajax获取到了后台提供的数据,并生成了想要的JSON串。
但是,放到echartsoption.series[0].data里,获取不到数据。
在生成的地图上无法看到你从后台获取到的值。
翻遍百度和必应,给出的答案五花八门,仍旧未解决问题,最后还是一个同事大牛给解决的,在此分享给大家。
希望对大家有协助,,,,废话不多说,直接上码:$(function(){vardata=[];functionsetOption(data){varmyChart=echarts.init(document.getElementB
2015/9/8 17:40:14 49KB ajax ar art
1
前几天,发现了一些小问题。
我在写后台管理页面时,需要上传一张图片。
于是我就用很普通的Form表单上传有一段Json串和图片文件;
Form表单上传图片只需要在<form>标签里加上enctype=‘multipart/form-data’,这样是可以上传图片的;
但问题来了,在我进行用Form表单提交的时候直接跳出来提交前往值的页面并且原先的页面刷新;
这样我们可以先到异步的Ajax可以实现局部刷新;
废话不多说了直接上代码;
首先是html:<formid="form_insert"method="post"><tablestyle="font-size:13
2020/7/24 2:43:42 58KB ajax form form表单提交
1
VSC#2013DES加密解密完整源代码测试平台visualstudio2013win8.1依据网上资源整理,并亲测,并写出窗口供调用演示,原代码全部打包奉上,可供学习使用。
publicstaticstringEncryptDES(stringencryptString,stringencryptKey){try{byte[]rgbKey=Encoding.UTF8.GetBytes(encryptKey.Substring(0,8));byte[]rgbIV=Keys;byte[]inputByteArray=Encoding.UTF8.GetBytes(encryptString);DESCryptoServiceProviderdCSP=newDESCryptoServiceProvider();MemoryStreammStream=newMemoryStream();CryptoStreamcStream=newCryptoStream(mStream,dCSP.CreateEncryptor(rgbKey,rgbIV),CryptoStreamMode.Write);cStream.Write(inputByteArray,0,inputByteArray.Length);cStream.FlushFinalBlock();returnConvert.ToBase64String(mStream.ToArray());}catch{returnencryptString;}}////DES解密字符串////待解密的字符串//解密密钥,要求为8位,和加密密钥相同//解密成功前往解密后的字符串,失败返源串publicstaticstringDecryptDES(stringdecryptString,stringdecryptKey){try{byte[]rgbKey=Encoding.UTF8.GetBytes(decryptKey);byte[]rgbIV=Keys;byte[]inputByteArray=Convert.FromBase64String(decryptString);DESCryptoServiceProviderDCSP=newDESCryptoServiceProvider();MemoryStreammStream=newMemoryStream();CryptoStreamcStream=newCryptoStream(mStream,DCSP.CreateDecryptor(rgbKey,rgbIV),CryptoStreamMode.Write);cStream.Write(inputByteArray,0,inputByteArray.Length);cStream.FlushFinalBlock();returnEncoding.UTF8.GetString(mStream.ToArray());}catch{returndecryptString;}}
2015/8/1 9:44:08 51KB C#2013 DES 加密解密 asp.net
1
Geohash算法就是将经纬度编码,将二维变一维,给地址位置分区的一种算法此檔案為C語言實現函式庫使用介紹:1)編碼char*geohash_encode(doublelat,doublelng,intprecision);以所需精度獲取緯度和經度並前往正確的哈希值。
如果精度20,將使用默認值6。
2)解碼GeoCoordgeohash_decode(char*hash);生成一個分配的GeoCoord結構,其中包含從geohash解碼的緯度和經度。
GeoCoord還提供了geohash的邊界框(北、東、南、西)。
3)鄰居char**geohash_neighbors(char*hash);使用在hash處聲明的邊界框併計算8個相鄰框。
下面顯示了一個示例。
ezefxezs48ezs49ezefrezs42ezs43ezefpezs40ezs41前往的值是一個長度為8的char*數組。
值的相鄰位置如下所示,每個框代表數組的索引。
7016*2543
2019/8/15 1:33:09 63KB 地理信息編碼算法 地理信息GIS
1
(1)实现BF算法;(2)实现BF算法的改进算法:KMP算法和BM算法;(3)对上述3个算法进行时间复杂性分析,并设计实验程序验证分析结果。
2016/11/11 2:16:23 3KB BM KMP BF 串匹配
1
KMP模式串婚配指针不回退最快的字符串查找算法之一。
C++builder6调试通过。
2015/7/3 17:23:19 356KB KMP 模式串匹配 指针 不回退
1
共 356 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡