词法分析
功能:
根据词法规则识别及组合单词,进行词法检查
对数字常数完成 数字字符串 -->二进制数值 转换
删去空格字符和注释
单词种类: 保留字, 标识符, 常数, 分界符
单词内部形式: 单词类别 + 单词值
单词类别: 按单词种类分类: 标识符, 无符号常数(整), 无符号浮点数, 布尔常数, 字符串常数, 保留字, 分界符.
保留字和分界符采用一符一类
常用状态图来作词法分析
先将正则表达式转化为非确定自动机(NFA: Non-deterministic Finite Automata)(存在某一个状态,对于同一个输入有不同的结果)
再将非确定自动机转化为确定自动机(DFA: Deterministic Finite Automata)
将确定自动机简化(直到不存在等价状态): 利用一致性状和蔓延性状态不断"分区",最终还在一个分区里的状态即可以简化
画图以及程序
状态图中: 双圈表示"终止符",圈内一般是非终止符,起始圈是新加进去的.
正则文法 和 正则表达式 的相互转化:
- .
- .
- .
对于二义性问题:
- 最长匹配原则, 有更长则识别更长的
- 优先匹配原则, 规则序列越前优先级越高, 写规则序列时要注意
NFA的确定化:
集合的闭包: (是自动机,是的状态集一个子集)
若,则.
若,则从出发经过任意条弧而能到达的任何状态都属于.
是集合的闭包:
是从出发,沿弧到达的状态所组成的集合.
.