语法制导翻译概述

文章目录

  • 部分概念
    • 语义翻译
    • 语法制导翻译
  • 语法制导翻译的基本思想
  • 语法制导翻译的相关概念
    • 语法制导定义(Syntax-Directed Definitions,SDD)
    • 语法制导翻译方案(Syntax-Directed Translation Scheme,SDT)
  • SDD与SDT
    • SDD
    • SDT

部分概念

语义翻译

语义分析的结果通常用中间代码来表示,于是语义分析与中间代码生成这两个步骤合称语义翻译

语法制导翻译

可以在语法分析的同时进行语义翻译,这一技术称为语法制导翻译

注:语法制导翻译使用CFG(上下文无关文法)来引导对语言的翻译,是一种面向文法的翻译技术。

语法制导翻译的基本思想

  • 如何表示语义信息?
    • 为CFG中的文法符号设置语义属性,用来表示语法成分对应的语义信息
    • 例如对于一个变量,它的语义属性可以有变量的值,变量的类型等等。
  • 如何计算语义属性?
    • 文法符号的语义属性值使用与文法符号所在产生式(即语法规则)相关联的语义规则来计算的。
    • 对于给定的输入串x,构建x的语法分析树,病利用与产生式(语法规则)相关联的语义规则来计算分析树中个节点对应的语义属性值

语法制导翻译的相关概念

将语义规则同语法规则(产生式)联系起来要涉及两个概念。

语法制导定义(Syntax-Directed Definitions,SDD)

  • SDD是对上下文无关文法(CFG)的推广
    • 将每个文法符号和一个语义属性集合相关联
    • 将每个产生式和一组语义规则相关联,这些规则用于计算该产生式中各文法符号的属性值。
  • 如果X是一个文法符号,aX的一个属性,则用X.a来表示属性a在某个标号为X的分析树节点上的值。(X可以为终结符或非终结符)

语法制导翻译方案(Syntax-Directed Translation Scheme,SDT)

  • SDT是在产生式右部嵌入了程序片段的CFG,这写程序片段称为语义动作。按照惯例,语义动作放在花括号内。

语法制导翻译概述_第1张图片

注:一个语义动作在产生式中的位置决定了这个动作的执行时间。

SDD与SDT

SDD

  • 是关于语言翻译的高层次规格说明
  • 隐蔽了许多具体实现细节,使用户不必显式的说明翻译发生的顺序。

SDT

  • 可以看做是对SDD的一种补充,是SDD的具体实施方案。
  • 显式的指明了予以规则的计算顺序,以便说明某些实现细节。

你可能感兴趣的:(编译原理,语法制导翻译,编译原理)