三地址代码是编译原理语法分析后的中间语言的一种,这是我刚完成的三地址代码生成器,符合的语法规则及其语义规则如下(S→ifCthenS1elseS2,这条规则没有加,其余都已完成,也许还有bug,欢迎大家给予指正):产生式 语义规则S→id=E S.code=E.code||gen(id.place’:=’E.place)S→ifCthenS1 C.true=newlabel;C.false=S.next;S1.next=S.next;S.code=C.code||gen(E.true’:’)||S1.codeS→ifCthenS1elseS2 C.true=newlabel;C.false=newlabel;S1.next=S2.next=S.next;S.code=C.code||gen(E.true’:’)||S1.code||gen(‘goto’,S.next)||gen(E.false’:’)||S2.codeS→whileCdoS1 S.begin=newlabel;C.true=newlabel;C.false=S.next;S1.next=S.begin;S.code=gen(S.begin’:’)||C.code||gen(E.true’:’)||S1.code||gen(‘goto’S.begin);C→E1>E2 C.code=E1.code||E2.code||gen(‘if’E1.place’>’E2.place’goto’C.true)||gen(‘goto’C.false)C→E1<E2 C.code=E1.code||E2.code||gen(‘if’E1.place’<’E2.place’goto’C.true)||gen(‘goto’C.false)C→E1=E2 C.code=E1.code||E2.code||gen(‘if’E1.place’=’E2.place’goto’C.true)||gen(‘goto’C.false)E→E1+T E.place=newtemp;E.code=E1.code||T.code||gen(E.place’:=’E1.place’+’T.place)E→E1-T E.place=newtemp;E.code=E1.code||T.code||gen(E.place’:=’E1.place’-’T.place)E→T E.place=T.place;E.code=T.codeT→F T.place=F.place;T.code=F.codeT→T1*F T.place=newtemp;T.code=T1.code||F.code||gen(T.place’:=’T1.place’*’F.place)T→T1/F T.place=newtemp;T.code=T1.code||F.code||gen(T.place’:=’T1.place’/’F.place)F→(E) F.place=E
2023/10/15 21:58:03 3KB 三地址 编译原理 语法分析器
1
原程序分为.cpp文件与.h文件运行时请分开源程序可直接运行源程序已经包含了词法分析与三地址代码生成程序源代码
2023/7/18 6:01:16 9KB 编译原理 C语言 词法分析
1
编译原理第6次上机将输入代码转化为三地址代码
2023/4/13 0:50:02 8KB 编译原理 上机 三地址代码
1
内含代码+报告题目:选择部分C言语的语法成分,设计其词法分析程序、语法语义分析程序。
要求:设计并实现一个一遍扫描的词法语法语义分析程序,将多条简单赋值语句翻译成三地址代码,要求有一定的出错提示和错误恢复功能。
2020/8/11 1:05:28 145KB 编译原理 综合性实验 代码 C语言
1
简单的编译原理程序,实现笼统语法树的绘制和三地址代码的输出
2018/5/23 6:42:49 19.61MB 编译原理 语法树 三地址代码
1
编译原理语义分析器,实现分析部分C言语的语法成分,将其翻译成三地址代码
2021/3/7 13:36:39 11KB 编译原理 语义分析器 代码
1
实验分为词法分析程序与三地址代码生成程序两部分。
实验一1. 词法正规式描述、变换后的正规文法、形态图2. 词法分析的数据结构与算法思考题1. 词法分析能否采用空格来区分单词?2. 程序设计中哪些环节影响词法分析的效率?如何提高效率?实验二1. 语法制导定义2. 改写后的产生式集合3. 化简后的语法图4. 递归子程序的算法5. 三地址代码生成器的数据结构6. 程序结构的说明思考题1.生成的三地址代码可否直接输出(不采用数据结构来实现属性code)?2.如何保证四则运算的优先关系和左结合性?
2022/9/6 16:30:20 114KB 编译原理 实验报告
1
应用之前的词法和语法分析器的东西做的具体要求见word文档用turboc3.0写的别的应该都能打开
2022/9/6 8:55:18 31KB 三地址 生成器 编译原理
1
词法分析程序的设计与完成自顶向下的语法分析—递归子程序法语法制导的三地址代码生成程序
2022/9/2 21:23:59 806KB 编译原理
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 钉钉 钉钉打卡