Контекстно-свободные языки. Свойства и распознаватели КС-языков. Преобразование КС-грамматик. КС-грамматики в нормальной форме, страница 9

1,2 {q,1,S,l} |¾(1) {q,1,T,S1}

раскроем нетерминал T

3 |¾(1) {q,1,E,S1T1}

раскроем нетерминал E

4|¾(1) {q,1,(S),S1T1E1}

первый символ – не “(”

5|¾(4) {b,1,(S),S1T1E1}

выберем след. альтернативу для E

6|¾(6,1) {q,1,a,S1T1E2}

первый символ совпал, сдвиг головки

7|¾(2) {q,2,l,S1T1E2a}

в стеке пусто, но i¹n+1 – возврат

8|¾(3) {b,2,l,S1T1E2a}

возвращаем “a”  из стека возврата в  L1

9|¾(5) {b,1,a,S1T1E2}

выберем след. альтернативу для E

10|¾(6,1) {q,1,b,S1T1E3}

первый символ – не “b”

11|¾(4) {b,1,b,S1T1E3}

вернем E из L2 в  L1 

12|¾(6,3) {b,1,E,S1T1}

выберем след. альтернативу для T

13|¾(6,1) {q,1,EF,S1T2}

раскроем нетерминал E

14|¾(1) {q,1,(S)F,S1T2E1}

первый символ – не “(”

15|¾(4) {b,1,(S)F,S1T2E1}

выберем след. альтернативу для E

16|¾(6,1) {q,1,aF,S1T2E2}

первый символ совпал, сдвиг головки

17|¾(2) {q,2,F,S1T2E2a}

раскроем нетерминал F

18|¾(1) {q,2,*E,S1T2E2aF1}

второй символ – не “*”

19|¾(4) {b,2,*E,S1T2E2aF1}

выберем след. альтернативу для F

20|¾(6,1) {q,2,/E,S1T2E2aF2}

второй символ совпал, перепишем в L2

21|¾(2) {q,3,E,S1T2E2aF2/}

раскроем нетерминал E

22|¾(1) {q,3,(S),S1T2E2aF2/E1}

третий символ совпал, перепишем в L2

23|¾(2) {q,4,S),S1T2E2aF2/E1(}

раскроем нетерминал S

24|¾(1) {q,4,T),S1T2E2aF2/E1(S1}

раскроем нетерминал T

25|¾(1) {q,4,E),S1T2E2aF2/E1(S1T1}

раскроем нетерминал E

26|¾(1) {q,4,(S)),S1T2E2aF2/E1(S1T1E1}

4-й символ – не “(”

27|¾(4) {b,4,(S)),S1T2E2aF2/E1(S1T1E1}

выберем след. альтернативу для E

28|¾(6,1) {q,4,a),S1T2E2aF2/E1(S1T1E2}

4-й символ совпал, переносим в L2

29|¾(2) {q,5,),S1T2E2aF2/E1(S1T1E2a}

5-й символ не совпал

30|¾(4) {b,5,),S1T2E2aF2/E1(S1T1E2a}

в стеке L2 – терминал, вернём его

31|¾(5) {b,4,a),S1T2E2aF2/E1(S1T1E2}

выберем след. альтернативу для E

32|¾(6,1) {q,4,b),S1T2E2aF2/E1(S1T1E3}

4-й символ не совпал

33|¾(4) {b,4,b),S1T2E2aF2/E1(S1T1E3}

нет альтернатив для E

34|¾(6,3) {b,4,E),S1T2E2aF2/E1(S1T1}

выберем след. альтернативу для T

35|¾(6,1) {q,4,EF),S1T2E2aF2/E1(S1T2}

раскроем нетерминал E

36|¾(1) {q,4,(S)F),S1T2E2aF2/E1(S1T2E1}

4-й символ не совпал

37|¾(4) {b,4,(S)F),S1T2E2aF2/E1(S1T2E1}

выберем след. альтернативу для E

38|¾(6,1) {q,4,aF),S1T2E2aF2/E1(S1T2E2}

4-й символ совпал

39|¾(2) {q,5,F),S1T2E2aF2/E1(S1T2E2a}

раскроем нетерминал F

40|¾(1) {q,5,*E),S1T2E2aF2/E1(S1T2E2aF1}

5-й символ не совпал

41|¾(4) {b,5,*E),S1T2E2aF2/E1(S1T2E2aF1}

выберем след. альтернативу для F

42|¾(6,1) {q,5,/E),S1T2E2aF2/E1(S1T2E2aF2}

5-й символ не совпал

43|¾(4) {b,5,/E),S1T2E2aF2/E1(S1T2E2aF2}

выберем след. альтерн. для F

44|¾(6,1) {q,5,*EF),S1T2E2aF2/E1(S1T2E2aF3}

5-й символ не совпал

45|¾(4) {b,5,*EF),S1T2E2aF2/E1(S1T2E2aF3}

выберем след. альтерн. для F

46|¾(6,1) {q,5,/EF),S1T2E2aF2/E1(S1T2E2aF4}

5-й символ не совпал

47|¾(4) {b,5,/EF),S1T2E2aF2/E1(S1T2E2aF4}

для F нет альтернативы

48|¾(6,3) {b,5,F),S1T2E2aF2/E1(S1T2E2a}

возврат по символу

49|¾(5) {b,4,aF),S1T2E2aF2/E1(S1T2E2}

выберем след. альтернативу для E

50|¾(6,1) {q,4,bF),S1T2E2aF2/E1(S1T2E3}

4-й символ не совпал

51|¾(4) {b,4,bF),S1T2E2aF2/E1(S1T2E3}

вернем E из L2 в  L1 

52|¾(6,3) {b,4,EF),S1T2E2aF2/E1(S1T2}

вернем T из L2 в  L1 

53|¾(6,3) {b,4,T),S1T2E2aF2/E1(S1}

выберем след. альтернативу для S

54|¾(6,1) {q,4,TR),S1T2E2aF2/E1(S2}

раскроем нетерминал T

55|¾(1) {q,4,ER),S1T2E2aF2/E1(S2T1}

раскроем нетерминал E

56|¾(1) {q,4,(S)R),S1T2E2aF2/E1(S2T1E1}

4-й символ не совпал

57|¾(4) {b,4,(S)R),S1T2E2aF2/E1(S2T1E1}

выберем след. альтернативу для E

58|¾(6,1) {q,4,aR),S1T2E2aF2/E1(S2T1E2}

4-й символ совпал, переносим в L2

59|¾(2) {q,5,R),S1T2E2aF2/E1(S2T1E2a}

раскроем нетерминал R

60|¾(1) {q,5,+T),S1T2E2aF2/E1(S2T1E2aR1}

5-й символ не совпал

61|¾(4) {b,5,+T),S1T2E2aF2/E1(S2T1E2aR1}

выберем след. альтернативу для R

62|¾(6,1) {q,5,T),S1T2E2aF2/E1(S2T1E2aR2}

5-й символ совпал, переносим в L2

63|¾(2) {q,6,T),S1T2E2aF2/E1(S2T1E2aR2–}

раскроем нетерминал T

64|¾(1) {q,6,E),S1T2E2aF2/E1(S2T1E2aR2–T1}

раскроем нетерминал E

65|¾(1) {q,6,(S)),S1T2E2aF2/E1(S2T1E2aR2–T1E1}

6-й символ не совпал

66|¾(4) {b,6,(S)),S1T2E2aF2/E1(S2T1E2aR2–T1E1}

выберем след. альтер. для E

67|¾(6,1) {q,6,a),S1T2E2aF2/E1(S2T1E2aR2–T1E2}

6-й символ не совпал

68|¾(4) {b,6,a),S1T2E2aF2/E1(S2T1E2aR2–T1E2}

выберем след. альтер. для E

69|¾(6,1) {q,6,b),S1T2E2aF2/E1(S2T1E2aR2–T1E3}

6-й символ совпал

70|¾(2) {q,7,),S1T2E2aF2/E1(S2T1E2aR2–T1E3b}

7-й символ совпал

71|¾(2) {q,8,l,S1T2E2aF2/E1(S2T1E2aR2–T1E3b)}|¾(3)

Разбор закончен  stop(+)