编译原理
编译原理
Shio编译原理
🚧🚧🚧 暂待施工🚧🚧🚧
绪论
编译系统由哪些部分组成?
阶段程序指的是 特定阶段进行处理的程序
守护程序指的是 守护程序是指在整个编译程序的生命周期中一直在运行的程序
上面的定义是我自己瞎取的, 方便理解记忆
阶段程序
- 词法分析程序
- 语法分析程序
- 语义分析程序
- 中间代码生成程序
- 代码优化程序
- 目标代码生成程序
守护程序
- 信息表管理程序
- 错误检查和处理程序
四元式
规则:
- (运算符, 运算对象, 运算对象, 临时变量)
- 先处理优先级高的一部分, 然后向左遍历
- 每一次运算结果用一个临时变量存起来, 以便后续使用
逆波兰式
规则:
- 遇到字母直接写到答案里
- 遇到符号, 压入栈中
- 遇到成对的括号才出栈
- 新加入的符号, 优先级必须大于(没有等于)原栈顶优先级, 否则栈中原符号出栈
答案没有括号
例题:
A+B*(C-D)+F/(C-D)^N |
答案
ABCD-*+FCD-N^/+ |
前置知识
文法
产生式(规则)
非终结符 定义为 终结符
左部 右部
句型 规则的右部
句子 完全由终结符组成的句型称为句子
语言 句子的集合
闭包合正闭包
最左推导和最右推导
所有短语
(简单短语)直接短语
句柄
正规式转正规文法
NFA, DFA, 最小化
初态集 不含集合终态
终态集 含有集合终态0
覆盖
题目类型
句子推导
最左推导
最右推导
语法树的短语
简单优先和算符优先
非叶子结点的短语
层数为2的非叶子结点的直接短语
包含终结符, 出自己意外不含其他素短语 素短语
最左非叶子结点的句柄
文法二义性
需要一定的灵感
证明是否有二义性
找一个句子, 看从左和从右开始推导看语法树是否不一样
文法生成语言和已知语言生成文法
文法及文法的类型(0型、1型、2型、3型文法)?
NFA
和DFA
???
子集法 (
NFA-
>DFA
)划分法
LL(1)
自顶向下分析
消除文法左递归和回溯
构造
LL(1)
的分析表对字符串
#adbc
进行语法分析First集 首非终结符集合
Follow集合 紧跟, 开始符 Follow集有
#
评论
匿名评论隐私政策