编译器之语义分析
2017-02-20 18:13
260 查看
http://blog.csdn.net/robinsongsog/article/details/51970878
semantic: 语言的意义
编译器的语义分析阶段将变量与其用法关联起来,检查每个表达式是否有正确的类型,还有, 将抽象的语法翻译成更简单的形式以
方便生成机器语言(码)。
要知道这些函数,变量的意义时,就去这个表里查。
每一个局部变量都有其作用域(scope). 举个例子, let D in E end
所有在D里面声明的变量、类型,还有函数只能在E结束之前是可见的,相应的,语义分析到达一个作用末尾时,后续的就直接丢弃处理。
我们将多个这种绑定叫做环境(environment), 用箭头 |-> 表示,比如, {g |->string, a|-> int|, 其函义为a是一个整型变量,g是一个字符串
型变量。
举一个简单的例子:
semantic: 语言的意义
编译器的语义分析阶段将变量与其用法关联起来,检查每个表达式是否有正确的类型,还有, 将抽象的语法翻译成更简单的形式以
方便生成机器语言(码)。
符号表
符号表将标识符和其类型、位置关联起来,当我们去处理变量,函数的声明时,就是将这些信息组织(绑定)起来,放在表里,当需要知道这些函数,变量的意义时,就去这个表里查。
每一个局部变量都有其作用域(scope). 举个例子, let D in E end
所有在D里面声明的变量、类型,还有函数只能在E结束之前是可见的,相应的,语义分析到达一个作用末尾时,后续的就直接丢弃处理。
我们将多个这种绑定叫做环境(environment), 用箭头 |-> 表示,比如, {g |->string, a|-> int|, 其函义为a是一个整型变量,g是一个字符串
型变量。
举一个简单的例子:
相关文章推荐
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- 扩展iQuery使其支持多种编程语言(三) – 兼编译器的语义分析简介
- Tiny语言编译器之语义分析
- 手工打造编译器之语义分析1
- 手工打造编译器之语义分析2
- 自己动手开发编译器(十一)语义分析
- 编译器之语义分析
- 扩展iQuery使其支持多种编程语言(上) – 兼编译器的词法分析简介
- NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型
- 【龙书笔记】编译器前端之语法分析涉及的基本概念
- 语义分析的一些方法(上篇)
- 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
- 用R对Twitter用户的编程语言语义分析
- 手工打造编译器之词法分析1
- paip.语义相关是否可在 哈米 的语义分析中应用
- Java进行语义相似度分析
- Java进行语义相似度分析
- atitit.自己动手开发编译器and解释器(1) ------词法分析--attilax总结
- 编译原理结构框架7语义分析与中间代码生成