±àÒëÔ­ÀíÆÚÄ©¸´Ï° ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÒ» ÎÄÕ±àÒëÔ­ÀíÆÚÄ©¸´Ï°¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ

PROCEDURE E£» BEGIN V; E¡¯ END;

PROCEDURE E¡¯£» IF SYM=¡®+¡¯ THEN BEGIN ADVANCE£» E

END

PROCEDURE F£» PROCEDURE N£» IF SYM=¡®[¡¯ THEN IF SYM=¡®i¡¯ THEN

BEGIN ADVANCE ADVANCE; ELSE ERROR; E£» IF SYM=¡®]¡¯ THEN ADVANCE ELSE ERROR END

ELSE ERROR;

PROCEDURE £Ö£» BEGIN N;V¡¯ END;

¿¼Ìâ2£ºÎªÎÄ·¨G[E]:E¡úE+T|T T¡úT*F|F F¡ú(E)|i¹¹ÔìµÝ¹éϽµÊ¶±ð³ÌÐò ½â£º£¨1£©Ïû³ý×óµÝ¹é£ºE¡úTE? E?¡ú+TE? | ? T¡úFT? T?¡ú*FT? | ? F¡ú(E) | i

(2)¹¹ÔìµÝ¹éϽµÊ¶±ð³ÌÐò

PROCEDURE E£» BEGIN

T£»E? END£»

PROCEDURE T£» BEGIN F£»T? END

PROCEDURE F£» IF SYM=¡®i¡¯ THEN ADVANCE ELSE IF SYM=¡®(¡¯ THEN BEGIN ADVANCE; E£» IF SYM=¡®)¡¯

THEN ADVANCE

ELSE ERROR END ELSE ERROR;

PROCEDURE E?£»

IF SYM=¡®+¡¯ THEN BEGIN ADVANCE£» T£»E? END

PROCEDURE T?£» IF SYM=¡®*¡¯ THEN BEGIN

ADVANCE£» F£»T? END

7¡¢×Ôµ×ÏòÉÏ·ÖÎö·¨¡ª¡ªLR£¨0£©·ÖÎö·¨

×¢£º×Ôµ×ÏòÉÏ·ÖÎö·¨±¾ÖÊÊÇ´ÓÊäÈë´®¿ªÊ¼£¬Öð²½½øÐС°¹éÔ¼¡±£¬Ö±µ½ÎÄ·¨µÄ¿ªÊ¼·ûºÅ,Æä¹Ø¼üÎÊÌâÊÇÑ°ÕÒ¾ä±ú¡£

×Ôµ×ÏòÉÏ·ÖÎö·¨»¹ÓÐËã·ûÓÅÏÈ·ÖÎö·¨£¬SLR(1),LR£¨1£©µÈµÈ£¬ÀÏʦÄÇÌìÖص㽲ÁËÒ»µÀLR(0)·ÖÎö·¨µÄÌâÄ¿£¬Ëû˵Ëã·ûÓÅÏÈ·ÖÎö·¨A¾í²»¿¼£¬µ«ÊDz¹¿¼µÄB¾í»á¿¼£¬°´ÕÕËûµÄÒâ˼£¬Õâ´ÎÆÚÄ©¿¼ÊÔLR(0)ÊÇ¿¼¶¨µÄÁË£¬SLR(1),LR£¨1£©Ó¦¸Ã²»¿¼£¬ÒòΪLR(0)·ÖÎö·¨¸öÈ˸оõÒ²ÊÇËùÓÐÌâÄ¿ÖÐ×î·±µÄÁË£¬ÏÂÃæÒÑÀÏʦ½²µÄÌâĿΪÀýÕ⣬ҲÊÇÒ»·ÝÊÔ¾íÉϵĿ¼Ì⣬Ê×ÏȽéÉÜһЩÏà¹Ø֪ʶ¡£

13 / 21

£¨1£©

