个性化阅读
专注于IT技术分析

自动机推导

本文概述

推导是一系列生产规则。它用于通过这些生产规则获取输入字符串。在解析期间,我们必须做出两个决定。这些如下:

  • 我们必须确定要替换的非终端。
  • 我们必须确定替换非终端设备的生产规则。

我们有两个选择来决定将哪些非终端与生产规则一起放置。

1.最左推导

在最左侧的推导中,将扫描输入,并用生产规则从左到右替换输入。因此,在最左侧的推导中,我们从左到右读取输入字符串。

例:

生产规则:

E = E + E
E = E - E
E = a | b

输入值

a - b + a

最左边的推导是:

E = E + E
E = E - E + E
E = a - E + E
E = a - b + E
E = a - b + a

2.最右推导

在最右边的推导中,将扫描输入,并用从右到左的生产规则替换输入。因此,在最右推导中,我们从右到左读取输入字符串。

生产规则:

E = E + E
E = E - E
E = a | b

输入值

a - b + a

最右边的推导是:

E = E - E
E = E - E + E
E = E - E + a
E = E - b + a
E = a - b + a

当我们使用最左边的导数或最右边的导数时,我们可能会得到相同的字符串。这种推导类型不影响字符串的获取。

推导示例

范例1:

使用给出的CFG推导字符串“ abb”表示最左派和最右派,

S → AB | ε
A → aB
B → Sb

解:

最左边的导数:

最右边的推导:

范例2:

使用由给出的CFG推导字符串“ aabbabba”,以表示最左派和最右派,

S → aB | bA
 S → a | aS | bAA
S → b | aS | aBB

解:

最左边的导数:

S
aB            S → aB	
aaBB          B → aBB
aabB          B → b
aabbS         B → bS
aabbaB        S → aB
aabbabS       B → bS
aabbabbA      S → bA
aabbabba      A → a

最右边的推导:

S
aB            S → aB	
aaBB          B → aBB
aaBbS         B → bS
aaBbbA        S → bA
aaBbba        A → a
aabSbba       B → bS
aabbAbba      S → bA
aabbabba      A → a

范例3:

使用由给出的CFG推导字符串“ 00101”,用于最左派和最右派,

S → A1B
A → 0A | ε
B → 0B | 1B | ε

解:

最左边的导数:

S
A1B
0A1B
00A1B
001B
0010B
00101B
00101

最右边的推导:

S
A1B
A10B
A101B
A101
0A101
00A101
00101

赞(0)
未经允许不得转载:srcmini » 自动机推导

评论 抢沙发

评论前必须登录!