编译原理龙书学习记录(一)

编译器:程序,阅读以某一语言(源语言)编写的程序并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序。

 

编译器两部分:分析部分(前段),

把中间表示形式何符号表送入

综合部分(后端)。

============================================

1.2 一个编译器的结构

词法分析 lexical analysis 或 扫描 scanning

读入字符流   组成 词素lexeme 形成词法单元token <token-name,attribute-value>

语法分析syntax analysis 或 解析 parsing

形成语法树syntax tree

语义分析semantic analyzer

作用:1.检查源程序是否和语义定义的语义一致。

          2.收集类型信息。

重要部分 类型检查type checking:

中间代码的生成

代码优化

代码生成

(多个步骤组合成趟)

=============================================

1.3 程序设计语言的发展历程

 

1.4 构建一个编译器的相关科学

 

1.5 编译技术的应用

 

1.6 程序设计语言基础

 

静态static:在编译程序时候解决问题。

动态dynamic:只允许在运行程序的时候作出决定的策略 动态策略

???例1.3 不太懂

 

名字→(环境)→内存位置→(状态)→值

 

名字/标识符/变量

 

参数调用机制:

值调用:对实在参数求值或者拷贝。参数本身不会被改变。

引用调用:实在参数的地址作为相应的形式参数的值传递给被调用者。会对参数本身产生影响。

 

别名:两个形式参数指向同一位置。

 

理解:前半部分介绍了编译器的工作步骤,为后面几个章节的学习做大概的定位了解。

中间介绍了编译原理的应用和其他知识。后面学习了在编写程序的过程中关于变量的动态静态存储和调用,和之前在Cjava中学的差不多,但是讲的我晕乎乎的 = = 还算大概看懂了吧。

 

posted @ 2016-10-20 17:37  SJcnh_Yan  阅读(1220)  评论(0编辑  收藏  举报