运算符文法中的优先级关系是什么?
对于运算符文法中的终结符 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 | γ |
| mA | C | B | e | d |
因此,将 a 与 c 比较,将 b 与 e 比较,我们得到 c =.e。
我们还可以为 a 和 b 制作不同的组合。
在文法 S → m A c Bed 中
α = ε,a = m,β = A,b = c,γ = Bed
| Α | A | β | b | γ |
| Ε | M | A | c | Bed |
因此,将 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$ 比较
| Α | A | A | β |
| Ε | M | A | cD |
| A → | Γ | b | $ |
| A → | E | i | ε |
∴ α = ε,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$ 比较
| Α | A | b | β |
| M | A | c | D |
| Α → | Γ | a | $ |
| Α → | E | i | ε |
∴ α = 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
- 结束
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP