编译原理7.4布尔表达式的翻译
- 格式:ppt
- 大小:69.00 KB
- 文档页数:2
学号:0120910680328课程设计题目布尔表达式的翻译程序设计学院计算机学院专业软件工程班级0903姓名陈银指导教师何九周2012 年 1 月 2 日布尔表达式的递归下降翻译程序设计1引言“编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要的专业基础课。
编译原理这门课程蕴含着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用。
“编译原理”是一门实践性较强的课程,要掌握这门课程中的思想,就必须要把所学到的知识付诸实践。
而课程设计是将理论与实践相互联系的一种重要方式。
2概述2.1设计题目布尔表达式的递归下降翻译程序设计2.2设计目的课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,设计题中的问题比平时的练习题要复杂,也更接近实际。
编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。
2.3设计任务内容布尔表达式的文法:B → TB′B′→ and T B′|εT → FT ′T′→ or FT′|εF → not F |true|false |(B)| i rop i设计布尔表达式文法,给出该文法的属性文法,用递归下降分析法实现对布尔表达式的翻译,给出翻译的逆波兰式结果。
3设计环境与工具Visual C++4设计原则4.1基本方法在本程序中,输入一段布尔语句,使用递归下降的方法得到其推到过程,并利用递归下降翻译的方法的到四元式序列,最终根据生成的四元式序列分析得到逆波兰式。
4.2属性文法B → TB′ B’.in=T.typeB′→ and T B′ B’.in=T.type addtype(and,entry,B.in)B′→ε B’.val=εT → FT T.in=F.type.T′→ or FT′ T’.in=F.type addtype(or,entry,B.in)T′→ε T’val=εF → not F F.val= not.F.valF → true F.val=trueF → false F.val=falseF →(B) F.val=B.valF →i rop i F.val=i.lexval rop i.lexval addtype(i,entry,l.in)5简要的分析与概要设计在该程序中,总共包括3个主要功能,第一个功能是对输入的布尔语句进行递归下降的分析,从而得出从文法到该布尔语句的推导过程,第二个功能是使用递归下降的方法,该布尔语句的四元式序列,第三个功能对四元式序列进行扫描并分析每个四元式的结构特点,并据此将四元式转化为逆波兰式。
编译原理常用术语英汉对照表Lecture 1compiler编译器interpreter解释器preprocessor预处理器assembler汇编器linker链接器loader加载器analysis (analyze)分析lexical词法scanner扫描器syntax(syntactical)语法parser语法分析器semantic语义intermediate中间code generator代码生成器code optimizer代码优化器token词法单元symbol符号,字符source源target目标front (back) end前(后)端pass遍Lecture 2Instruction命令eliminate消除whitespace空白comments注释optional可选的attribute value属性值abstract抽象unit单元operator操作符identifier标识符punctuation标点符号synthesis综合pattern模式lexeme词素sequence序列character符号,字符instance实例buffer缓冲器pointer指针forward向前recognize识别regularexpression正则表达式Finite Automata有穷自动机convert转换alphabet字母表string字符串prefix前缀suffix后缀substring子字符串subsequence子序列union合集intersection交集concatenation链接closure闭包recursive递归inductive (induction)归纳algebraic代数的regular definition正则定义accept接受initial开始transitionfunction转换函数state状态deterministic确定的nondeterministic不确定的consume消耗Lecture 3-1context-free上下文无关terminal终结符号nonterminal非终结符号start symbol开始符号synonym同义词denote表示distinguish区别,成为convention惯例derive(derivation)推倒replace(ment)代替precise准确rewrite重写sentential form句型sentence句子equivalent等价leftmost/rightmost最左/最右graph图形,图order顺序interior内部label标号,标牌leaf (leaves)叶子final最终的constitute组成yield结果frontier边缘distinct不同的desirable期望的convenient方便的immediate立即alternative两者选一的propose提出Lecture 3-2predictive parse预测分析current symbol当前符号predictive parsetable预测分析表appear出现endmarker结束标记assume假设condition条件proper合适的。
第6章 属性文法和语法制导翻译7. 下列文法由开始符号S 产生一个二进制数,令综合属性v al 给出该数的值:试设计求S.val 的属性文法,其中,已知B 的综合属性c, 给出由B 产生的二进位的结果值。
例如,输入101.101时,S.val=5.625,其中第一个二进位的值是4,最后一个二进位的值是0.125。
【答案】11. 设下列文法生成变量的类型说明:(1)构造一下翻译模式,把每个标识符的类型存入符号表;参考例6.2。
【答案】第7章 语义分析和中间代码产生1. 给出下面表达式的逆波兰表示(后缀式):3. 请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。
【答案】间接码表:(1)→(2)→(3)→(4)→(1)→(5)→(6)4. 按7.3节所说的办法,写出下面赋值句A:=B*(-C+D ) 的自下而上语法制导翻译过程。
给出所产生的三地址代码。
【答案】5. 按照7.3.2节所给的翻译模式,把下列赋值句翻译为三地址代码: A[i, j]:=B [i, j] + C[A [k, l]] + d [ i+j] 【答案】6. 按7.4.1和7.4.2节的翻译办法,分别写出布尔式A or ( B and not (C or D) )的四元式序列。
【答案】用作数值计算时产生的四元式: 用作条件控制时产生的四元式:其中:右图中(1)和(8)为真出口,(4)(5)(7)为假出口。
7. 用7.5.1节的办法,把下面的语句翻译成四元式序列: While A<C and B<D do if A=1 then C:=C+1else while A ≦D do A:=A+2; 【答案】第9章 运行时存储空间组织4. 下面是一个Pascal 程序:当第二次( 递归地) 进入F 后,DISPLAY 的内容是什么?当时整个运行栈的内容是什么? 【答案】第1次进入F 后,运行栈的内容: 第2次进入F 后,运行栈的内容:第2次进入F 后,Display 内容为:5. 对如下的Pascal 程序,画出程序执行到(1)和(2)点时的运行栈。
编译原理课程英文词汇alphabet字母表symbol符号string串length长度catenation连接power方幂gather集合product乘积empty set空集closure 闭包program程序logic structure逻辑结构generating产生executing执行machine language机器语言instruction指令function函数assembler汇编程序interpreter解释程序translator翻译程序source language源语言finite有穷的source program源程序target language目标语言attribute属性possess占有preprocess预处理compiler编译程序break中断Intermediate language中间语言definition定义reconstructed重构normal正规character sequences 符号序列programming language程序设计语言operand操作数instead替换memory内存element元素high-level language高级语言object program目标程序address地址input输入output输出terminal终结符compilation编辑equivalence等价nonterminal非终结符recursion递归deterministic确定的nondeterministic非确定的Backus-Normal Form巴科斯范式syntax语法tree树expression表达式grammar文法automata自动机prefix前缀suffix后缀infix中缀identify识别identifier标识符analyses分析predigest化简symbol set符号集performed执行forecast预测state状态formula产生式conversion变换precedence优先simple简单handle句柄operator算符terminal state终态first state初态optimizer优化程序concatenation连接word单词alphabet字母表lexical词法scanner扫描器analyzer分析器syntax tree语法树symbol table符号表pass趟,遍regular expression正规表达式code generator代码生成器backdate回溯derivation推导educe推导derivation tree推导树path路径ambiguous二义性simple phrase简单短语context-sensitive上下文有关context-free上下文无关right-linear 右线形phrase-structured短语结构regular grammar文法direct derivation直接推导sentence句子sentential form句型root node根结点subtree子树semantic语义的terminal node端末结点attribute grammar属性文法canonical derivation规范推导top-down自上而下bottom-up自下而上viable prefix活前缀nondeterminate finite automata非确定的有穷自动机。
布尔表达式翻译为四元式序列布尔表达式是一种表示逻辑关系的形式,它由一系列的比较运算符和表达式构成,它们可以用来表示一个逻辑关系的真或假。
编译器可以把布尔表达式翻译成四元式序列,这种四元式序列可以让计算机更容易理解和执行程序。
本文将着重介绍如何把布尔表达式翻译成四元式序列,以及布尔表达式及其四元式序列之间的区别。
第一部分:布尔表达式布尔表达式是一种表达式,用来表达一个逻辑关系的真或假。
它由一些关键字和表达式组成,关键字包括“AND”、“OR”、“NOT”等;表达式是一个数值或者变量,用来表示逻辑关系的真或假。
比如,(A and B) (A or B)是一个布尔表达式,A和B分别代表真或假。
布尔表达式可以使用括号来表示优先级,以此来确定逻辑关系的真或假。
比如,(A and (B or C))示:A和(B或C)同时为真才为真,其中B或C优先处理。
第二部分:四元式序列四元式序列指一种表示功能的通用格式,由四个元素组成,分别是操作符、操作数和结果。
它的优点在于简洁、直观和高度可移植,可以用来快速的实现程序的目标。
将布尔表达式翻译成四元式序列,可以有效的提高程序的运行效率,同时也有助于计算机理解程序的逻辑。
一般来说,把布尔表达式翻译成四元式序列要经历以下几个步骤:1.简单的四元式表示布尔表达式中的每一个元素;2.表达式中的比较运算转换成对应的四元式形式;3.布尔表达式用括号分割,从而得到更直观的表示形式。
第三部分:布尔表达式和四元式序列的比较布尔表达式和四元式的区别在于,前者更加容易理解,主要用于表示逻辑关系;而后者则可以有效的提高程序运行的效率,只要把布尔表达式翻译成四元式就可以帮助计算机理解程序的逻辑运行了。
结论:布尔表达式是一种表示逻辑关系的形式,可以用来表示一个逻辑关系的真或假。
将布尔表达式翻译成四元式序列可以提高程序运行的效率,同时也可以更有效地帮助计算机理解程序的逻辑。
布尔表达式和四元式的区别在于,前者更加容易理解,而后者则可以提高程序运行的效率。
编译原理作业集第七章第七章语义分析和中间代码产⽣本章要点1. 中间语⾔,各种常见中间语⾔形式;2. 说明语句、赋值语句、布尔表达式、控制语句等的翻译;3. 过程调⽤的处理;4. 类型检查;本章⽬标掌握和理解中间语⾔,各种常见中间语⾔形式;各种语句到中间语⾔的翻译;以及类型检查等内容。
本章重点1.中间代码的⼏种形式,它们之间的相互转换:四元式、三元式、逆波兰表⽰;3.赋值语句、算术表达式、布尔表达式的翻译及其中间代码格式;4.各种控制流语句的翻译及其中间代码格式;5.过程调⽤的中间代码格式;6.类型检查;本章难点1. 各种语句的翻译;2. 类型系统和类型检查;作业题⼀、单项选择题:1. 布尔表达式计算时可以采⽤某种优化措施,⽐如A and B⽤if-then-else可解释为_______。
a. if A then true else B;b. if A then B else false;c. if A then false else true;d. if A then true else false;2. 为了便于优化处理,三地址代码可以表⽰成________。
a. 三元式b. 四元式c. 后缀式d. 间接三元式3. 使⽤三元式是为了________:a. 便于代码优化处理b. 避免把临时变量填⼊符号表c. 节省存储代码的空间4. 表达式-a+b*(-c+d)的逆波兰式是________。
a. ab+-cd+-*;b. a-b+c-d+*;c. a-b+c-d+*;d. a-bc-d+*+;5. 赋值语句x:=-(a+b)/(c-d)-(a+b*c)的逆波兰式表⽰是_______。
a. xab+cd-/-bc*a+-:=;a. xab+/cd-bc*a+--:=;a. xab+-cd-/abc*+-:=;a. xab+cd-/abc*+--:=;6. 在⼀棵语法树中结点的继承属性和综合属性之间的相互依赖关系可以由________来描述。