构造词法分析器(从正规式到词法分析器)的一般方法和步骤:

  • 设计正规式:
    用正规式描述模式;
  • 构造一个NFA:
    为每个正规式构造一个NFA,它识别正规式所表示的正规集;
  • 确定化:
    将构造的NFA转换成等价的DFA
  • 最小化:
    优化DFA,使其状态数最少
  • 从优化后的DFA构造词法分析器。

一、构造一个NFA(Thompson 算法)

将正规式分解成小部分,再组合
从正规式到词法分析器

例2.11 用Thompson算法构造正规式r=(a|b)*abbNFA N(r)

从正规式到词法分析器
从正规式到词法分析器

二、确定化(从NFA到DFA)

1.概念

  • 状态全体:即状态的集合
  • smove(S, a):从状态集S出发,标记为a的下一状态全体(即状态集)。与move(s, a)的唯一区别:用状态集取代状态
  • ε-闭包(T):从状态T出发,不经任何字符达到的状态全体。
    要满足:
    (1) T中所有状态属于ε-闭包(T);
    (2) 任何smove(ε-闭包(T),ε)属于ε-闭包(T);
    (3) 再无其他状态属于ε-闭包(T)。

ε-闭包(T)的示例:
根据定义,ε-闭包({s2})应包括:
s2自身 {s2} (1)
s4 {s2, s4} (2)
s5 {s2, s4, s5}(3)

从正规式到词法分析器

相关文章:

  • 2021-09-05
  • 2022-03-05
  • 2021-10-16
猜你喜欢
  • 2021-10-16
  • 2022-12-23
  • 2021-10-07
  • 2021-05-19
相关资源
相似解决方案