¢Æ ¸ÃÎÄ·¨µÄ LR(0) ·ÖÎö±í£º
״̬ 0 1 2 3 4 5 6 7
ACTION a S 2 S 3 r 3 r 2 r 5 S 2 r 4 /S 3 b r 3 S 5 r 2 /S 6 r 5 r 4 # acc r 3 r 2 r 5 r 4
GOTO S 1 7 A 4 ¢Ç LR(0) ÎÄ·¨£º¸ÃÎÄ·¨µÄÒÔ LR(0) ÏîÄ¿¼¯Îª×´Ì¬µÄʶ±ð¹æ·¶¾äÐÍ»îǰ׺µÄ DFA ÖÐûÓгåͻ״̬¡£
¸ÃÎÄ·¨²»ÊÇ LR(0) ÎÄ·¨£¬ÒòΪ´æÔÚ³åͻ״̬£º I 4 ºÍ I 7¡£
¢È SLR(1) ÎÄ·¨£º¸ÃÎÄ·¨µÄÒÔ LR(0) ÏîÄ¿¼¯Îª×´Ì¬µÄʶ±ð¹æ·¶¾äÐÍ»îǰ׺µÄ DFA ÖÐÓгåͻ״̬£¬³åÍ»¿ÉÓà FOLLOW ¼¯½â¾ö¡£
¸ÃÎÄ·¨²»ÊÇ SLR(1) ÎÄ·¨¡£ÒòΪ FOLLOW(S)={a,b,#} £¬ËùÒÔÎÞ·¨½â¾ö³åÍ»¡£
24¡¢¶ÔÏÂÃæµÄÎÄ·¨G£º S->aBc|bAB A->aAb|b B->b|¦Å
(1)¼ÆËãÕâ¸öÎÄ·¨µÄÿ¸ö·ÇÖÕ½á·ûµÄFIRSTºÍFOLLOW¼¯ºÏ£» £¨2£©Ö¤Ã÷Õâ¸öÎÄ·¨ÊÇLL£¨1£©µÄ£» £¨3£©¹¹ÔìËüµÄÔ¤²â·ÖÎö±í¡£
´ð£º£¨1£©first(B)={b, ¦Å},first(A)={a,b},first(S)={a,b} Follow(S)={#},follow(A)={b,#},follow(B)={c,#} (2)ÒòΪֻÓÐFIRST(B)º¬ÓÐ? , ËùÒÔÖ»¿¼ÂÇ£º FOLLOW(B)=FIRST(c) ?FOLLOW(S)={c, #} ¡à¸ÃÎÄ·¨µÄLL(1)±í (3)¸ÃÎÄ·¨µÄLL(1)·ÖÎö±íÈçÏ£º
a b c # ? ? S aBc bAB A aAb b B b
25¡¢Éè×Öĸ±í¡Æ={ a£¬b}£¬¶ÔÓÚÒÔaa»òab½áβµÄ×ÖµÄÕý¹æ¼¯¡£ £¨1£©Çëд³öÃèÊö¸ÃÓïÑÔµÄÕý¹æÊ½¡£
£¨2£©¹¹Ôì¸ÃÕý¹æÊ½Ëù¶ÔÓ¦µÄNFA£¨»³öת»»Í¼£©£» £¨3£©½«ËùÇóµÄNFAÈ·¶¨»¯£¨»³öDFAµÄת»»Í¼£©£»
£¨4£©½«ËùÇó³öµÄDFA×îС»¯£¨»³ö¼«Ð¡»¯ºóµÄת»»Í¼£©£» ´ð£º £¨1£©ÕýÔòʽΪ£º£¨a|b£©*a(a|b£©¡£ £¨1·Ö£©
£¨2£©ÓÉÕýÔòʽµÃµ½µÄת»»ÏµÍ³ÈçÏÂͼ£º £¨1·Ö£©
£¨3£©ÓÉ×Ó¼¯·¨¹¹ÔìµÄDFAÈçÏÂͼ£º
£¨4£©DFA×îС»¯ÈçÏÂͼ£º
26¡¢ÉèÎÄ·¨GΪ S ? E
E? TE | ¦Å T ? eT | t
(1)Ö¤Ã÷ËüÊÇLR(1)ÎÄ·¨£» (2)¹¹ÔìËüµÄLR(1)·ÖÎö±í£»
(3)¸ø³öÊäÈë·ûºÅ´®etetµÄ·ÖÎö¹ý³Ì¡£
´ð£º(1)ÍØ¹ãÎÄ·¨G¡¯£º£¨1·Ö£©
(0) S' ?S (1) S ? E (2) E? TE (3) E ?¦Å (4) T ? eT (5) T ? t FIRST(A) = {¦Å, e,t}
FIRST(B) = {e, t} ¹¹ÔìµÄDFAÈçÏÂ:
ÓÉÏîÄ¿¼¯¹æ·¶×å¿´³ö£¬²»´æÔÚ³åÍ»¶¯×÷¡£ ¡à¸ÃÎÄ·¨ÊÇLR(1)ÎÄ·¨¡£ (2)
LR(1)·ÖÎö±í
Action Goto ״̬ e t # S E T 0 S4 S5 r3 1 2 3 1 acc 2 r1 3 S4 S5 r3 6 3 4 S4 S5 7 5 r5 r5 r5 6 r2 7 r4 r4 r4 (3)ÊäÈë´®ababµÄ·ÖÎö¹ý³ÌΪ£º
²½Öè ״̬ջ ·ûºÅÕ» µ±Ç°×Ö·û Ê£Óà×Ö·û´® ¶¯×÷ (1) 0 # e tet# ÒÆ½ø (2) 04 #e t et# ÒÆ½ø (3) 045 #et e t# ¹éÔ¼ T?t (4) 047 #eT e t# ¹éÔ¼ T?et (5) 03 #T e t# ÒÆ½ø (6) 034 #Te t # ÒÆ½ø (7) 0345 #TeT # ¹éÔ¼ T?t (8) 0347 #TeT # ¹éÔ¼ T?et (9) 033 #TT # ¹éÔ¼ E?¦Å (10) 0336 #TTE # ¹éÔ¼ E?TE (11) 036 #TE # ¹éÔ¼ E?TE (12) 02 # E # ¹éÔ¼ S?E (13) 01 #S # acc
27¡¢¶ÔÎÄ·¨G(S)£º
S ? S ? a T | a T | ? a T T ? ? a T | ? a
(1) Ïû³ý¸ÃÎÄ·¨µÄ×óµÝ¹éºÍÌáÈ¡×ó¹«Òò×Ó£» (2) ¹¹Ôì¸÷·ÇÖÕ½á·ûµÄFIRSTºÍFOLLOW¼¯ºÏ£»
(3) ¹¹Ôì¸ÃÎÄ·¨µÄLL(1)·ÖÎö±í£¬²¢ÅжϸÃÎÄ·¨ÊÇ·ñÊÇLL(1)µÄ¡£ ´ð£º£¨1£©Ïû³ý×óµÝ¹é
S ? a T S¡¯ | ? a T S¡¯ S¡¯ ? ? a T S¡¯ | ¦Å T ? T ? ? a T | ? a ÌáÈ¡×ó¹«Òò×Ó
S ? a T S¡¯ | ? a T S¡¯ S¡¯ ? ? a T S¡¯ | ¦Å T ? ? a T¡¯ T¡¯ ? T | ¦Å
(2) ¸÷·ÇÖÕ½á·ûµÄFIRSTºÍFOLLOW¼¯ºÏ£º
FIRST(S)={a£¬?} FIRST(S')={ ?£¬¦Å} FIRST(T)={ ? } FIRST(T')={ ?£¬¦Å} FOLLOW(S)={#} FOLLOW(S')={#} FOLLOW(T)={?£¬#} FOLLOW(T')={?£¬#}
(3) LL(1)·ÖÎö±íÈçÏÂ(3·Ö) £¬¸ÃÎÄ·¨ÊÇLL(1)ÎÄ·¨¡££¨1·Ö£©
a ? ? # S S?aTS' S??aTS' S' S'??aTS S¡¯?¦Å T T'
' T??aT' T'?¦Å T'?T T'?¦Å
Ïà¹ØÍÆ¼ö£º