语法制导定义(SDD)
语义分析的概念
语义分析用于检查程序是否符合语言的语义规则,比如类型规则、变量使用规则、函数调用规则、属性访问规则等。语法分析不能检查语义,因为语法分析基于CFG(Context-Free Grammar)上下文无关文法,而语义分析需要和语法元素的上下文密切相关。
完全相同的语句在不同上下文中可以具有不同的语义
同时语义分析对于程序中的构造(函数定义、语句、表达式等)根据其对应的CFG文法结构赋予其语义,检查语义是否符合语言的规则。
我们可以使用CFG引导语义的分析:CFG的非终结符号代表了语言的某个构造,程序设计语言可以由更小的构造组合而成。一个构造的语义可以由小构造的含义综合而来,也可以从附近的构造继承而来。
语法制导的定义
Syntax- Directed Definition(SDD)是上下文无关文法和属性/规则的组合:
属性和文法符号相关联,按照需要来确定各个文法符号需要哪些属性
规则和产生式相关联
SDD三要素:文法、属性、规则
属性可以视为语义的具象化表示:类型、值、名字、地址等
一个分析树结点和它的分支对应一个产生式规则,而对应的语义规则确定了这些结点上属性的取值和计算。基于SDD,我们可以在一个程序的分析树上进行语义信息的计算。
Last updated