lexical analyise
词法单元=词法单元名+可选属性值词素:与某个词法单元的模式匹配,并被词法分析器识别为该词法单元的一个实例。如果一个单词和任何一个模式都不匹配,进行错误恢复。
错误的模式:
恐慌模式:一直删,直到遇到一个合理的词法单元。删除下一个字符插入一个遗漏的字符正则表达式
可以使用的字符叫做符号(symbols)对于模式$r$的语言集合称作$L(r)$符号的集合称作字符表,写作$\sum$e.g. $L(a) = \{a\}$
e.g. $L(\xi) = \{ \xi \}$
r|s,整体匹配$r$能够匹配的串或$s$能够匹配的串。
$L(a|b) = L(a) \lor L(b)$
rs,匹配$r$紧接着$s$能够匹配的串
$L((a|b)c) = L(ac) \lor L(bc)$
r*,匹配r模式的任意次。
$L(a*) = \xi \lor L(a) \lor L(aa) \lor L(aaa) …$
$L((ab)*) = \xi \lor L(ab) \lor L(abab) …$
$L((a|b)*) = \xi \lor L(a) \lor L(b) \lor L(ab) \lor L(aabbbaaa)…$
重复 > 连接 > 选择
* > connect > |
表达元符号使用转义字符 \\
Ambiguity
关键字和表示符的冲突,关键字的识别在前,然后是表示符运算符匹配采用最长子串优先e.g.
12DO99I=1,10DO99I=1.10先前看多个字符,看到,和.才知道是循环还是赋值。
Transition diagram
状态转换图:描述状态之间的转换关系。开始状态,接收状态(双线圆圈)
使用状态转换表表示
状态模式是否是接受状态advanced 是否保留 优势:实现不冗余劣势:表可能很大Finite Antomata: 描述算法的执行流程。
e.g. 上面的状态转换图
非确定的有限自动机(NFA)确定的有限自动机(DFA)NFA
有字母表,状态集合,状态装欢
$S \times (\sum U \{ \xi \} \to \rho(S))$