【ARM】语法制导翻译简介

1、 文档目标

对语法制导翻译有个简单了解。


2、 问题场景

在使用编译器时,对于编译器的原理了解很少,整个编译过程分为词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成这 6 个步骤。

在这个过程中,词法分析和语法分析,语义分析都和原语言相关,而翻译就会涉及到中间代码,从而进行优化及向目标代码的生成。

因此关注翻译过程,能更好的理解编译和静态分析。


3、软硬件环境

1、软件版本:不涉及

2、电脑环境:不涉及


4、语法制导翻译

什么是语法制导翻译Syntax-directed translation?

简单地说,语法制导翻译(SDT)是把语法分析、语义分析和翻译过程结合在一起进行的翻译。

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


什么是上下文无关文法(context-free grammar)?

上下文无关文法(CFG)是指在计算机科学中,若一个形式文法G = (VT, VN, P , S )

VT :终结符集合

VN:非终结符集合

P :产生式集合

S :开始符号

上下文无关文法中的任意的产生式α → β 都属于产生式集合 P,α 属于非终结符集合VN。


再说回语法制导翻译,语法制导翻译基本思想是基于属性文法的处理过程,对单词符号串进行语法分析,构造语法分析树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各节点处按语义规则进行计算。

随着语法分析的进展,识别出一个语法结构,就对它的语义进行分析和翻译。


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


5、总结

语法制导翻译 SDT是一种基于语法分析的翻译方法,旨在确保翻译后的代码具有与源语言相同的结构和语义。这种方法的核心思想是通过在语法分析过程中嵌入特定的翻译动作,如计算表达式的值或生成中间代码,来指导翻译过程。