열한번째 작업 LL 분석 (1) 문법, 재귀 하강 파서

1. 문법 G (S)

(1) S -> AB

(2) A -> 다 | ε

(3) B -> CC

(4) C -> AADC | ε

(5) D -> B | ε

문법 G (S)는 LL (1) 문법 아니다 확인?

해결 방법 :

제 (AB) = {B, A, C}

최초의 (다) = {B, A}

최초의 (E) = E {}

첫 번째 (CC) = {C}

첫 번째 (AADC) = {A}

우선, (B) = {B}

 

에 따라 (S) = {C, B, A}

따라 (A) = {A, B, C} #

에 따라 (B) = {A, B, C}

에 따라 (C) = {#}

에 따라 (D) = {#, A}

 

Sellect (A-> 다) = {B, A}

Sellect (A-> ε) = {A, B, C} #

이후 Sellect (A-> 다) ∩Sellect (A-> ε) ≠ Ø, LL (1) 구문 G (S)되지 알 수있다.

 

식 문법은 LL (1) 문법인지 왼쪽 재귀의 제거 후 2 (마지막 작업)?

 

( . 1 ) SELECT 설정 :

  SELECT (E-> TE ') = 첫 번째 (TE') = {(I}

  SELECT (E '-> + TE') = 첫 번째 (+ TE ')} = {+

  SELECT (E '-> E) = FIRST (E) - {E} UFOLLOW (E') = FOLLOW (E ') = {)} #

  SELECT (T-> FT ') = 첫 번째 (FT') = {(I}

  SELECT (T '-> * FT') = 첫 번째 (* FT ') = {} *

  SELECT (T '-> ε) = FIRST (ε) - {ε} UFOLLOW (T') = FOLLOW (T ') = {+), #}

  SELECT (F -> (E)) = FIRST ((E)) = {(}

  SELECT (F-> I) = FIRST (I) = {I}

 해결 방법 :

SELECT (E '-> + TE') ∩SELECT (E '-> ε) = O

SELECT (T '-> * FT') ∩SELECT (T '-> ε) = Ø

SELECT (F -> (E)) ∩SELECT (F-> I) = Ø

따라서 얻을 수 있고,이 문법은 LL (1) 구문이다.

 

(2)

선택 세트 :

  SELECT (A-> A ') = 첫 번째 (A') = {A}

  SELECT (A '-> 아베) = FIRST (아베) = {A}

  SELECT (A '-> ε) = FIRST (ε) - {ε} UFOLLOW (A') = FOLLOW (A ') = {(D), #}

  SELECT (B-> dB ') = 첫 번째 (dB') = {D}

  SELECT (B '-> 중에 bB') = FIRST (BB ') = {B}

  SELECT (B '-> ε) = FIRST (ε) - {ε} UFOLLOW (B') = FOLLOW (B ') = E {}

해결 방법 : 

SELECT (A '-> 아베) ∩SELECT (A'-> ε) = Ø

SELECT (B '-> 중에 bB') ∩SELECT (B '-> ε) = Ø

따라서 얻을 수 있고,이 문법은 LL (1) 구문이다.

 

 

(삼)

선택 세트 :

  SELECT (S-> 경계 필터링 ') = FIRST (BS') = {B}

  SELECT (S '-> BAS') = 첫 번째 (BAS ') = {A}

  SELECT (S '-> ε) = FIRST (ε) - {ε} UFOLLOW (S') = FOLLOW (S ') = {#}

SELECT (B-> AB) = FIRST (AB) = {A}

 해결 방법 :

SELECT (S '-> BAS') ∩SELECT (S '-> ε) = Ø

따라서 얻을 수 있고,이 문법은 LL (1) 구문이다.

 

(4)

선택 세트 : 

  SELECT (S-> AP) = FIRST (AP) = {A, C, P}

  SELECT는 (A-> a)를 FIRST = (a) = {A}

  SELECT (A-> ε) = FIRST (ε) - {ε} UFOLLOW (A) = FOLLOW (A) = {P}

  SELECT (A-> CA) = FIRST (CA) = {C}

       {A} SELECT (A-> AA) = FIRST (AA) =

 해결 방법 :

SELECT (A-> a) ∩SELECT (A-> AA) ≠ Ø

따라서이 문법은 LL (1) 구문없는 얻을 수있다.

 

(5)

선택 세트 :

  SELECT (S-> AP) = FIRST (AP) = {A, C}

  SELECT (S-> Bp에) = FIRST (BQ) = {B, D}

  SELECT는 (A-> a)를 FIRST = (a) = {A}

  SELECT (A-> CA) = FIRST (CA) = {C}

  SELECT (B-> B) = FIRST (b) = {B}

  SELECT은 (B-> dB) = FIRST (dB) = {D}

 해결 방법 :

SELECT (S-> AP) ∩SELECT (S-> Bp에) = Ø

SELECT (A-> a) ∩SELECT (A-> CA) = Ø

SELECT (B-> b) ∩SELECT (B-> dB) = Ø

따라서 얻을 수 있고,이 문법은 LL (1) 구문이다.

 

제 2 연결,이 LL 인 경우 (1) 문법 그 재귀 하강 파서 코드 물품.

(1) (2) (3) (5) 재귀 하강 파서 코드는 다음된다 :

(1)

공허 parseE () {

 경우 (룩어 == '('I)

{Prset ();

parseE '();

}

}

공허 parseE '() {

만약 (내다 == '+') {

 Frset ();

parseE '();

}

다른 경우 (내다 == ')', '#')

{}

}

공허 parseT () {

  (룩어 경우 == '('I) {

  경기 토큰 (*);

parseF ();

Prset '();

}

다른 경우 (룩어 == '+', ')', '#') {

}

}

공허 parseF () {

(룩어 경우 == '(') {

경기 토큰 (();

parseE ();

()) 토큰과 일치;

}

다른 경우 (룩어 == I) {

  (의) 일치 토큰;

}

}

 

(2)

공허 parseA () {

 만약 (내다 == A)

{matchtoken (a);

parseA '();

}

}

공허 parseA '() {

  만약 (내다 == A) {

  parseA ();

parseB ();

matchtoken (e);

}

다른 경우 (룩어 == D #) {

}

}

공허 parseB () {

 경우 (룩어 == d)

{matchtoken (d);

parseB '();

}

}

공허 parseB '() {

 경우 (룩어 == b)

{matchtoken (b);

parseB '();

}

다른 경우 (내다 == 전자) {

}

}

 

(삼)

공허의 구문 분석 () {

  경우 (룩어 == b) {

Matchtoken (b);

파싱 ​​'();

}

}

공허의 구문 분석 '() {

 만약 (내다 == A) {

 parseB ();

matchtoken (a);

파싱 ​​'();

}

그렇지 않은 경우 (내다 == #) {

}

}

공허 parseB () {

만약 (내다 == A) {

 Matchtoken (a);

Matchtoken (b);

}

}

 

(5)

공허의 구문 분석 () {

 경우 (룩어 == A, C) {

  ParseA ();

Matchtoken (p);

}

그렇지 않은 경우 (룩어 == B, D) {

 parseB ();

matchtoken (p);

}

}

공허 parseA () {

  만약 (내다 == A) {

 Matchtoken (a);

}

그렇지 않은 경우 (룩어 == c) {

 Matchtoken (c);

parseA ();

}

}

공허 parseB () {

 경우 (룩어 == b) {

 Matchtoken (b);

}

그렇지 않은 경우 (룩어 == d) {

 Matchtoken (d);

parseB ();

}

}

추천

출처www.cnblogs.com/fqy1028/p/11900688.html