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