Administrator
Administrator
Published on 2024-09-23 / 1 Visits
0
0

词法分析器(lexer)

词法分析器(lexer)

词法分析器 = 正则表达式 + DFA/NFA

有限状态机

image

接受输入a,由状态s1转到s2,继续接收内容,直到reject状态

image

发生状态转换,但是输入指针不变

确定性有限自动机(DFA)

  1. 单一输入有确定状态转换
  2. 不存在空状态转换

非确定性有限自动机(NFA)

  1. 单一输入多种转换
  2. 存在空状态转换

epsilon闭包。

指所有只通过空状态转换能抵达的状态机的集合,仅限于NFA

词法分析器实现流程

  1. 预处理,展开宏,去除排版字符
  2. 使用正则表达式实现关键词等等的匹配
  3. 根据语言特点绘制出NFA逻辑图,从头到尾读取
  4. 将NFA转换为DFA(可选)
  5. 根据DFA写状态转换表(二位数组或一维数组+指针(复用子数组压缩空间))
  6. 根据状态转换表循环读取预处理后的源代码,转换为token交给下一层parser

Comment