已知布尔表达式文法G[B]:B→BoT|T T→TaF|F F→nF|(B)|t|f (1) 文法G[B]是算符文法吗?(2) 若是,计算文法所有非终结符的FIRSTVT集和LASTVT集。(3) 构造算符优先关系表,并说明该文法是否为算符优先文法。
时间: 2023-06-25 12:04:21 浏览: 501
(1) 是算符文法。 因为B、T、F都是非终结符,且每个产生式的右侧只包含一个运算符。
(2)
- FIRSTVT(B)={n, (, t, f}
- FIRSTVT(T)={n, (, t, f}
- FIRSTVT(F)={n, (, t, f}
- LASTVT(B)={), t, f, o}
- LASTVT(T)={), t, f, a, o}
- LASTVT(F)={), t, f, a}
(3) 算符优先关系表如下:
| | n | ( | ) | t | f | a | o | $ |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| n | | < | | | | | | < |
| ( | < | < | = | < | < | | | |
| ) | | | | | | | | |
| t | < | < | | | | | < | |
| f | < | < | | | | | < | |
| a | < | < | < | < | < | | > | > |
| o | < | < | | | | < | > | > |
| $ | < | < | | < | < | | < | |
其中,"<"表示左边的运算符优先级低于右边的运算符,">"表示左边的运算符优先级高于右边的运算符,"="表示两边的运算符优先级相等。
该文法是算符优先文法,因为算符优先关系表中没有出现“< >”或“> <”情况。
阅读全文