为最左侧和最右侧派生推出字符串“abb”


问题

考虑使用 LMD 和 RMD 派生出“abb”字符串的语法

   S->AB/ ε

   A-> aB

   B-> Sb

解决方案

我们必须使用上下文无关语法。

派生是一系列产生规则,用于获取输入字符串。

在解析过程中,我们必须做出两个决策,如下所示 −

  • 我们必须决定替换哪个非终结符。
  • 我们必须决定使用哪个产生规则替换哪个非终结符。

有两种选项可以决定用产生规则替换哪个非终结符 −

  • 最左侧派生
  • 最右侧派生

最左侧派生

从左到右扫描输入并用产生规则替换它。

The given production rules are:
   S->AB/ ε
   A-> aB
   B-> Sb
Let’s derive the string “abb” using LMD
   S->AB
   ->aBB {A->aB}
   ->aSbB {B->Sb}
   ->abB {S-> ε}
   ->abSb {B->Sb}
   ->abb {S-> ε}
Which is our final string

最右侧派生

从右到左扫描输入并用产生规则替换它。

The given production rules are:
   S->AB/ ε
   A-> aB
   B-> Sb
Let’s derive the string “abb” using RMD
   S -> AB
   ->ASb {B->Sb}
   ->Ab {S-> ε}
   ->aBb {A->aB}
   ->aSbb {B->Sb}
   ->abb {S-> ε}
Reached our final string

更新于: 2021 年 6 月 12 日

2K+ 查看次数

开始职业生涯

完成课程获得认证

开始
广告