个性化阅读
专注于IT技术分析

编译器设计 第4页

布尔表达式

半瓶木阅读(983)评论(0)赞(0)

布尔表达式有两个主要目的。它们用于计算逻辑值。它们还用作使用if-then-else或while-do的条件表达式。 考虑语法 该relop用<, >, <, >表示。 AND和OR保持关联。与AND和最后OR相比,...

赋值语句的翻译

半瓶木阅读(874)评论(0)赞(0)

在语法定向翻译中, 赋值语句主要处理表达式。表达式的类型可以是实数, 整数, 数组和记录。 考虑语法 以上语法的翻译方案如下: 生产规则 语义动作 S→id:= E {p = look_up(id.name);如果p≠nil, 则发射(p ...

三元组-srcmini

三元组

半瓶木阅读(988)评论(0)赞(0)

三元组具有三个字段来实现三个地址代码。三元组字段包含运算符的名称, 第一个源操作数和第二个源操作数。 在三元组中, 各个子表达式的结果由表达式的位置表示。在表示表达式时, Triple等效于DAG。 图:三元组字段 例: 三个地址代码如下:...

四元组

半瓶木阅读(838)评论(0)赞(0)

四元组有四个字段来实现三个地址代码。四元组字段分别包含运算符的名称, 第一个源操作数, 第二个源操作数和结果。 图:四倍字段 例 三地址代码如下: 这些语句用四倍数表示, 如下所示: 操作符 来源1 来源2 目的地 (0) uminus b...

三地址代码

半瓶木阅读(2005)评论(0)赞(0)

三地址代码是中间代码。优化编译器使用它。 在三地址代码中, 给定的表达式分为几个单独的指令。这些说明可以轻松地翻译成汇编语言。 每个三地址代码指令最多具有三个操作数。它是赋值和二进制运算符的组合。 例 GivenExpression: 三地...

解析树和语法树

半瓶木阅读(2049)评论(0)赞(0)

当你创建一个分析树时, 它包含的细节比实际需要的更多。因此, 编译器解析语法树非常困难。以下面的解析树为例: 在解析树中, 大多数叶子节点是其父节点的单个子节点。 在语法树中, 我们可以消除这些额外的信息。 语法树是解析树的变体。在语法树中...

后缀表示法

半瓶木阅读(956)评论(0)赞(0)

如果给定的语言是表达式, 则后缀表示法是中间代码的有用形式。 后缀表示法也称为“后缀表示法”和“反向修饰”。 后缀表示法是语法树的线性表示。 在后缀表示法中, 任何表达式都可以明确地编写而没有括号。 编写x和y之和的普通(infix)方式是...

中间代码-srcmini

中间代码

半瓶木阅读(882)评论(0)赞(0)

中间代码用于将源代码转换为机器代码。中间代码位于高级语言和机器语言之间。 图:中间代码生成器的位置 如果编译器直接将源代码转换为机器代码而不生成中间代码, 则每台新机器都需要完整的本机编译器。 中间代码使所有编译器的分析部分保持相同, 这就...

语法定向翻译的实现-srcmini

语法定向翻译的实现

半瓶木阅读(883)评论(0)赞(0)

语法直接转换是通过构造一个解析树并以从左到右的深度优先顺序执行动作来实现的。 SDT通过解析输入来实现, 并生成一个解析树作为结果。 例 生产 语义规则 S→E $ {printE.VAL} E→E + E {E.VAL:= E.VAL +...

语法定向翻译方案

半瓶木阅读(821)评论(0)赞(0)

语法定向翻译方案是上下文无关的语法。 语法指导的翻译方案用于评估语义规则的顺序。 在翻译方案中, 语义规则嵌入在作品的右侧。 括号中的括号表示要执行动作的位置。它写在产品的右侧。 例 生产 语义规则 S→E $ {printE.VAL} E...