1.调用
值调用:将实参的值传递给相应的形参,单向。实参可以是任意变量和表达式
引用调用:形参名实际上是实参的别名,函数对形参的访问和修改实际上是对实参进行的访问和修改。
2.编译方式与解释方式
解释程序:直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。
编译程序则是将源程序翻译为目标语言程序。
源程序和编译程序不参与目标程序执行过程。其中,中间代码生成和代码优化不是每个编译器都必须的
3.出错处理
静态错误:
语法错误:单词拼写错误、标点符号错、表达式中缺少操作数,括号不匹配
静态语义错误:语义分析时发现运算符与运算对象类型不合法
动态错误:也称动态语义错误,发生于程序运行时。包括:变量取零时做除数、引用数组元素下标错误。
4.语法分析方法
上下文无关方法
自顶向下语法分析方法:消除文法的左递归、提取公共左因子、LL(1)文法、递归下降分析法、预测分析法
自底向上语法分析方法:也称移进-归约分析法,包括:LR分析法
5.中间代码生成形式
后缀式(逆波兰式)
等同于二叉排序树的后序遍历顺序
x:=(a+b)*(c+d) 其后缀式为xab+cd*:=
树形表示
画成二叉树,其中符号为根节点,符号两遍的数值为子节点。从优先级最高的表达式为最底部的树。
三元表达式
(符号,元素1,元素2)
x:=(a+b)*(c+d)其三元表达式为:①(+,a,b) ② (+,c,d) ③(*,①,②) ④(:=,③,x)
四元式表示
(符号,元素1,元素2,运算结果)
x:=(a+b)*(c+d)其四元表达式为:①(+,a,b,t1) ②(+,c,d,t2) ③(*,t1,t2,t3) ④(:=,t3,_,x)
6.文法
0型文法---短语文法,α至少含有一个非终结符
1型文法---上下文有关文法,|β|>=|α|
2型文法---上下文无关文法,α是非终结符
3型文法---正规文法,右线性(A→α|αB)或左线性(A→α|Bα)只能满足一个
VN-非终结符,VT-终结符,( 并 )*-闭包