LR(0)ÏîÄ¿£ºÍ¨Ë׵㽲£¬ÎÄ·¨GÖеÄÈκÎÒ»¸ö²úÉúʽµÄÓÒ²¿µÄÈκÎλÖÃÌí¼ÓÒ»¸öÔ²µã¾Í³ÉÁËLR(0)ÏîÄ¿£¬±ÈÈçA¡úAbÊDzúÉúʽ£¬ÔòA¡ú?Ab A¡úA?b A¡úAb?¶¼ÊǸòúÉúʽ¶ÔÓ¦µÄÈ«²¿ÏîÄ¿¡£ÏîÄ¿¶¯Ì¬µÄ±íʾ¹éÔ¼µÄÒ»¸ö½×¶Î£º¶ÔÓÚÏîÄ¿A¡úA?b£¬¿ÉÒÔÕâÑùÀí½âËü£º¡°?¡±Ö®Ç°µÄA±íʾµÄÊÇÔÚʶ±ðAb¹ý³ÌÖÐÒÑÊäÈëµ½Õ»ÖյIJ¿·Ö£»¡°?¡±Ö®ºóµÄ±íʾÔÚʶ±ðAb¹ý³ÌÖÐÆÚÍû³öÏֵIJ¿·Ö£»¡°?¡±±íʾÔòÊÇÔÚʶ±ðAb¹ý³ÌÖе±Ç°µÄʶ±ð½ø¶ÈµÄ¶¨Î»¡£ÏîÄ¿A¡úAb?ÒѾ­¾ß±¸ÁËʶ±ðAbµÄÒ»ÇÐÌõ¼þ£¬Òò´Ë±»³ÆΪ¹éÔ¼ÏîÄ¿¡£

ÏîÄ¿¿ÉÒÔ·ÖΪÒÔÏÂËÄÀࣺP¡ú¦Á?a¦Â³ÆΪÒƽøÏîÄ¿ÆäÖÐ, P¡ú¦Á?X¦Â³ÆΪ´ýÔ¼ÏîÄ¿£¬ÆäÖÐXΪ·ÇÖÕ½á·û£¬P¡ú¦Á? ³ÆΪ¹éÔ¼ÏîÄ¿£¬S¡¯ ¡úS³ÆΪ½ÓÊÕÏîÄ¿ £¨2£©LR(0)µÄ·ÖÎöÕ»¿ÉÒÔ¿´³ÉÁ½²¿·Ö״̬ջ

LR·ÖÎöÆ÷µÄºËÐÄÊÇÒ»ÕÅ·ÖÎö±í£º

ACTION[s£¬a]£ºµ±×´Ì¬sÃæÁÙÊäÈë·ûºÅaʱ£¬Ó¦²Éȡʲô¶¯×÷. GOTO[s£¬X]£º×´Ì¬sÃæ¶ÔÎÄ·¨·ûºÅXʱ£¬ÏÂһ״̬ÊÇʲô.

ÏÂÃ漸ÕÅPPT´ó¼Ò¿´¿´£¬¶Ô»ù±¾¸ÅÄîÓиöÓ¡Ïó£º LR·ÖÎö·½·¨£º°Ñ\ÀúÊ·\¼°\Õ¹Íû\×ۺϳéÏó³É״̬£»ÓÉÕ»¶¥µÄ״̬ºÍÏÖÐеÄÊäÈë·ûºÅΨһȷ¶¨Ã¿Ò»²½¹¤×÷Sm?ÿһÏîACTION[s£¬a]Ëù¹æ¶¨µÄËÄÖÖ¶¯×÷:1. Òƽø °Ñ(s£¬a)µÄÏÂһ״̬s¡¯ºÍÊäÈë·ûºÅaÍƽøÕ»£¬ÏÂÒ»ÊäÈë·ûºÅ±ä³ÉÏÖÐÐÊäÈë·ûºÅ.2. ¹éÔ¼ Ö¸ÓÃij²úÉúʽA½øÐйéÔ¼. ¼ÙÈôµÄ³¤¶ÈΪr£¬ ¹éÔ¼¶¯×÷ÊÇ£¬ È¥³ýÕ»¶¥r¸öÏʹ״̬sm-r±ä³ÉÕ»¶¥×´Ì¬£¬È»ºó°Ñ(sm-r, A)µÄÏÂһ״̬s¡¯=GOTO[sm-r, A]ºÍÎÄ·¨·ûºÅAÍƽøÕ».3. ½ÓÊÜ Ðû²¼·ÖÎö³É¹¦£¬Í£Ö¹·ÖÎöÆ÷¹¤×÷.4. ±¨´íXm?a1a2ai an#ÊäÈë´®S1S0X1# LR·ÖÎö³Ì Ðò Êä³ö״̬·ûºÅ·ÖÎöÕ» action goto½­Î÷²Æ¾­´óѧÐÅÏ¢¹ÜÀíѧԺ LR·ÖÎö±í ½­Î÷²Æ¾­´óѧÐÅÏ¢¹ÜÀíѧԺ

