编译程序:完成从源程序到目标程序的翻译工作。
编译的各个阶段:源程序——词法分析——语法分析——语义分析——中间代码生成——代码优化——目标代码生成
解释程序: 也是一种翻译程序,源程序输入之后,解释一句就提价给计算机执行一句,不形成目标程序
翻译:在计算机中放置一个能由计算机直接执行的翻译程序,它以某种源程序作为翻译或加工的对象,当计算机翻译程序时,将之翻译为等价的目标程序。
编译程序的前端:词法分析、语法分析、语义分析、中间代码生成、与机器无关的中间代码优化
编译程序的后端:与机器相关的代码优化、目标代码生成,相关错误的处理,符号表的访问
文法的定义:文法G定义为四元组(Vn ,Vt,P,S)Vn:非终结符;Vt:终结符;P:规则(A——>B)集合;S:开始符,是非终结符。
运算和推导的定义:
大写字母是非终结符,小写字母是终结符
句型、语言、句子的定义:
文法描述的语言是该文法一切句子的集合。
句型:
二型文法:
三型文法:
最左推导和最右推导:
句型分析方式:包括自顶向下和自底向上
文法的二义性:是否有两颗从同一个结点出发的语法树
句柄的定义:一个句型的最左直接短语(规范分析中,最先被规约的子串)
最左素短语:
优先函数:
属性文法:
综合属性:
右部的综合属性
A——>a的语义动作b:=f(c1,c2,c3……),b是A的某个属性
综合属性是对父节点的属性进行赋值,自底向上
左部的继承属性
A——>a的语义动作b:=f(c1,c2,c3……),b是产生式右部的某个属性
继承属性是对子节点的属性进行赋值,自顶向下
S-属性文法:只包含综合属性
L-属性文法:
四元式:
三元式:
局部优化:在一个基本快范围内进行的优化(包含一个入口和一个出口)
全局优化:在一个程序过程(C语言中叫函数,这里叫过程)范围内进行的优化
基本块:程序中一个顺序执行的语句序列,只有一个入口语句和出口语句。
循环优化:对循环中的代码进行优化