我是LL(1)解析的新手,我正在尝试弄清楚如何为该语言创建一个解析表:
S → Saa|b
和
S-> A|B
A-> aa
B-> bb
和
S → AB
A → aa
B → bb
答案 0 :(得分:3)
我将向您展示第一个语法的完整程序。告诉我你是否有任何方面需要更深入地研究。
S→Saa | B'/ P>
S→bS'
S'→aaS'| ε
不需要这种语法。
------------------------------------
| A → α | FIRST(α) | FOLLOW(A) |
------------------------------------
| S → bS' | a | $ |
------------------------------------
| S' → aaS' | a | $ |
------------------------------------
| S' → ε | ε | $ |
------------------------------------
for each prodution A → α
for each a ∈ FIRST(α)
add production A → α to M[A,a]
if ε ∈ FIRST(α) then
for each b ∈ FOLLOW(A)
add A → α to M[A,b]
结果:
-------------------------------------
| | a | b | $ |
-------------------------------------
| S | | S → bS' | |
-------------------------------------
| S' | S → aaS' | | S' → ε |
-------------------------------------
语法是LL(1)。这是其他语法的结果。
1.
-------------------------------------
| | a | b | $ |
-------------------------------------
| S | S → A | S → B | |
-------------------------------------
| A | A → aa | | |
-------------------------------------
| B | | B → bb | |
-------------------------------------
2.
-------------------------------------
| | a | b | $ |
-------------------------------------
| S | S → AB | | |
-------------------------------------
| A | A → aa | | |
-------------------------------------
| B | | B → bb | |
-------------------------------------