前言
本系列文章为观看b站视频以及b站up主@zst_2001系列视频所做的笔记,感谢相关博主的分享。如有侵权,立即删除。
视频链接:视频链接(注:文章中有关图片、以及网友的相关评论与总结等内容未标明出处均出自该视频,感谢大家的分享!)
b站up主页:b站up

重点掌握:正规式、表达式、传值与传址


编译方式下,在机器上运行的目标程序完全独立于源程序。



真题链接
- 编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的 符号表 中;对于可执行语句,则是 翻译成中间代码或目标代码。
- 对于高级语言源程序进行编译或解释处理的过程中,需要不断收集、记录和使用源程序中一些相关的类型和特征等信息,并将其存入 符号表 中。
- 解释方式不包含 目标代码生成阶段。
- 编译程序对C语言源程序进行语法分析时,可以确定 变量是否定义(或声明)。
- 编译程序分析源程序的阶段依次是 词法分析、语法分析、语义分析。
- 分配寄存器的工作在 目标代码生成 阶段进行。
- 判断程序语句的形式是否正确属于 语法分析 阶段的工作。
- 语法分析主要是分析 程序语句的结构是否合法。
- 词法分析 阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。
- 对高级语言源程序进行编译的过程中,有穷自动机(NFA或DFA)是进行 词法分析 的适当工具。
- 语法分析阶段的输入是 记号流。
- 若程序中的括号不配对,则会在 语法分析 阶段检查出错误。
- 类型检查在 语义分析 阶段处理。
- 若C程序表达式中引用了未赋初值的变量,则 可以编译并运行,但运行结果不一定是期望的结果。
- 某程序运行时陷入死循环,则可能的原因是程序中存在 动态的语义错误。
- 引入中间代码的好处:有利于进行与机器无关的优化处理。
- 常用的中间代码有 后缀式、三地址码、树 等。

真题链接
- 将高级语言源程序翻译成目标程序的是 编译程序。
- 与编译器相比,解释器 参与运行控制,程序执行的速度慢。



真题链接
- 大多数程序设计语言的语法规则用 上下文无关文法。
- 程序设计语言的大多数语法现象可用 上下文无关文法 描述。





正确答案:D、C
1)对文法进行替换可分析出来答案为D。
2)可以使用代入法来判断。

正确答案:C
依次带入选项,判断是否能够从初态到达终点即可。

正确答案:D
画出如上图相应的树结构,即可求解。
真题链接
- 表达式采用逆波兰表示时,利用 栈 进行求值。






真题链接
- 在引用调用方式下进行函数调用是将 实参的地址传递给形参。

真题链接
- 对于编译型语言处理过程为:预处理-编译-汇编-链接。