Ch05-3 ÊÇLR(1)ÎÄ·¨2S¡úa.AdS¡úa.BeA¡ú.gaB¡ú.g##de4AS¡úaA.d5BS¡úaB.e6gA¡úg.B¡úg.9AS¡úbA.e10BS¡úbB.d11gA¡úg.B¡úg.##de12eS¡úbAe.13dS¡úbBd.7dS¡úaAd.8eS¡úaBe.##Z¡ú.SS¡ú.aAdS¡ú.bBdS¡ú.aBeS¡ú.bAe0#####SbZ¡úS.1#3S¡úb.BdS¡úb.AeA¡ú.gB¡ú.g##ed##ed##
Ch05-3 ²»ÊÇLALR(1)ÎÄ·¨2S¡úa.AdS¡úa.BeA¡ú.gaB¡ú.g##de4AS¡úaA.d5BS¡úaB.egA¡úg.B¡úg.##ed##7dS¡úaAd.8eS¡úaBe.##Z¡ú.SS¡ú.aAdS¡ú.bBdS¡ú.aBeS¡ú.bAe0#####S6bZ¡úS.1#3S¡úb.BdS¡úb.AeA¡ú.gB¡ú.ggd,ee,d##12eS¡úbAe.13dS¡úbBd.##9AS¡úbA.e10BS¡úbB.d
4. ÉèÓÐÏÂÁÐÎÄ·¨£º
(1) E?E+T | T
T?TF | T F?(E) | F* | a | b A?d
(2) S?Aa | bAc | dc | bda
˵Ã÷ÉÏÊöÎÄ·¨ÊÇ·ñΪSLR(1)ÎÄ·¨£¿ÊÇ·ñΪLALR(1)ÎÄ·¨£¿²¢¹¹ÔìÏàÓ¦µÄ·ÖÎö±í¡£ ´ð£º(1)
17
Ch05-4-(1) ²»ÊÇSLR(1)ÎÄ·¨Follow(T)={#,(,a,b,+,)}3E¡úE+T.T¡úT.F6T¡úT.aF¡úa.F¡ú.(E)T7bF¡ú.F*F¡úb.F¡ú.a11F¡ú.b(E¡úT.8T¡úT.FF¡ú(.E)(T¡úT.E¡ú.E+TF¡ú.(E)EE¡ú.TF¡ú.F*T¡ú.TFTF¡ú.aT¡ú.TF¡ú.b4FT¡úTF.F¡úF.*5*F¡úF*.0Z¡ú.EE¡ú.E+TE¡ú.TT¡ú.TFT¡ú.T1Z¡úE.EE¡úE.+T2E¡úE+.T+T¡ú.TFT¡ú.T+Fab46710F¡ú(E).9)F¡ú(E.)E¡úE.+T
F¡úF*.54#+(ab**Ch05-4-(1) ²»ÊÇLALR(1)ÎÄ·¨3E¡úE+T.T¡úT.FT¡úT.2F¡ú.(E)E¡úE+.T#+(ab*)F¡ú.F*TT¡ú.TF#+(abF¡ú.a+T¡ú.T#+(abF¡ú.b(+89F¡ú(.E)F¡ú(E.)#+(ab*)E¡ú.E+TE¡úE.+T#+(ab*)EE¡ú.T(T¡ú.TF10T¡ú.TF¡ú(E).#+(ab*)1Z¡úE.#E¡úE.+T#+E0Z¡ú.E#E¡ú.E+T#+E¡ú.T#+T¡ú.TF#+(abT¡ú.T#+(ab#+#+(abFT¡úTF.#+(ab#+(ab*F¡úF.*#+(ab6#+(ab*aF¡úa.#+(ab*#+(ab*7#+(ab*bF¡úb.#+(ab*#+(ab*#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)E¡úT.(T¡úT.FT¡úT.F¡ú.(E)TF¡ú.F*F¡ú.aF¡ú.b11#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)
(2)
Ch05-4-(2) ²»ÊÇSLR(1)ÎÄ·¨Follow(A)={a,c}0Z¡ú.SS¡ú.AaS¡ú.bAcS¡ú.dcS¡ú.bdaA¡ú.dS1Z¡úS.2AS¡úA.a4dS¡úd.cA¡úd.6bS¡úb.AcS¡úb.daA¡ú.d3aS¡úAa.5cS¡údc.Ad7S¡úbA.c9S¡úbd.aA¡úd.cc8S¡úbAc.10S¡úbda.
18
Ch05-4-(2) ÊÇLALR(1)ÎÄ·¨Z¡úS.1S0#S¡úAa.AS¡úA.ab5a4####c9AS¡úbA.cc10S¡úbAc.#Z¡ú.SS¡ú.AaS¡ú.bAcS¡ú.dcS¡ú.bdaA¡ú.dS¡úd.cA¡úd.#####a#ad2cS¡údc.3#6S¡úb.AcS¡úb.daA¡ú.dd7S¡úbd.aA¡úd.a8S¡úbda.##c#
aactionbcs6s3R4s5R2s7s8R6R5s10R39gotods2#AccR6A4S1Z¡ú.S (1)S¡ú.Aa (2)S¡ú.bAc (3)S¡ú.dc (4)S¡ú.bda (5)A¡ú.d (6)S0S1S2S3S4S5S6S7S8S9S10
5. ÉèÓÐÏÂÁÐÎÄ·¨£º
L?MLb | a
M??
˵Ã÷ÉÏÊöÎÄ·¨ÊÇ·ñΪLR(1)ÎÄ·¨£¬Èô²»ÊÇ£¬Çë˵Ã÷ÀíÓÉ¡£ ´ð£º
Ch05-5 ÊÇLR(1)ÎÄ·¨5L¡úa.a0Z¡ú.LL¡ú.MLbL¡ú.aM¡ú.L1Z¡úL.#L¡úa.10b###a2ML¡úM.LbL¡ú.MLbL¡ú.aM¡ú.#bba3LL¡úML.bM4bbba#7bL¡úMLb.L8L¡úML.b#9bL¡úMLb.bL¡úM.LbL¡ú.MLbL¡ú.aaM¡ú.bbM
19
µÚÁùÕÂ
1.ÊÔд³öÏÂÁÐÀàÐ͵ÄÄÚ²¿±íʾ£º a.integer
b.ARRAY [1..5] of RECORD i:integer; b:boolean END
c.ARRAY [1..5] of RECORD a:ARRAY [1..10]; r:RECORD i,j:integer END END d. RECORD r: RECORD x,y:real END;a: ARRAY [1..10] of integer END 2. É赱ǰ²ãÊýΪl£¬¿ÉÓÃÇø¾àΪ101£¬ÇÒÓÐÏÂÁгÌÐò¶Î£º CONST mm=333£»nn=444£» TYPE atype = ARRAY[1..10] OF real; rtype = RECORD i,j:integer END; VAR a,b:atype; x,y:real
ÊÔд³ö¸÷±êʶ·ûµÄÄÚ²¿±íʾ¡£
3. É赱ǰ²ãÊýºÍÇø¾à·Ö±ðΪlºÍoff£¬ÇÒÓк¯Êý˵Ã÷Êײ¿£º FUNCTION f£¨A£ºatype£»VAR B£ºatype£»VAR X£ºreal£©£ºinteger ÆäÖÐatypeµÄ¶¨Òå¼ûÌâ5£¬ÊÔд³öfµÄÄÚ²¿±íʾ¡£ 4. ÒªÇóÔÚÏÂÃæÀ¨ºÅÖÐдÉÏÏàÓ¦?£¨²ãÊý£©ºÍÇø¾à£¨off£©¡£ £¨£©£¨£©PROCEDURE g£¨A£ºatype£»£¨£©£¨£©
VAR B£ºatype£»£¨£©£¨£© VAR X£ºreal£¨£©£¨£©£©£¨£©£¨£©.
5. ¸ø³öÏÂÃæC³ÌÐòɨÃèµ½Óï¾äc=a+b+xʱÏàÓ¦µÄÈ«¾Ö·ûºÅ±í(²ÉÓÃ˳Ðò±í½á¹¹)¡£
main£¨£©
{
int a=0; float c=1.0; {
float a=3.0; {
float x=1.3; float b=0.3; } {
int b=10; c=a+b+x; } } }
6. ¸ø³öÌâ1ÖгÌÐòɨÃèµ½Óï¾äc=a+b+xʱÏàÓ¦µÄÈ«¾Ö·ûºÅ±í(²ÉÓÃÍâÀÁ´µÄÉ¢Áбí½á¹¹)¡£
20