语法制导翻译

语法制导翻译 是指一种源语言代码的翻译完全由 语法分析器 驱动的 编译器 的实现方法。

一个常见的语法制导翻译方法是将输入字符串通过把相应的动作附加到每一条语法规则上的方法翻译为一连串的动作。[1] 因此,对于一个基于某语法的字符串的解析会产生一个对于规则的应用序列。语法制导分析提供了一种将语义附加到任何一种语法上的简单方法。

概述 编辑

语法制导翻译的根本上是在一个上下文无关文法中透過向结果中添加动作(action)来工作的,从而形成语法制导定义(Syntax-Directed Definition)。[2] 动作是指,一个结果在推导过程中被使用的时候,将要被执行的步骤或过程。 一个嵌入了将要执行的动作的语法规则,称为一个语法制导翻译计划 (有时简称为“翻译计划”)。

语法中的每个符号可以有一个属性,即一个将被关联到符号的值。常见的属性可能包含变量类型、表达式的值,等等。 给出一个符号和一个属性t,符号的属性可以通过 X.t 来引用。

因此,给出动作和属性,语法规则可以透過每个符号的属性来應用動作和传递信息,从而将语法规则用于翻译某语言上的字符串。

元编译器 编辑

早期元编译器在其描述中使用了语法驱动翻译和语法制导翻译这两个术语。在其输出代码中具有元编程的语言特性。

参见元编译器META II 以及 TREE-META

参见 编辑

参考文献 编辑

  1. ^ Gurari, Eitan M. Syntax-Directed Translation Schemes (SDTS's). [2017-10-16]. (原始内容存档于2012-07-28). 
  2. ^ Aho, Alfred V. Compilers: Principles, Techniques, & Tools. Boston: Pearson/Addison Wesley, 2007.