Page 1

‫ﻣﺨﺒﺮ اﻵﻻت اﻟﺤﺎﺳﺒﺔ‬ ‫اﻟﺴﻨﺔ اﻟﺮاﺑﻌﺔ ﺣﺎﺳﺒﺎت ‪ -‬ﻋﻤﻠﻲ ﻣﺎدة اﻟﻤﺘﺮﺟﻤﺎت‬ ‫إﻋﺪاد اﻟﻤﮭﻨﺪﺳﺔ ‪ :‬ﺟﯿﮭﺎن ﺑﺮﻛﺎت ﻋﺒﺪو‬ ‫اﻟﺠﻠﺴﺔ اﻟﺨﺎﻣﺴﺔ‬ ‫ﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﺤﺴﺎﺏ ﺘﺎﺒﻌﻲ ﺍﻟـــ ‪ FIRST‬ﻭ ﺍﻟــــ ‪FOLLOW‬‬ ‫ﻜﻤﺎ ﺭﺃﻴﻨﺎ ﻓﻲ ﺍﻟﺠﻠﺴﺔ ﺍﻟﺴﺎﺒﻘﺔ ﺃﻥ ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻋﻤﻠﻴﺔ ﻏﺎﻴﺘﻬﺎ ﺍﻟﺘﺤﻘﻕ ﻤـﺎ ﺇﺫﺍ‬ ‫ﻜﺎﻨﺕ ﺍﻟﺴﻠﺴﻠﺔ ‪ w‬ﻤﻭﻟﺩﺓ ﻓﻲ ﺍﻟﻘﻭﺍﻋﺩ ﺍﻟﻤﻌﻁﺎﺓ ‪ G‬ﻭﻤﻥ ﺜﻡ ﻤﻌﺭﻓﺔ ﺒﻨﻴﺔ ﻫﺫﻩ ﺍﻟﺴﻠﺴﻠﺔ ‪ .‬ﻭ ﺃﻥ ﺍﻟﻨﻅﺎﻡ‬

