一、二章
1、翻译程序 能够把一种语言装换成另一种语言
2、编译程序 源语言是高级语言,编译成低级语言的翻译程序。
3、编译程序的结构
词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。
语法分析器,简称分析器,对单词符号串进行语法分析,识别出各类语法的单位,最终判断输入串是否构成语法上正确的程序。
语法分析与中间代码产生器,按照语义规则对语法单位进行语义分析并把他们翻译成一定形式的中间代码。
优化器,对中间代码进行优化处理
目标代码生成器 把中间代码翻译成目标代码
4.词法,规定字母表如何形成字符串。
语法,规定字符串如何形成程序
5.高级语言分类:强制式语言:例:C
应用式语言
基于规则的语言
面向对象语言
6.编译时是否要类型检查:*静态类型语言(C,C++,java);
*动态类型语言(Python(有很多函数可以直接引用),Ruby,PHP)
7.表达式*表达式的形式(前缀后缀中缀)
*表达式中的运算符(算数,关系逻辑,优先级,结合性)
*运算符的代数性质(交换律,结合律等)
8.支持过程的嵌套定义:PASAL
不支持过程的嵌套定义(C,C++,java)
9.数据类型:基本数据类型,构造数据类型,自定义数据类型
10.形式语言鸟瞰
0形文法(短语文法)a->b
a属于(VNvVT)* 且至少有一个非终结符,而b属于(VNvVT)* 。
1形文法
a->b
其中|a|<=|b|, S-> ε 除外,但S不得出现于任何产生式的右部
2形文法
A->b
A为非终结符,b为终结符和非终结符组成的符号串,可以是空串
3形文法
该文法的产生式满足:
A-》aB 或 A-》Ba
A为非终结符, a为终结符组成的符号串,可以是空串
11.通过列语法树可以了解文法是否有二义性,或者L(G)结果
两周的时间学习了前两章的内容主要是编译程序结构和语法语义,语法树等,感觉这门学科跟以前的学科有一定的联系,但是联系不是很大,学习方式也不是很一样,有点像高数,涉及了不少计算类的问题,语法树方面有点数据结构的里的分支树之类的感觉。需要很细心的去学习,并且需要背的东西也不少,做课后题在对概念的理解方面很有用。