【软考】上午题2-程序设计语言-中级软件设计师备考笔记
低级语言和高级语言
- 汇编和机器语言是低级语言
编译程序和解释程序
- 解释器:解释源程序不产生独立的目标程序,解释程序和源程序要参与到程序运行过程中
编译器:解释源程序产生独立的目标程序,解释程序和源程序不参与到程序运行过程中 基本成分
- 结构:顺序结构、选择结构、循环结构
编译器
- 词法分析
语法分析
语义分析
中间代码生成
代码优化
目标代码生成 - 前三步不可省略,前三也是解释器的步骤
- 符号表辅助语义正确检查和代码生成,存源程序一些符号的类型、特征等信息
词法分析
- 输入源程序视为多行字符串,根据语言词法规则识别符号是否符合规定,输出记号流
语法分析
- 输入记号流,检测语句有无语法错误,分析正确后构造语法树(分析树)
- 可以发现所有语法错误
语义分析
- 输入语法树,检测静态语义错误,比如把字符串赋值给整数变量(类型不匹配)
- 不能发现所有语义错误,动态语义错误运行时才能发现(比如除法除0)
目标代码生成
- 该阶段工作与具体极其密切相关
中间代码生成
- 与机器无关,可以跨平台,有利于做与机器无关优化处理和提高编译程序可移植性
- 最常用与汇编语言相似的三地址码,实现方式为四元式;其他有后缀式,树(图)等形式,三元式
正规式
- 语法分析工具
- 有点像正则表达式,*会代表闭包(可有0次或多次),|表或
有限自动机
- 词法分析工具
- 初态:被箭头指向的
终态:有两层圈 - 确定的有限自动机(DFA)每个状态识别字符后转移状态唯一
不确定的有限自动机(NFA)状态转移可不唯一 上下文无关文法
- 大多数程序设计语言的语法规则
后缀式 中缀式
- 中缀式 1 + 2
- 后缀式 1 2 +
- 优先级相同,从右向左处理
语法树
- 这树中序遍历得中缀式,后序遍历得后缀式
杂项
- 反编译不能得到源程序,只能得到汇编
- 可视化程序设计可能要写少量程序代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!