怎样构造识别活前缀的DFA——编译原理

怎样构造识别活前缀的DFA

第一步 拓广文法

  1. 拓广文法的定义
    拓广文法即在原文法的基础上进行拓广。其拓广内容是给原文法添加一个,这个表示最后一次归约完成之后的分析成功
  2. 构造拓广文法的一个简单实例
    文 法 : E → a ∣ b 拓 广 文 法 : E ′ → E , E → a ∣ b 文法: E\rightarrow a|b \\ 拓广文法: E'\rightarrow E , E\rightarrow a|b Eab广EE,Eab

第二步 构造LR(0)项目集规范族

  1. 构造第一个状态集合 I 0 I_0 I0
    • 使 用 拓 广 文 法 中 添 加 的 表 达 式 ( 即 上 文 所 说 的 “ 头 ” ) 作 为 集 合 I 0 中 的 初 始 元 素 使用拓广文法中添加的表达式(即上文所说的 “头”)\\作为集合I_0中的初始元素 使广I0
    • ∀ a ∈ I ( a 为 表 达 式 ) , 如 果 a 具 有 以 下 形 式 \forall a \in I(a为表达式),如果a具有以下形式 aIaa
      A → α ⋅ B β , A\rightarrow \alpha ·B \beta, AαBβ
      其 中 α 和 β 可 能 为 : 终 结 符 , 非 终 结 符 , 空 串 ϵ B 为 非 终 结 符 且 其中\alpha和\beta 可能为:终结符,非终结符,空串\epsilon \\ B为非终结符且 αβϵB
      B → γ B\rightarrow \gamma Bγ
      则 将 则将
      B → ⋅ γ B\rightarrow ·\gamma Bγ
      加 入 I 0 加入I_0 I0
  2. 构造其他状态集合 I j I_j Ij
    • 根 据 I j − 1 中 ⋅ 在 每 个 表 达 式 中 的 位 置 找 到 ⋅ 后 的 所 有 可 能 符 号 ( 包 括 终 结 符 和 非 终 结 符 ) , 构 成 集 合 P 根据I_{j-1}中·在每个表达式中的位置找到·后的所有可能符号 \\ (包括终结符和非终结符),构成集合P Ij1P
    • ∀ ξ ∈ P , ∃ ( A → α ⋅ ξ β ) ∈ I j − 1 , 则 将 \forall \xi \in P,\exists (A\rightarrow\alpha ·\xi \beta) \in I_{j-1},则将 ξP(Aαξβ)Ij1
      A → α ξ ⋅ β A\rightarrow\alpha\xi ·\beta Aαξβ
      加 入 I j 加入I_j Ij
    • j 从 1 到 n 依 次 按 照 上 述 规 则 递 推 j 从1到n依次按照上述规则递推 j1n

第三步 构造DFA

依据已经构造好的状态集合和转换关系画图即可

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值