程序设计语言分类
命令式和结构化程序设计语言(过程式) | Fortran,PASCL,C语言...... |
面向对象程序设计语言 | Java,C++,C#...... |
函数式程序设计语言 | lisp,scala |
逻辑型程序设计语言 | Prolog |
脚本语言 | PHP,js,Python |
低级语言 面向机器的语言 由0、1组成的机器指令序列或汇编语言
可读性差,难以修改和维护
高级语言 面向应用程序的语言 Java,C,C++,Python......
接近人类语言,提高程序设计效率
解释型 不产生目标程序;效率低;灵活性好;可移植性好
编译型 生成目标程序;效率高;灵活性差;可移植性差
编译程序过程
词法分析:对构成源程序的字符串扫描、分解,识别成单词,删除无用信息
语法分析:在词法分析的基础上,根据语法规则将单词分解成各类语法单位
通过语法分析确定整个语句串是否构成语法正确的程序
词法,语法分析本质上是对源程序结构分析。
语义分析:检查是否存在语义错误,收集类型信息供后面代码生成阶段使用。
分为:静态分析;动态分析两个部分
中间代码:不依赖于具体计算机 表现形式如下
后缀式(逆波兰式)
树型表示
三元式
四元式
错误类型
静态错误 编译时出现,语法错误;静态语义错误
动态错误 程序运行时出现,变量取0做除数;引用数组下标越界
例题:()阶段的主要任务是对各条语句的结构进行合法性分析
语法分析器,以单词符号作为输入,分析是否符合语法规则,检查逻辑结构。