程序语言基本上可以分为三大类:

一段程序用 JAVA字节码 表示

一个虚拟机器可以用以下三部分建模:
处理器可以用自己写的数据结构建模;
内存就更好办了,用一个数组表示一段存储

一台机器就可以如上new出来
语法制导具体实现:
对LR的栈再次进行扩充:
捆绑:符号栈、状态栈、语义值栈
语义值栈中放的是与符号栈中符号相关的一些语义值


上面这个是人为设计的,由上面这个我们可以得到下面这个

这里没听懂……
语法分析树+语义分析 = 中间表示
现阶段,我们知道语法分析树和中间表示(汇编机器码),反推语义分析
属性文法是对CFG的扩展,扩展了属性和属性方程(函数)



这就是在语法制导下 完成语义分析

语义分析我们使用的时候一般是已经给出来了属性文法,根据属性文法进行语义分析比较简单;但是设计属性文法是一件比较难的事儿。
属性的值被绑定时间不是一样的:



语义分析相对于语法分析貌似是原来的句子变成含有真正意义的值。


综合属性:某节点属性依赖于所有子节点
继承属性:某节点属性依赖于父节点和兄弟节点(不是综合属性的就是继承属性)
原文:https://www.cnblogs.com/fennleo/p/13324160.html