ÕâÒ»ÕµĸÅÄî½Ï¶à½Ï³éÏó£¬ÎÒһʱ°ë»áÒ²½²²»Íê½²²»Çå³þ£¬ÕâÀï²»ÔÙ׸Êö£¬Ö±½Ó¿´ÌâÄ¿£¬ÖªµÀÔõô×ö¾ÍÐУ¬ÏÂÃæÒÔÒ»µÀ¿¼ÌâÕâÒ²ÊÇÀÏʦ½²µÄÔ­ÌâΪÀý½²½âÈçºÎ×öÕâÀàÌâÄ¿£¬Ê×ÏÈÒ»°ãÕâÖÖÌâÄ¿·ÖÈý²½×ߣº

14 / 21

(1)ÍعãÎÄ·¨£º¼Ù¶¨ÎÄ·¨GÊÇÒ»¸öÒÔSΪ¿ªÊ¼·ûºÅµÄÎÄ·¨£¬ÎÒÃǹ¹ÔìÒ»¸öG?£¬Ëü°üº¬ÁËÕû¸öG£¬µ«ËüÒý½øÁËÒ»¸ö²»³öÏÖÔÚGÖеķÇÖÕ½á·ûS?£¬²¢¼Ó½øÒ»¸öвúÉúʽS?¡úS£¬¶øÕâ¸öS?ÊÇG?µÄ¿ªÊ¼·ûºÅ¡£ÄÇô£¬ÎÒÃdzÆG?ÊÇGµÄÍعãÎÄ·¨¡£ÕâÑù£¬±ã»áÓÐÒ»¸ö½öº¬ÏîÄ¿S?¡úS.µÄ״̬£¬Õâ¾ÍÊÇΨһµÄ¡°½ÓÊÜ¡±Ì¬¡£

£¨2£©¹¹Ôìʶ±ðÎÄ·¨»îǰ׺µÄDFA:¶ÔÓÚÈÎÒâµÄÏîÄ¿¼´I,Æä±Õ°üCLOSURE(I)¼ÆËã·½·¨ÈçÏ£¬IÖеÄËùÓÐÏîÄ¿¶¼ÊôÓÚCLOSURE(I);Èç¹ûP¡ú¦Á?X¦Â,²¢ÇÒXΪ·ÇÖÕ½á·û£¬ÔòËùÓÐÐÎÈçX¡ú?¦ÃµÄÏîÄ¿Ò²ÊôÓÚClOSURE(I)¶¨Ò庯ÊýGO(I,X)£¬ÆäÖÐIÊÇÏîÄ¿¼¯£¬XÊÇÈÎÒâµÄÎÄ·¨·ûºÅ£¨ÖÕ½á·û£¬·ÇÖÕ½á·û¶¼¿ÉÒÔ£©£¬GO(I£¬X)=CLOSURE(J).JÊÇ´ÓIÖÐÏîÄ¿³ö·¢ºó¶ÁÈ¡Xºóµ½´ïµÄºó¼ÌÏîÄ¿,¼´J={P¡ú¦ÁX?¦Â| P¡ú¦Á?X¦Â¡ÊI}

ÓÐÁËÉÏÊöCLOSUREºÍGOµÄ¶¨ÒԺ󣬴ÓCLOSURE({S?¡ú?S})³ö·¢£¬ÀûÓÃGOº¯Êý£¬²úÉú³öËüÔÚÿ¸ö¿ÉÄܵÄÎÄ·¨·ûºÅÏ£¬Òª×ªÒƵÄÏîÄ¿¼¯£¬ÔÙ¶ÔвúÉúµÄÏîÄ¿¼¯²ÉȡͬÑùµÄ·½·¨Ö±µ½Ã»ÓÐвúÉúµÄÏîÄ¿¼¯Î´±»´¦ÀíΪֹ¡£

(4) ¸ù¾Ý¼ÆËã³öµÄÏîÄ¿¼¯Ö®¼äµÄ¹Øϵ»­³öDFAºÍLR(0)·ÖÎö±í£¬ÆäÖÐLR(0)¹¹Ôì·½·¨Èç

ÏÂ:

¶Ô¾ßÌåµÄ¾ä×ÓÔËÓÃLR(0)·ÖÎöµÄ·½·¨ÈçÏ£º ÿһÏîACTION[s£¬a]Ëù¹æ¶¨µÄËÄÖÖ¶¯×÷:

1. Òƽø °Ñ(s£¬a)µÄÏÂһ״̬s¡¯ºÍÊäÈë·ûºÅaÍƽøÕ»£¬ÏÂÒ»ÊäÈë·ûºÅ±ä³ÉÏÖÐÐÊäÈë·ûºÅ.

