编译原理
编译:将高级语言(源语言)翻译成汇编语言或机器语言(目标语言)的过程。
编译器:将用高级语言写成的程序转换成等价的机器语言程序。
解释器:源程序的执行系统,工作结果是源程序的执行结果。
可执行代码:不需处理即可在计算机上运行的绝对地址代码。
语言:由文法开始符推出的所有句子构成的集合。
句子:不包含非终极符的句型。
上下文无关文法(CFG):产生式左部是一个非终结符,即A->B
过程活动记录(AR链):程序运行时,每调用一个函数就为其分配一段连续空间,用于存放该函数运行时的各种信息(过程活动记录AR),函数运行结束返回时,其活动记录就要释放掉;在当前AR中保存下一个AR首地址,这样形成了一个链表。
编译器的逻辑组成(编译器的工作内容):1、词法分析;2、语法分析;3、语义分析;4、中间代码生成;5、中间代码优化;6、目标代码生成。
程序文本:由符合语法的基本符号组成的字符串,叫做源程序或源代码。
Token:单词的内部表示,是程序语言中最小的语义单元,由Token Type 和 语义信息两部分组成。
单词的分类:关键词,标识符,常数,运算符 ,界限符。
DFA五元组:(西格玛,SS,S0,S*,大φ),图像法和表格法。
正则表达式:是一种描述正则语言更紧凑的方法。
二义性文法:若一个文法G存在某个句子,使得它有两棵语法树,则称二义性文法。
语义分析的任务:收集标识符的属性信息和语义检查。
产生式:描述了将终极符与非终极符组合成串的方法。
句型:对于一个上下文无关文法G,由文法开始,经过0步或者多步推导得到的符号串。
语法分析树:对于一个上下文无关文法G,语法分析树是满足如下条件的一棵树。(1)每个节点都有一个文法符号,根节点标有开始符,非叶节点标有非终结符。(2)若一个非叶节点A由n个儿子节点a1、a2、、、an,则一个有产生式A->a1,a2,,,,an。
过程活动记录(AR链)的内容:动态链指针,返回地址,返回值,层数,活动记录空间大小,寄存器状态,形参变量,局部变量,临时变量。
正则文法:它是2型文化的特例,即产生式右部最多有2个符号:A->a,A->aB,其中A,B属于终极符,a属于非终极符。
语法树:表达描述句子的一种方法。
短语:语法树子树的边缘。
简单短语:语法树中深度为2的子树的边缘。
句柄:最左简单短语。