‫ﺍﻟﺫﻱ ﻴﻨﺠﺯ ﺍﻟﺘﻔﻜﻴﻙ )ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﻟﺴﻼﺴل ﻟﻐﺔ ﻤﻌﻴﻨﺔ( ﻴﺩﻋﻰ ﺒﺎﻟﻤﺤﻠل ﺍﻟﺘﺭﻜﻴﺒﻲ‪.‬‬ ‫ﺇﻥ ﺃﻜﺜﺭ ﻁﺭﻕ ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﺍﺴﺘﻌﻤﺎﻻﹰ ﻫﻲ ‪:‬‬

‫‪ -١‬ﻁﺭﻴﻘﺔ ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﻤﻥ ﺍﻷﻋﻠﻰ ﺇﻟﻰ ﺍﻷﺴﻔل ‪.‬‬ ‫‪ -٢‬ﻁﺭﻴﻘﺔ ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﻤﻥ ﺍﻷﺴﻔل ﺇﻟﻰ ﺍﻷﻋﻠﻰ‪.‬‬ ‫ﺘﺩﻋﻰ ﺍﻟﻘﻭﺍﻋﺩ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﻤﻥ ﺃﺠﻠﻬﺎ ﺒﻨﺎﺀ ﻤﺤﻠل ﺘﺭﺍﻜﻴﺏ ﺒﺎﻟﻁﺭﻴﻘﺔ ﻤﻥ ﺍﻷﻋﻠـﻰ ﺇﻟـﻰ ﺍﻷﺴـﻔل‬ ‫ﺒﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ‪ k‬ﻤﻥ ﺍﻟﺭﻤﻭﺯ ﻓﻲ ﺴﻠﺴﻠﺔ ﺍﻟﺩﺨل ﺒﺎﻟﻘﻭﺍﻋﺩ )‪. LL(k‬‬

‫ﻭ ﺍﻟﻘﻭﺍﻋﺩ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﻤﻥ ﺃﺠﻠﻬﺎ ﺒﻨﺎﺀ ﻤﺤﻠل ﺘﺭﺍﻜﻴﺏ ﺒﺎﻟﻁﺭﻴﻘﺔ ﻤﻥ ﺍﻷﺴﻔل ﺇﻟﻰ ﺍﻷﻋﻠﻰ ﺒﺎﻟﻘﻭﺍﻋـﺩ‬ ‫)‪. LR(k‬‬

‫ﻤﻥ ﺃﺠل ﺍﻟﺘﺤﻠﻴل ﺍﻟﺘﺭﻜﻴﺒﻲ ﻟﻠﻘﻭﺍﻋﺩ )‪ LL(1‬ﻨﻌﺘﻤﺩ ﺒﻨﺎﺀ ﺠﺩﻭل ﺍﻟﺘﻔﻜﻴﻙ ﻭ ﻟﺒﻨﺎﺌﻪ ﺴـﻨﺘﻁﺭﻕ ﺇﻟـﻰ‬ ‫ﺤﺴﺎﺏ ﺍﻟﺘﺎﺒﻌﻴﻥ ‪. FOLLOW ، FIRST‬‬ ‫ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺴﺎﺏ ﺍﻟﺘﺎﺒﻊ ﺍﻟـــ ‪FIRST‬‬

‫ﺍﻟﺩﺨل ‪:‬‬

‫ﻗﻭﺍﻋﺩ ﺨﺎﻟﻴﺔ ﻤﻥ ﺍﻟﺴﻴﺎﻕ )‪ G=(N,T,P,S‬ﻭ ﺍﻟﺴﻠﺴﻠﺔ * ) ‪  X 1X 2... Xn  ( N  T‬‬

‫ﺍﻟﺨﺭﺝ‪:‬‬

‫) ‪FIRST ( ‬‬

‫ﺍﻟﻁﺭﻴﻘﺔ‪:‬‬ ‫‪ -١‬ﻨﺸﻜل ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻜﻤﺎ ﻴﻠﻲ ‪:‬‬ ‫‪F  {. X 1X 2..... Xn} (a‬‬

‫‪ (b‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻋﻨﺼﺭﹰﺍ ﻓﻴﻪ ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺭﻤﺯ ﻏﻴﺭ ﻤﺤـﺩﺩ ‪A‬‬ ‫ﻋﻨﺩﻫﺎ ﻨﻀﻴﻑ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﺠﻤﻴﻊ ﺍﻟﻘﻭﺍﻨﻴﻥ ﻤـﻥ ‪ P‬ﺫﺍﺕ ﺍﻟﺭﻤـﺯ ‪ A‬ﻓـﻲ‬

‫ﺍﻟﻁﺭﻑ ﺍﻷﻴﺴﺭ ﻭ ﻨﻀﻊ ﺍﻟﻨﻘﻁﺔ ﻗﺒل ﺃﻭل ﺭﻤﺯ ﻤﻥ ﺍﻟﻁﺭﻑ ﺍﻷﻴﻤﻥ‪.‬‬

‫}‪F : F  { A  . : B   . A  F , A  N , A    P‬‬


‫‪ (c‬ﺇﺫﺍ ﻜﺎﻥ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ‪F‬‬

‫ﻋﻨﺼﺭﺍﹰ ﻭﺠﺩ ﺍﻟﻨﻘﻁﺔ ﻓﻴﻪ ﻓﻲ ﻨﻬﺎﻴـﺔ ﺍﻟﻤﺭﻜﺒـﺔ ﺃﻱ‬

‫ﻤﺭﻜﺒﺔ ﻤﻥ ﺍﻟﺸﻜل ‪ B   .‬ﻋﻨﺩﻫﺎ ﻨﺩﺨل ﺇﻟﻰ ‪ F‬ﻤﺭﻜﺒﺎﺕ ﺠﺩﻴﺩﺓ ﻤﺸـﻜﻠﺔ ﺒﺈﺯﺍﺤـﺔ‬

‫ﺍﻟﻨﻘﺎﻁ ﺇﻟﻰ ﺨﻠﻑ ‪ B‬ﻓﻲ ﺠﻤﻴﻊ ﺘﻠﻙ ﺍﻟﻤﺭﻜﺒﺎﺕ ﻤﻥ ‪ F‬ﺍﻟﺘﻲ ﻜﺎﻨﺕ ﺍﻟﻨﻘﻁﺔ ﻓﻴﻬـﺎ ﻗﺒـل‬ ‫‪.B‬‬

‫} ‪F : F  { A  B. : A   .B  F , B   .  F‬‬

‫‪ (d‬ﻨﻌﻴﺩ ﺍﻟﺨﻁﻭﺍﺕ ‪ b, c‬ﺒﺎﺴﺘﻤﺭﺍﺭ ﻁﺎﻟﻤﺎ ﻤﻥ ﺍﻟﻤﻤﻜﻥ ﺇﻀﺎﻓﺔ ﻋﻨﺎﺼﺭ ﺠﺩﻴﺩﺓ ﺇﻟـﻰ‬ ‫‪.F‬‬

‫‪ -٢‬ﻨﺸﻜل ﺍﻟﻤﺠﻤﻭﻋﺔ ) ‪ FIRST ( ‬ﺒﺈﺩﺨﺎل ﺠﻤﻴﻊ ﺍﻟﺭﻤﻭﺯ ﺍﻟﻤﺤﺩﺩﺓ )ﺍﻟﻨﻬﺎﺌﻴﺔ( ﺍﻟﺘﻲ ﺘﻅﻬﺭ ﻓﻲ‬ ‫ﺇﺤﺩﻯ ﻋﻨﺎﺼﺭ ‪ F‬ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺇﻟﻴﻬﺎ ‪.‬‬

‫‪ -٣‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ‪ F‬ﻋﻨﺼﺭﺍﹰ ﺘﻅﻬﺭ ﺍﻟﻨﻘﻁﺔ ﻓﻴﻪ ﻓﻲ ﻨﻬﺎﻴﺔ ﺍﻟﺴﻠﺴﻠﺔ ‪ ‬ﻋﻨـﺩﻫﺎ ﻨﻀـﻴﻑ ﺇﻟـﻰ‬

‫ـﺔ ‪:‬‬ ‫ـﻠﺔ ﻓﺎﺭﻏــــــــــــــ‬ ‫) ‪ FIEST ( ‬ﺴﻠﺴــــــــــــــ‬

‫} ‪FIRST (  )  {a : a  T , A   .a  F }  {e :  .  F‬‬

‫ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺴﺎﺏ ﺍﻟﺘﺎﺒﻊ ﺍﻟـــ ‪:FOLLOW‬‬

‫ﺍﻟﺩﺨل ‪:‬‬

‫ﻗﻭﺍﻋﺩ ﺨﺎﻟﻴﺔ ﻤﻥ ﺍﻟﺴﻴﺎﻕ )‪ G=(N,T,P,S‬ﻭ ﺍﻟﺭﻤﺯ ﻏﻴﺭ ﺍﻟﻤﺤﺩﺩ ‪A‬‬

‫ﺍﻟﺨﺭﺝ‪:‬‬ ‫)‪FOLLOW (A‬‬

‫ﺍﻟﻁﺭﻴﻘﺔ‪:‬‬

‫‪ -١‬ﻨﺸﻜل ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻜﻤﺎ ﻴﻠﻲ ‪:‬‬ ‫‪ (a‬ﻨﺸﻜل ﻗﺎﻨﻭﻨﺎﹰ ﺜﺎﺒﺘﺎﹰ ‪ A  A‬ﻭ ﻨﻀﻊ ‪F : { A  A.} :‬‬

‫‪ (b‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﺇﺤﺩﻯ ﺍﻟﻤﺭﻜﺒﺎﺕ ﻓﻴﻬﺎ ﺍﻟﻨﻘﻁﺔ ﻓﻲ ﻨﻬﺎﻴﺔ ﺍﻟﻤﺭﻜﺒـﺔ ﺃﻱ‬

‫ﻤﺭﻜﺒﺔ ﻤﻥ ﺍﻟﺸﻜل ‪ B   .‬ﻋﻨﺩﻫﺎ ﻨﺩﺨل ﺇﻟﻰ ‪ F‬ﻤﺭﻜﺒﺎﺕ ﺠﺩﻴﺩﺓ ﺘﺘﺄﻟﻑ ﻤـﻥ ﺘﻠـﻙ‬

‫ﺍﻟﻘﻭﺍﻨﻴﻥ ﻤﻥ ‪ P‬ﺍﻟﺘﻲ ﻴﻅﻬﺭ ﻋﻠﻰ ﻁﺭﻓﻬﺎ ﺍﻷﻴﻤﻥ ﺍﻟﺭﻤﺯ ‪ B‬ﻭ ﻨﻀﻊ ﻓﻴﻬﺎ ﺍﻟﻨﻘﻁﺔ ﺒﻌـﺩ‬

‫ﻫﺫﺍ ﺍﻟﺭﻤﺯ ‪ B‬ﻤﺒﺎﺸﺭﺓ ‪.‬‬

‫}‪F : F  {C  B. : B   .  F , C  B  P‬‬

‫‪ (c‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻋﻨﺼﺭﺍﹰ ﻓﻴﻪ ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺭﻤﺯ ﻏﻴﺭ ﻤﺤﺩﺩ ﻭ‬ ‫ﻴﻨﺘﻤﻲ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ Ne‬ﻋﻨﺩﻫﺎ ﻨﻀﻴﻑ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻤﺭﻜﺒﺔ ﺃﺨﺭﻯ ﻴﺠﺭﻱ‬

‫ﺘﺸﻜﻴﻠﻬﺎ ﻤﻥ ﺍﻟﻤﺭﻜﺒﺎﺕ ﺍﻟﻤﺫﻜﻭﺭﺓ ﺒﺈﺯﺍﺤﺔ ﺍﻟﻨﻘﻁﺔ ﺒﻤﻘﺩﺍﺭ ﺭﻤﺯ ﻭﺍﺤﺩ ﺇﻟﻰ ﺍﻟﻴﻤﻴﻥ ‪.‬‬ ‫}‪F : F  { A  B. : A   .B  F , B  Ne‬‬


‫‪ (d‬ﻨﻌﻴﺩ ﺍﻟﺨﻁﻭﺍﺕ ‪ b, c‬ﺒﺎﺴﺘﻤﺭﺍﺭ ﻁﺎﻟﻤﺎ ﻤﻥ ﺍﻟﻤﻤﻜﻥ ﺇﻀﺎﻓﺔ ﻋﻨﺎﺼﺭ ﺠﺩﻴﺩﺓ ﺇﻟـﻰ‬ ‫‪.F‬‬

‫‪ ( e‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻋﻨﺼﺭﺍﹰ ﻓﻴﻪ ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺭﻤﺯ ﻏﻴﺭ ﻤﺤـﺩﺩ‬

‫‪ A‬ﻋﻨﺩﻫﺎ ﻨﻀﻴﻑ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﺠﻤﻴﻊ ﺍﻟﻘﻭﺍﻨﻴﻥ ﻤـﻥ ‪ P‬ﺫﺍﺕ ﺍﻟﺭﻤـﺯ ‪ A‬ﻓـﻲ‬ ‫ﺍﻟﻁﺭﻑ ﺍﻷﻴﺴﺭ ﻭ ﻨﻀﻊ ﺍﻟﻨﻘﻁﺔ ﻗﺒل ﺃﻭل ﺭﻤﺯ ﻤﻥ ﺍﻟﻁﺭﻑ ﺍﻷﻴﻤﻥ‪.‬‬ ‫}‪F : F  { A  . : B   . A  F , A  N , A    P‬‬

‫‪(f‬‬

‫ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻋﻨﺼﺭﺍﹰ ﻓﻴﻪ ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺭﻤﺯ ﻏﻴﺭ ﻤﺤﺩﺩ ﻭ‬

‫ﻴﻨﺘﻤﻲ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ Ne‬ﻋﻨﺩﻫﺎ ﻨﻀﻴﻑ ﺇﻟﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ‪ F‬ﻤﺭﻜﺒﺔ ﺃﺨﺭﻯ ﻴﺠﺭﻱ‬

‫ﺘﺸﻜﻴﻠﻬﺎ ﻤﻥ ﺍﻟﻤﺭﻜﺒﺎﺕ ﺍﻟﻤﺫﻜﻭﺭﺓ ﺒﺈﺯﺍﺤﺔ ﺍﻟﻨﻘﻁﺔ ﺒﻤﻘﺩﺍﺭ ﺭﻤﺯ ﻭﺍﺤﺩ ﺇﻟﻰ ﺍﻟﻴﻤﻴﻥ ‪.‬‬ ‫}‪F : F  { A  B. : A   .B  F , B  Ne‬‬

‫‪ (g‬ﻨﻌﻴﺩ ﺍﻟﺨﻁﻭﺍﺕ ‪ e , f‬ﺒﺎﺴﺘﻤﺭﺍﺭ ﻁﺎﻟﻤﺎ ﻤﻥ ﺍﻟﻤﻤﻜﻥ ﺇﻀﺎﻓﺔ ﻋﻨﺎﺼﺭ ﺠﺩﻴﺩﺓ ﺇﻟـﻰ‬ ‫‪.F‬‬

‫‪-٢‬ﻨﺸﻜل ﺍﻟﻤﺠﻤﻭﻋﺔ ) ‪ FOLLOW ( ‬ﺒﺈﺩﺨﺎل ﺠﻤﻴﻊ ﺍﻟﺭﻤﻭﺯ ﺍﻟﻤﺤﺩﺩﺓ ﺍﻟﺘﻲ ﺘﻅﻬﺭ ﻓﻲ ﺇﺤﺩﻯ‬ ‫ﻋﻨﺎﺼﺭ ‪ F‬ﺒﻌﺩ ﺍﻟﻨﻘﻁﺔ ﻤﺒﺎﺸﺭﺓ ﺇﻟﻴﻬﺎ ‪.‬‬

‫‪ -٣‬ﺇﺫﺍ ﻭﺠﺩ ﻓﻲ ‪ F‬ﻋﻨﺼﺭﺍﹰ ﺘﻅﻬﺭ ﺍﻟﻨﻘﻁﺔ ﻓﻴﻪ ﻓﻲ ﻨﻬﺎﻴﺔ ﺍﻟﻘﺎﻨﻭﻥ ﻋﻠﻰ ﺍﻟﻁﺭﻑ ﺍﻷﻴﺴﺭ ﺍﻟﺭﻤﺯ‬ ‫‪ S‬ﻋﻨﺩﻫﺎ ﻨﻀﻴﻑ ﺇﻟﻰ ) ‪ FOLLOW ( ‬ﺴﻠﺴﻠﺔ ﻓﺎﺭﻏﺔ ‪:‬‬

‫} ‪FOLLOW ( A)  {a : a  T , B   .a  F }  {e : S   .  F‬‬

compiler 03  

first and follow algorithm

Read more
Read more
Similar to
Popular now
Just for you