运算符文法中的优先级关系是什么?


对于运算符文法中的终结符 a 和 b,我们可以有以下优先级关系:

  • a =. b(优先级相同) - 如果产生式的右边形式为 α a β b γ,其中 β 可以是 ε 或单个非终结符,则 a =. b。

这里,α 和 γ 可以是任何字符串。

示例 - 在文法中,S → m A c B e d

将 mAcBed 与 αaβbγ 进行比较

α = mA,a = c,β = B,b = e,γ = d

ΑAβbγ
mACBed

因此,将 a 与 c 比较,将 b 与 e 比较,我们得到 c =.e。

我们还可以为 a 和 b 制作不同的组合。

在文法 S → m A c Bed 中

α = ε,a = m,β = A,b = c,γ = Bed

ΑAβbγ
ΕMAcBed

因此,将 a 与 m 比较,将 b 与 c 比较

∴ m =. c

  • a<.b(小于)

如果产生式的右边形式为 α a A β 且 A ⟹+ γb$,其中 γ 是 ε 或单个非终结符,则 a <.b。

示例 - 在文法 S → m A c D 中

                                        A → i

将 m A c D 与 α a A β 比较,将 A → i 与 A → γb$ 比较

ΑAAβ
ΕMAcD
A →Γb$
A →Eiε

∴   α = ε,a = m,A = A,β = cD

∴        γ = ε,

且    b = i

∴  应用规则,

a <. b 表示 m <. i

  • a .> b(大于)

如果产生式的右边形式为 αAbβ 且 A ⟹+ γa$,其中 $ 是 ε 或单个非终结符,则 a .> b。

示例 - 在文法 S → m A c D 中

                                          A → i

将 m A cD 与 α a bβ 比较,将 A → i 与 A → γa$ 比较

ΑAbβ
MAcD


Α →Γa$
Α →Eiε

∴ α = m,A = A,b = c,β = D

将 i 与 γa $ 比较

∴ γ = ε,a = i,$ = ε

∴ 应用规则,

a .> b 表示 i .> c。

终结符之间的优先级关系也可以用语法树表示 -

计算运算符优先级关系的算法

输入 - 运算符文法

输出 - 终结符和符号之间的优先级关系。

方法

  • 开始
  • 对于每个产生式 A → B1,B2,… … … . Bn

                            对于 i = 1 到 n – 1

                 如果 Bi 和 Bi+1 都是终结符,则

                         设置 Bi = Bi+1

                 如果 i ≤ n − 2 且 Bi 和 Bi+2 都是终结符,且 Bi+1 是非终结符,则

                         设置 Bi = Bi+2

                 如果 Bi 是终结符 & Bi+1 是非终结符,则对于 LEADING (Bi+1) 中的所有 a

                         设置 Bi <. a

               如果 Bi 是非终结符 & Bi+1 是终结符,则对于 TRAILING (Bi) 中的所有 a

                         设置 a . > Bi+1

  • 结束

更新于: 2021年10月29日

471 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.