Attribute Grammar
为上下文无关文法赋予语义。
如何基于 CFG 做上下文相关分析?依靠语法分析树上的有序信息流动。
按照从左到右的深度优先顺序遍历语法分析树,关键点在于:
在语法分析过程中实现属性文法:
$$
B \rightarrow \blue{X}\red{\{a\}}Y
$$
- 语义动作嵌入的位置决定了何时执行该动作
- 基本思想: 一个动作在它左边的所有文法符号都处理过之后立刻执行
语法制导定义
Syntax-Directed Definition, SDD
一个上下文无关文法和属性及规则的结合
- 每个文法符号都可以关联多个属性
- 每个产生式都可以关联一组规则
- SDD 唯一确定了语法分析树上每个非终结符节点的属性值
- SDD 没有规定以什么方式、什么顺序计算这些属性值
- $T.val = T_1.val \times F.val$ 只确定依赖关系
Annotated AST
注释 (annotated) 语法分析树: 显示了各个属性值的语法分析树
综合属性 Synthesized Attribute, SYN