软件设计师——程序设计语言
目录
低级语言和高级语言
编译程序和解释程序
正规式,词法分析的一个工具
有限自动机
编辑
上下文无关法 编辑
中后缀表示法
杂题
编辑
低级语言和高级语言
编译程序和解释程序
计算机只能理解由0、1序列构成的机器语言,因此高级程序设计语言需要翻译,担负这一任务的程序称为“语言处理程序”。语言之间的翻译形式有多种,基本方式为汇编、解释和编译。
用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。如果源程序是用汇编语言编写的,则需要一个汇编程序将其翻译成目标程序后才能执行。如果源程序是用某种高级语言编写的,则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行。
解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行;而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。
解释器:翻译源程序时不生成独立的目标程序
解释程序和源程序要参与到程序的运行过程中
编译器:翻译时将源程序翻译成独立保存的目标程序
机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的运行过程
便于为数据合理分配存储单元
便于对参与表达式计算的数据对象进行检查
便于规定数据对象的取值范围及能够进行的运算
词法分析
词法分析的输出是记号流
语法分析
输入是记号流,输出是语法树,白话就是看你在编写代码的时候有没有编写错误,比如忘了分号,少了括号,没有给类型
语义分析
输入是语法树,检查源程序是否包含静态语义错误,白话就是看你逻辑上有没有错误
目标代码生成
这个工作与具体的机器相关
常见动态语义错误:死循环、零除数、数字下标越界、堆栈溢出、指针异常等
后三三数
正规式,词法分析的一个工具
有限自动机
确认转移状态确不确定,就看它是的每一状态的转移是不是唯一的,唯一的就是确定,不唯一就是不确定
上下文无关法
中后缀表示法
杂题
python是解释型语言