不论哪种方法,其本身的符号系统比较繁杂,其描述文本不易读,目前编译程序尚不便借助这些形式系统自动完成语义处理任务。现在很多编译程序采用语法制导翻译方法。这仍不是一种形式系统,但它是比较接近形式化的。这种方法使用属性文法为工具来说明程序设计语言的语义。一个属性文法包含一个上下文无关文法和一系列语义规则,这些语义规则附在文法的每个产生式上,在语法分析过程中,完成这些语义规则描述的动作,从而实现语义处理。 首先简单介绍属性文法。 所谓属性,其涉及的概念比较广泛,常用以描述事物或人的特征、性质,品质等等。比如,谈到一个物体,可以用"颜色"描述它,谈起某人,可以使用"有幽默感"来形容他。对编译程序使用的语法树的结点,可以用"类型"、"值"或"存储位置"来描述它。 |