两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:no_morning_training:fayuanyu:compile [2020/05/13 01:40] 发源于 [处理工具] |
2020-2021:teams:no_morning_training:fayuanyu:compile [2020/05/13 17:45] (当前版本) 发源于 |
||
---|---|---|---|
行 14: | 行 14: | ||
- 代码流出 | - 代码流出 | ||
- | 本文将只涉及前4点的部分内容,作为潜在的可能对竞赛有用的工具 | + | 本文将只涉及前2点的部分内容,作为潜在的可能对竞赛有用的工具\\ |
+ | 甚至可能用在字符串题(做梦) | ||
=====词法分析===== | =====词法分析===== | ||
行 24: | 行 25: | ||
这些单词中一些(如标识符,数)有**语义值**,因此词法分析器也会附上这些信息 | 这些单词中一些(如标识符,数)有**语义值**,因此词法分析器也会附上这些信息 | ||
- | ====处理工具==== | + | ====正则表达式==== |
- | ===正则表达式=== | + | |
基本部分: | 基本部分: | ||
行 40: | 行 40: | ||
为了消除二义性,使用了规则**最长匹配** 和 **优先规则**。 为了压缩篇幅,这里不描述。 | 为了消除二义性,使用了规则**最长匹配** 和 **优先规则**。 为了压缩篇幅,这里不描述。 | ||
- | ===有限状态自动机=== | + | ====有限状态自动机==== |
实现正则表达式匹配: | 实现正则表达式匹配: | ||
行 49: | 行 49: | ||
为了保证最长匹配,需要记录上一次遇到的终态的位置 \\ | 为了保证最长匹配,需要记录上一次遇到的终态的位置 \\ | ||
- | ===非确定状态自动机=== | + | ====非确定状态自动机==== |
NFA(非确定状态自动机)可能有$\epsilon$的边\\ | NFA(非确定状态自动机)可能有$\epsilon$的边\\ | ||
它允许不输入字符的情况下转换状态 | 它允许不输入字符的情况下转换状态 | ||
行 70: | 行 70: | ||
有个方案可以求等价的最小自动机 | 有个方案可以求等价的最小自动机 | ||
+ | =====语法分析===== | ||
+ | ====上下文无关文法==== | ||
+ | ===推导=== | ||
+ | ===语法分析树=== | ||
+ | ===二义性=== | ||
+ | |||
+ | ====递归下降的语法分析==== | ||
+ | 预测分析 | ||
+ | LL(1)文法 | ||
+ | |||
+ | ====LR分析==== | ||
+ | ===LR(0)=== | ||
+ | ===LR(1)=== | ||
+ | |||
+ | =====例题(?)===== | ||
+ | [[http://uoj.ac/problem/98|UOJ:未来程序·改]] |