章节 | 章节 |
---|---|
01-计算机组成原理与体系结构 | 07 - 法律法规与标准化与多媒体基础 |
02 - 操作系统基本原理 | 08 - 设计模式 |
03 - 数据库系统 | 09 - 软件工程 |
04 - 计算机网络 | 10 - 面向对象 |
05 - 数据结构与算法 | 11 - 结构化开发与UML |
06 - 程序设计语言与语言处理程序基础 | 12 - 下午题历年真题 |
End - 二周目上午真题 | End – 二周目下午真题 |
End - 临考快速记忆 | Java工程师的进阶之路 |
一、低级语言和高级语言
二、编译程序和解释程序
- 解释器:翻译时不生成独立的目标程序,解释程序和源程序都参与程序运行过程
- 编译器:翻译时独立生成目标程序,源程序和编译程序不再参与目标程序的运行过程
二、程序设计语言的成分
四、传值与传地址
引用调用举例:
五、 编译、解释程序翻译阶段
反编译:编译的逆过程,将可执行文件转换成等价的汇编程序(无法获得源程序)
源程序—》词法分析-》记号流–》语法分析–》分析树(语法树)–》语义分析
六、符号表
七、编译过程
7.1、词法分析
源程序----->词法分析----->记号流----->语法分析----->分析树(语法树)----->语义分析
输入:源程序,输出:记号流
词法分析阶段的主要作用是:分析构成程序的字符;及由字符按照构造规则构成的符号是否符合程序语言的规定
7.2、语法分析
输入:记号流;输出:语法树(分析树)
语法分析阶段可以发现程序中所有的语法错误
语法分析阶段的主要作用是:对各条语句的结构进行合法性分析;分析程序中的句子结构是否正确
7.3、语义分析
输入:语法树(分析树)
语义分析阶段的主要作用是进行类型分析和检查
- 语法分析阶段可以发现程序中的所有语法错误
- 语义分析阶段不能发现程序中所有的语义错误
- 语义分析阶段可以发现静态语义错误
- 不能发现动态语义错误,动态语义错误运行时才能发现
7.4、目标代码生成
目标代码生成阶段的工作与具体的机器密切相关
- 寄存器的分配工作处于目标代码生成阶段
7.5、中间代码生成
常见的中间代码有:后缀式、三地址码、三元式、四元式和树(图)等形式。
- 中间代码与具体的机器无关(不依赖具体的机器),可以将不同的高级程序语言翻译成同一种中间代码。中间代码可以跨平台。
- 因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。
八、正规式
*代表0~n个,这里b必须有一个
九、有限自动机
有限自动机是词法分析的一个工具,它能正确地识别正规集
- 确定的有限自动机(DFA):对每一个状态来说识别字符后只有一个转移状态
- 不确定的有限自动机(NFA):对每一个状态来说识别字符后有一个以上的转移状态
反着的3代表无须识别直接通过
十、上下文无关文法
大多数程序设计语言地语法规则用上下文无关文法描述
十一、中缀后缀表达式
中缀式:a + b
后缀式(逆波兰式):ab+
后缀式利用栈进行求值
语法树的后缀式为后序遍历、中缀式为中序遍历
十二、杂题精讲