題組內容

四、考慮下列文法,大寫字母代表非終結符(non-terminal),其餘皆為終結符 (terminal),E 為開始變數。 
E → E + T | E − T | T 
T→ T * F | T / F | F 
F → ( E ) | identifier | number

⑵使用最左推導(leftmost derivation),推導出 1 *(2 + 3)一句。(6 分)

詳解 (共 2 筆)

Freedom
Freedom
詳解 #3697278
2019/11/30


(共 1 字,隱藏中)
前往觀看
hchungw
hchungw
詳解 #6146001
2024/06/27

步驟

  1. 開始變數 EEE:

EEE

  1. 推導最左邊的 EEE 為 TTT:

E→TE \rightarrow TE→T

  1. 推導最左邊的 TTT 為 T∗FT * FT∗F:

T→T∗FT \rightarrow T * FT→T∗F

  1. 推導最左邊的 TTT 為 FFF:

T→F∗FT \rightarrow F * FT→F∗F

  1. 推導最左邊的 FFF 為 1:

F→1F \rightarrow 1F→1

T→1∗FT \rightarrow 1 * FT→1∗F

  1. 推導最左邊的 FFF 為 (E)( E )(E):

F→(E)F \rightarrow ( E )F→(E)

T→1∗(E)T \rightarrow 1 * ( E )T→1∗(E)

  1. 推導最左邊的 EEE 為 E+TE + TE+T:

E→E+TE \rightarrow E + TE→E+T

T→1∗(E+T)T \rightarrow 1 * ( E + T )T→1∗(E+T)

  1. 推導最左邊的 EEE 為 TTT:

E→T+TE \rightarrow T + TE→T+T

T→1∗(T+T)T \rightarrow 1 * ( T + T )T→1∗(T+T)

  1. 推導最左邊的 TTT 為 FFF:

T→F+TT \rightarrow F + TT→F+T

T→1∗(F+T)T \rightarrow 1 * ( F + T )T→1∗(F+T)

  1. 推導最左邊的 FFF 為 2:

F→2F \rightarrow 2F→2

T→1∗(2+T)T \rightarrow 1 * ( 2 + T )T→1∗(2+T)

  1. 推導最左邊的 TTT 為 FFF:

T→FT \rightarrow FT→F

T→1∗(2+F)T \rightarrow 1 * ( 2 + F )T→1∗(2+F)

  1. 推導最左邊的 FFF 為 3:

F→3F \rightarrow 3F→3

T→1∗(2+3)T \rightarrow 1 * ( 2 + 3 )T→1∗(2+3)

最終推導結果

E→T→T∗F→F∗F→1∗F→1∗(E)→1∗(E+T)→1∗(T+T)→1∗(F+T)→1∗(2+T)→1∗(2+F)→1∗(2+3)E \rightarrow T \rightarrow T * F \rightarrow F * F \rightarrow 1 * F \rightarrow 1 * ( E ) \rightarrow 1 * ( E + T ) \rightarrow 1 * ( T + T ) \rightarrow 1 * ( F + T ) \rightarrow 1 * ( 2 + T ) \rightarrow 1 * ( 2 + F ) \rightarrow 1 * ( 2 + 3 )E→T→T∗F→F∗F→1∗F→1∗(E)→1∗(E+T)→1∗(T+T)→1∗(F+T)→1∗(2+T)→1∗(2+F)→1∗(2+3)

這樣,我們使用最左推導成功推導出 1 * (2 + 3)。

ㅤㅤ
ㅤㅤ
ㅤㅤ