编译器:程序,阅读以某一语言(源语言)编写的程序并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序。
编译器两部分:分析部分(前段),
把中间表示形式何符号表送入
综合部分(后端)。
============================================
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 不太懂
名字→(环境)→内存位置→(状态)→值
名字/标识符/变量
参数调用机制:
值调用:对实在参数求值或者拷贝。参数本身不会被改变。
引用调用:实在参数的地址作为相应的形式参数的值传递给被调用者。会对参数本身产生影响。
别名:两个形式参数指向同一位置。
理解:前半部分介绍了编译器的工作步骤,为后面几个章节的学习做大概的定位了解。
中间介绍了编译原理的应用和其他知识。后面学习了在编写程序的过程中关于变量的动态静态存储和调用,和之前在C,java中学的差不多,但是讲的我晕乎乎的 = = 还算大概看懂了吧。