编译过程
分为解释型和编译型
编译型过程为 源程序=>词法分析=>语法分析=>语义分析=>中间代码生成=>代码优化=>目标代码生成=>目标程序
词法分析---正规式,有限自动机
语法分析---根据语言语法规则
语义分析---语义检查
目标代码生成---中间代码转低级语言代码,需要考虑硬件系统结构
词法错误:非法字符,关键字或标识符拼写错误
语法错误:语法结构出错,if...endif不匹配,缺分号
语义错误:死循环,零除数,其他逻辑错误
文法定义
一个形式文法是一个有序四元组G=(V,T,S,P),其中:
V:非终结符。不是语言组成部分,不是最终结果可理解为占位符
T:终结符。是语言的组成部分,是最终结果。
S:起始符。是语言的开始符号。
P:产生式。用终结符土带非终结符的规则。形如
![](https://img.haomeiwen.com/i11158238/0749136ad864e4c8.png)
语法推导树
一个语法树应具有以下特征:
1.每个节点都有一个标记,此标记是V的一个符号;
2.跟的标记是S;
3.若一个节点n至少有一个它自己除外的子孙,冰洁有标记A,则A肯定在中
4.如果节点n的直接子孙,从左到右的次序是节点,其标记分别是
,那么
,一定是P中的一个生产式
有限自动机
![](https://img.haomeiwen.com/i11158238/554249bc648f624f.png)
正规式
![](https://img.haomeiwen.com/i11158238/68d09070bab9080b.png)
表达式
![](https://img.haomeiwen.com/i11158238/8253fb20c7aee2d2.png)
函数调用
分为传值调用和传址调用
区别是传值调用调用的是形参,不改变原数据,而传址调用相反,会改变原数据
传址调用在声明变量名称时需要在前面加个*号
程序语言特点
![](https://img.haomeiwen.com/i11158238/036c82489f0e02c4.png)
网友评论