编制程序,完成局部优化过程中的基本块划分。
给定一段代码,判定程序的入口语句,划分基本块,删除无用产生式和冗余节点。
1
人工智能植物识别产生式系统人工智能植物识别产生式系统人工智能植物识别产生式系统
2023/10/17 8:04:47 7.77MB 人工智能植物识别产生式系统
1
三地址代码是编译原理语法分析后的中间语言的一种,这是我刚完成的三地址代码生成器,符合的语法规则及其语义规则如下(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
设计内容及要求:设计一个语法制导翻译器,将算术表达式翻译成四元式。
要求:先确定一个定义算术表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。
对用户输入的任意一个正确的算术表达式,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。
2023/10/3 10:34:55 2KB 编译原理
1
第三次上机—语法分析1目的:熟练掌握自上而下的语法分析方法,并能用C++程序实现。
要求:1.使用的文法如下: E®TE¢ E¢®+TE¢|e T®FT¢ T¢®*FT¢|e F®(E)|id2.对于任意给定的输入串(词法记号流)进行语法分析,递归下降方法和非递归预测分析方法可以任选其一来实现。
3.要有一定的错误处理功能。
即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。
可以参考书上介绍的同步记号集合来处理。
可能的出错情况:idid*id,id**id,(id+id,+id*+id……4.输入串以#结尾,输出推导过程中使用到的产生式。
例如:输入:id+id*id#输出:E®TE¢T®FT¢F®idE¢®+TE¢T®FT¢……如果输入串有错误,则在输出中要体现是跳过输入串的某些记号了,还是弹栈,弹出某个非终结符或者是终结符了,同时给出相应的出错提示信息。
比如:idid*id对应的出错信息是:“输入串跳过记号id,用户多输入了一个id”;
id**id对应的出错信息是:“弹栈,弹出非终结符F,用户少输入了一个id”(id+id对应的出错信息是:“弹栈,弹出终结符),用户少输入了一个右括号(或者说,括号不匹配)”有余力的同学可进一步考虑如下扩展:1. 将递归下降方法和非递归预测分析方法都实现2. 在语法分析的过程中调用第二次上机的结果,即利用词法分析器来返回一个记号给语法分析器。
3. 编写First和Follow函数,实现其求解过程。
测试文法:A->BCDEB->aBA|εC->F|εD->b|c|εE->e|εF->d|ε
2023/9/19 0:58:21 10KB 递归 LL(1) 自上而下
1
高清英文PDF版。
DSL领域的丰碑之作,软件开发“教父”MartinFowler历时多年的心血结晶,ThoughtWorks中国翻译。
  全面详尽地讲解各种DSL及其构造方式,揭示与编程语言无关的通用原则和模式,阐释如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通。
《领域特定语言》是dsl领域的丰碑之作,由世界级软件开发大师和软件开发“教父”martinfowler历时多年写作而成,thoughtworks中国翻译。
全面详尽地讲解了各种dsl及其构造方式,揭示了与编程语言无关的通用原则和模式,阐释了如何通过dsl有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用dsl提供有效的决策依据和指导方法。
  全书共57章,分为六个部分:第一部分介绍了什么是dsl,dsl的用途,如何实现外部ds和内部dsl,如何生成代码,语言工作台的使用方法;
第二部分介绍了各种dsl,分别讲述了语义模型、符号表、语境变量、构造型生成器、宏和通知的工作原理和使用场景;
第三部分分别揭示分隔符指导翻译、语法指导翻译、bnf、易于正则表达式表的词法分析器、递归下降法词法分析器、解析器组合子、解析器生成器、树的构建、嵌入式语法翻译、内嵌解释器、外加代码等;
第四部分介绍了表达式生成器、函数序列、嵌套函数、方法级联、对象范围、闭包、嵌套闭包、标注、解析数操作、类符号表、文本润色、字面量扩展的工作原理和使用场景;
第五部分介绍了适应性模型、决策表、依赖网络、产生式规则系统、状态机等计算模型的工作原理和使用场景;
第六部分介绍了基于转换器的代码生成、模板化的生成器、嵌入助手、基于模型的代码生成、无视模型的代码生成和代沟等内容。
2023/9/14 16:33:38 5.53MB 领域特定语言
1
第一章、绪论,第二章:产生式,第三章:状态空间,第四章:语义网络、第五章:不确定问题的求解。



2023/8/24 14:36:57 2.27MB 天津大学 人工智能 课件
1
1.使用如下文法: E®E+T|T T®T*F|F F®(E)|id2.对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。
手工构造LR分析表,利用移进-归约分析算法(P71图3.12)输出(P73表3.8)对应的动作部分。
如:输入:id*+id/(id+id)#输出:移进按F->id归约按T->F归约移进error……3.要有一定的错误处理功能。
即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。
例如:从状态0开始的记号流为:bm将b移进之后,栈里的情况应该为:0b2此时查表发现action[2,m]=error输出打印:error把A和状态1相继压入栈,用户指针后移到FOLLOW(A)对应的元素继续分析。
4.利用P94页的表3.13的方式将错误进行分类提示,即给出具体的出错信息。
扩展:在已有文法的基础上再加上减法“-”和除法“/”对应的产生式构成最终的文法。
从而使得记号流可以处理带括号的加、减、乘、除四则运算。
2023/8/20 23:55:43 6KB 编译原理
1
基于产生式的动物识别系统,用MFC实现可视化功能。
《人工智能》大作业。
2023/6/4 13:55:08 112.05MB 算法 MFC
1
LR分析器工作过程算法描述:一个LR分析器的工作过程可看成是栈里的状态序列,已规约串和输入串所构成的三元式的变化过程。
分析开始时的初始三元式为(s0,#,a1a2……an#)其中,s0为分析器的初态;
#为句子的左括号;
a1a2……an为输入串;
其后的#为结束符(句子右括号)。
分析过程每步的结果可表示为(s0s1……sm,#X1X2……Xmai,ai+1……an#)分析器的下一步动作是由栈顶状态sm和现行输入符号ai所唯一决定的。
即,执行ACTION(sm,ai)所规定的动作。
经执行每种可能的动作之后,三元式的变化情形是:(1)若ACTION(sm,ai)为移进,且s=GOTO(sm,ai),则三元式变成:(s0s1……sms,#X1X2……Xmai,ai+1……an#)(2)若ACTION(sm,ai)={A→β},则按照产生式A→β进行规约。
此时三元式变为(s0s1……sms,#X1X2……XmA,aiai+1……an#)此处s=GOTO(Sm-r,A),r为β的长度,β=Xm-r+1……Xm。
(3)若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布分析成功。
(4)若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。
一个LR分析器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。
2023/5/15 20:36:36 12.74MB 编译原理实验 LR分析表 LR分析器
1
共 34 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