1、低级语言:机器语言、汇编语言。
2、机器语言:010101......。
3、汇编语言:ADD x,1 => x = x+1,SUB x,1 => x = x-1,MOV x,2 => x=2。
4、高级语言:Java、C、C++、Python等(int x = 2)。
5、高级语言的翻译形式:汇编、解释(脚本语言:Python、PHP、Js)、编译。
6、源程序:高级语言或汇编语言编写的程序。
7、源程序x=2 => 解释/编译(或生成中间代码:.java => .javac => .class) => 机器语言010101。
8、解释器:翻译源程序时不生成独立的目标程序,解释程序和源程序要参与到程序的运行过程中。
9、编译器:翻译时将源程序翻译成独立保存的目标程序,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的运行过程。
10、程序设计语言的控制结构:顺序结构、选择结构、循环结构。
11、程序中的数据必须具有类型的原因:便于为数据合理分配存储单元;便于对参与表达式计算的数据对象进行检查;便于规定数据对象的取值范围及能够进行的运算。
12、八种基本数据类型及取值范围
13、真 & 真 = 真,else 假;假 || 假 = 假,else 真;! 真 = 假;! 假 = 真。
14、函数的定义包括:函数首部、函数体。
15、值调用:将实参的值传递给相应的形参(形参不能向实参传递信息)。传值调用的实参可以是变量、常量和表达式。
16、引用调用:当形参为引用类型时,形参名实际上是实参的别名,对形参的访问和修改实际上是针对相应实参所做的访问和改变。引用调用的实参必须有地址(变量),不能是常量和表达式。
17、编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
18、解释方式:词法分析、语法分析、语义分析。
19、编译器和解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换,编译器方式中中间代码生成和代码优化可省略。
20、符号表:不断收集、记录和使用源程序中一些相关符号的类型和特征信息,并将其存入符号表中。记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成。
21、词法分析:输入(源程序),输出(记号流),主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。
22、语法分析:输入(记号流),输出(语法树/分析树),主要作用是对各条语句的结构进行合法性分析,分析程序中的句子结构是否正确。
23、语义分析:输入(语法树/分析树),主要作用是进行类型分析和检查,不能发现程序中所有的语义错误,可以发现静态语义错误,不能发现动态语义错误,动态语义错误运行时才能发现。
24、目标代码生成:与具体的机器密切相关,寄存器的分配处于目标代码生成阶段。
25、常见的中间代码:后缀式、三地址码、三元式、四元式、树(图)等形式。
26、中间代码:不依赖具体的机器,有利于进行与机器无关的优化处理和提高编译程序的可移植性,可以将不同的高级程序语言翻译成同一种中间代码,中间代码可以跨平台。
27、正规式与正规集。
28、有限自动机:词法分析的工具,能正确地识别正规集。
29、确定的有限自动机DFA:对每一个状态来说识别字符后转移的状态是唯一的。
30、不确定的有限自动机NFA:对每一个状态来说识别字符后转移的状态是不确定的。
31、上下文无关文法:被广泛用于表示各种程序设计语言的语法规则。
32、优先级:优先级相同,从右向左运算。
33、后缀式(ab?)、中缀式(a?b),栈(先进后出,后进先出)。
34、中序遍历(左根右) => 中缀式(二叉树),后序遍历(左右根) => 后缀式/逆波兰式。
35、优先级顺序:()、>、∧、∨。