LR(0) 自动机活前缀识别

状态集合:

{0, 1, 2, 3, 4, 5, 6}

状态转移表:

| 状态 | a | b | c | d | $ | A | B | |---|---|---|---|---|---|---|---|| | 0 | - | 2 | - | 1 | err | 3 | 4 | | 1 | - | - | - | - | acc | - | - | | 2 | 5 | - | - | - | err | - | - | | 3 | - | - | - | 6 | err | - | - | | 4 | - | 7 | 8 | - | err | - | - | | 5 | - | 2 | - | 1 | err | 9 | 4 | | 6 | - | 7 | 8 | - | err | - | 10 | | 7 | - | - | - | - | r2 | - | - | | 8 | - | - | - | - | r3 | - | - | | 9 | 5 | - | - | - | err | 3 | 4 | | 10 | - | - | - | - | r1 | - | - |

状态解释:

  • 状态0:初始状态
  • 状态1:接受状态,即语法分析成功
  • 状态2:读入字符'b'的状态
  • 状态3:读入字符'd'的状态
  • 状态4:读入字符'a'的状态
  • 状态5:读入字符'a'后进入A推导出的状态
  • 状态6:读入字符'B'的状态
  • 状态7:读入字符'c'的状态
  • 状态8:读入字符'b'的状态
  • 状态9:读入字符'd'后进入A推导出的状态
  • 状态10:读入字符'B'后进入推导出E的状态

状态转移说明:

  • 状态0:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',转移到状态2
    • 读入'c',无法进行推导,转移失败
    • 读入'd',转移到状态1
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移到状态3
    • 读入'B',转移到状态4
  • 状态1:

    • 无法进行推导,转移失败
  • 状态2:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',转移失败(需要进行规约)
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
  • 状态3:

    • 读入'a',转移到状态9
    • 读入'b',无法进行推导,转移失败
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移到状态3
    • 读入'B',转移到状态4
  • 状态4:

    • 读入'a',转移到状态5
    • 读入'b',转移到状态7
    • 读入'c',转移到状态8
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
  • 状态5:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',转移失败(需要进行规约)
    • 读入'c',无法进行推导,转移失败
    • 读入'd',转移到状态9
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移到状态3
    • 读入'B',转移到状态4
  • 状态6:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',转移到状态7
    • 读入'c',转移到状态8
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
  • 状态7:

    • 无法进行推导,转移失败
    • 读入'b',转移失败(需要进行规约)
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
  • 状态8:

    • 无法进行推导,转移失败
    • 读入'b',转移失败(需要进行规约)
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
  • 状态9:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',转移失败(需要进行规约)
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移失败(需要进行规约)
    • 读入'A',转移到状态3
    • 读入'B',转移到状态4
  • 状态10:

    • 读入'a',无法进行推导,转移失败
    • 读入'b',无法进行推导,转移失败
    • 读入'c',无法进行推导,转移失败
    • 读入'd',无法进行推导,转移失败
    • 读入'$',转移成功(接受状态)
    • 读入'A',转移失败(需要进行规约)
    • 读入'B',转移失败(需要进行规约)
LR(0) 自动机活前缀识别 - 状态集合与转移表

原文地址: https://www.cveoy.top/t/topic/opSd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录