3.1 词法分析的作用
从源程序的字符串中找到logic unit逻辑单元,又称语法单元(token)
- token: 语法单元,以一个语法单元名和一个可选属性组成
- <id, 2> : 标识符,其详细信息在符号表地址为2的地方
- <number, 100>
- <add_op>
- pattern: 模式,一个token的词素可能有的形式,可以匹配一个或多个字符串,如“ 所有整数 ”的模式
- lexeme :词素,源程序的一个字符序列,与某个模式匹配
3.2 正规式
正则表达式(正规式regular expression)表示一种特定的模式 pattern。
正规式不能表达所有字符串
如 anban
符合正规式r的所有字符串集合称为r定义的语言,写作L®。
其中包含所有的字符集合叫alphabet字母表,写作Σ
ε表示空字符串
三种运算符
- 选择 | ,L(r|s) = L®∪L(s)
- 连接,如ab,并列就表示连接, (a|b)c = (ac) | (bc)
- 重复/闭包 , a = ε,a,aa,……
优先级: * > 连接 > |
转义字符(escape character) :\
定义正规式:
- 可自定义:digit -> 0|1|2|3|4|5|6|7|8|9
digit digit*- 可用的延伸定义
【0-9】 = 0|1|2|3|4|5|6|7|8|9
【A-Za-z】
r+ = r r*
r? = r | ε_
3.3 状态转换图
状态转换图:描述状态间的转换关系。
结点表示状态,边表示转换条件,双线圈表示结束状态
延伸:程序实现(见文末)
3.5 有限状态自动机 finite state automata
-
有限自动机分类
- NFA non-deterministic finite automata 非确定有限自动机
- DFA deterministic finite automata 确定有限自动机
NFA
ε-转换:不消耗任何字符的转换
因为存在ε-转换,所以一个字串可能有多种接受路径(如下图abb被接收,可能在NFA中以abb,abεb接收)。