2. ¹éÔ¼ Ö¸ÓÃij²úÉúʽA¡ú¦Â½øÐйéÔ¼. ¼ÙÈô¦ÂµÄ³¤¶ÈΪr£¬ ¹éÔ¼¶¯×÷ÊÇ£¬ È¥³ýÕ»¶¥r¸öÏʹ״̬sm-r±ä³ÉÕ»¶¥×´Ì¬£¬È»ºó°Ñ(sm-r, A)µÄÏÂһ״̬s¡¯=GOTO[sm-r, A]ºÍÎÄ·¨·ûºÅAÍƽøÕ».

3. ½ÓÊÜ£¨¼´acc£© Ðû²¼·ÖÎö³É¹¦£¬Í£Ö¹·ÖÎöÆ÷¹¤×÷. 4. ±¨´í

¿¼Ì⣺¹¹ÔìÎÄ·¨G[E]µÄLR(0)·ÖÎö±í£¬²¢¸ø³öaccdµÄ·ÖÎö¹ý³Ì¡£

£¨0£©S?¡úE£¨1£©E¡úaA £¨2£©E¡úbB £¨3£©A¡úcA £¨4£© A¡úd £¨5£©B¡úcB £¨6£©B¡úd ·ÖÎö£ºÌâÖÐÒѾ­½øÐÐÁËÍƹãÎÄ·¨£¬ËùÒÔµÚÒ»²½¾Í²»ÐèÒªÁË£¬ÏÂÃæ¾ÍÊÇ¿ªÊ¼¹¹Ôìʶ±ð»îǰ׺µÄDFA£¬È»ºó¹¹Ôì³öLR£¨0£©·ÖÎö±í£¬×îºóÔÚ½øÐзÖÎö£¬Êµ¼ÊÉ϶ÔÓÚaccdÎÒÃÇ×Ô¼º¿ÉÒÔÏÈÍÆһϣ¬E?aA?acA?accA?accdËùÒԸþä×Ó·ûºÏÎÄ·¨£¬ÄÇô×îÖÕ¹¹Ôì³öµÄLR£¨0£©·ÖÎö±í¶Ô¸Ã¾ä×Ó½øÐзÖÎöºó±Ø¶¨µÃµ½¡°acc¡±£¨½ÓÊܵÄÒâ˼£©£¬·ñÔò¹¹ÔìµÄLR(0)·ÖÎö±í³ö´í¡£

15 / 21

(5)

´ð£º£¨1£©¹¹Ôìʶ±ð»îǰ׺µÄDFA:

I0=Closure({S?¡ú?E })={ S?¡ú?E, E¡ú?aA, E¡ú?bB }

I1=GO(I0,E)=Closure({S?¡úE?})={ S?¡úE? }

I2=GO(I0,a)=Closure({ E¡úa?A })={ E¡úa?A£¬A¡ú?cA £¬A¡ú?d } I3=GO(I0,b)=Closure({ E¡úb?B })={E¡úb?B, B¡ú?cB £¬B¡ú?d }

£¨ÎªÁË·½±ã£¬ÏÂÃæ¼ÆËãÖеÄClosure²»ÔÙдÁË£¬Ö±½Ó¸ø³ö´ð°¸,¿¼ÊÔʱ¿ÉÒÔ²»Ð´£¬µ±È»¼ÆËãI0ÊDZØÐëÒªµÄ£©

I4=GO(I2,A)={ E¡úaA?} I5=GO(I2,c)={ A¡úc?A£¬A¡ú?cA £¬A¡ú?d } I6= GO(I2,d)={ A¡úd?} I7=GO(I3,B)={ E¡úbB?}

I8= GO(I3,c)= { B¡úc?B£¬B¡ú?cB £¬B¡ú?d } I9= GO(I3,d)={ B¡úd?} I10= GO(I5,A) ={ A¡úcA?} GO(I5,c)=I5 GO(I5.d)=I6 I11= GO(I8,B) { B¡úcB?} GO(I8,c)=I8 GO(I8.d)=I9 »­³öDFA:

×¢£ºÊµ¼ÊÉϹ¹ÔìLR(0)·ÖÎö±íʱÕâ¸öͼûÓбØÒª»­£¬¸ù¾ÝÉÏÊö¼ÆËã½á¹û¼´¿ÉÌîдÏÂ±í¡£ £¨2£©»­³öLR(0)·ÖÎö±í

16 / 21