Professional Documents
Culture Documents
Book 22 187 101 166.en - Ar
Book 22 187 101 166.en - Ar
com -
ﺍﻟﺒﺮﻣﺠﺔﺍﻟﻮﻇﻴﻔﻴﺔ ﻣﻊ ﺍﻟﺘﻤﺪﺩ ﻛﺄﺣﺪ ﺃﻫﺪﺍﻓﻬﺎ ﺍﻷﺳﺎﺳﻴﺔ .ﻣﻦ ﺑﻴﻦ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺃﺛﺮﺕ ﻓﻲ
ﺗﺼﻤﻴﻤﻬﺎ Schemeﻭ Iconﻭ .Python
ﻳﺸﺒﻪ Lua JavaScriptﻣﻦ ﺣﻴﺚ ﺃﻧﻪ ﻻ ﻳﺪﻋﻢ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﻮﺟﻬﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ﻭﻟﻜﻦ ﻣﻦ
ﺍﻟﻮﺍﺿﺢﺃﻧﻪ ﺗﺄﺛﺮ ﺑﻬﺎ .ﻛﻼﻫﻤﺎ ﻟﻪ ﻛﺎﺉﻨﺎﺕ ﺗﻠﻌﺐ ﺩﻭﺭ ﻛﻞ ﻣﻦ ﺍﻟﻔﺉﺎﺕ ﻭﺍﻟﻜﺎﺉﻨﺎﺕ ﻭﻛﻼﻫﻤﺎ ﻟﻪ
ﻣﻴﺮﺍﺙﺍﻟﻨﻤﻮﺫﺝ ﺍﻷﻭﻟﻲ ﺑﺪﻻ ًﻣﻦ ﻭﺭﺍﺛﺔ ﺍﻟﻄﺒﻘﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ، Luaﻳﻤﻜﻦ ﺗﻮﺳﻴﻊ ﺍﻟﻠﻐﺔ ﻟﺪﻋﻢ
ﺍﻟﺒﺮﻣﺠﺔﺍﻟﺸﻴﺉﻴﺔ.
ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻓﻲ ﺍﻟﻤﺨﻄﻂ ،ﻓﺈﻥ ﻭﻇﺎﺉﻒ Luaﻫﻲ ﻗﻴﻢ ﻣﻦ ﺍﻟﺪﺭﺟﺔ ﺍﻷﻭﻟﻰ .ﺃﻳﻀﺎً ،ﻳﺪﻋﻢ
Luaﻋﻤﻠﻴﺎﺕ ﺍﻹﻏﻼﻕ .ﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻟﻘﺪﺭﺍﺕ ﺑﺎﺳﺘﺨﺪﺍﻣﻪ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻮﻇﻴﻔﻴﺔ .ﺃﻳﻀﺎً ﻣﺜﻞ
، Schemeﻓﺈﻥ Luaﻟﺪﻳﻬﺎ ﺑﻨﻴﺔ ﺑﻴﺎﻧﺎﺕ ﻭﺍﺣﺪﺓ ﻓﻘﻂ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻬﺎ ﻓﻲ ﺣﺎﻟﺔ ، Lua
ﻓﻬﻲﺍﻟﺠﺪﻭﻝ .ﺗﻌﻤﻞ ﺟﺪﺍﻭﻝ Luaﻋﻠﻰ ﺗﻮﺳﻴﻊ ﻣﺼﻔﻮﻓﺎﺕ PHPﺍﻟﻤﺴﺎﻋﺪﺓ ،ﻭﺍﻟﺘﻲ ﺗﺸﻤﻞ
ﻣﺼﻔﻮﻓﺎﺕﺍﻟﻠﻐﺎﺕ ﺍﻟﺤﺘﻤﻴﺔ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ .ﻳﻤﻜﻦ ﺃﻥ ﺗﺄﺧﺬ ﺍﻹﺷﺎﺭﺍﺕ ﺇﻟﻰ ﻋﻨﺎﺻﺮ ﺍﻟﺠﺪﻭﻝ ﺷﻜﻞ
ﻣﺮﺍﺟﻊﺇﻟﻰ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺃﻭ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ﺃﻭ ﺍﻟﺴﺠﻼﺕ .ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﺪﺍﻻﺕ
ﻫﻲﻗﻴﻢ ﻣﻦ ﺍﻟﺪﺭﺟﺔ ﺍﻷﻭﻟﻰ ،ﻓﻴﻤﻜﻦ ﺗﺨﺰﻳﻨﻬﺎ ﻓﻲ ﺟﺪﺍﻭﻝ ،ﻭﻳﻤﻜﻦ ﺃﻥ ﺗﻌﻤﻞ ﻫﺬﻩ ﺍﻟﺠﺪﺍﻭﻝ
ﻛﻤﺴﺎﺣﺎﺕﺃﺳﻤﺎء.
ﻳﺴﺘﺨﺪﻡ Luaﻣﺠﻤﻮﻋﺔ ﺍﻟﻘﻤﺎﻣﺔ ﻟﻜﺎﺉﻨﺎﺗﻪ ،ﻭﺍﻟﺘﻲ ﻳﺘﻢ ﺗﺨﺼﻴﺺ ﻛﻮﻣﺔ ﻛﻠﻬﺎ .ﺗﺴﺘﺨﺪﻡ
ﺍﻟﻜﺘﺎﺑﺔﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ،ﻛﻤﺎ ﺗﻔﻌﻞ ﻣﻌﻈﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﻷﺧﺮﻯ.
ﻟﻮﺍﻫﻲ ﻟﻐﺔ ﺻﻐﻴﺮﺓ ﻭﺑﺴﻴﻄﺔ ﻧﺴﺒﻴﺎً ،ﻭﺗﺤﺘﻮﻱ ﻋﻠﻰ 21ﻛﻠﻤﺔ ﻣﺤﺠﻮﺯﺓ ﻓﻘﻂ .ﻛﺎﻧﺖ ﻓﻠﺴﻔﺔ
ﺗﺼﻤﻴﻢﺍﻟﻠﻐﺔ ﻫﻲ ﺗﻮﻓﻴﺮ ﺍﻷﺳﺎﺳﻴﺎﺕ ﻭﺍﻟﻄﺮﻕ ﺍﻟﺒﺴﻴﻄﺔ ﻧﺴﺒﻴﺎً ﻟﺘﻮﺳﻴﻊ ﺍﻟﻠﻐﺔ ﻟﻠﺴﻤﺎﺡ ﻟﻬﺎ ﺑﺘﻼﺉﻢ
ﻣﺠﻤﻮﻋﺔﻣﺘﻨﻮﻋﺔ ﻣﻦ ﻣﺠﺎﻻﺕ ﺍﻟﺘﻄﺒﻴﻖ .ﺗﻨﺒﻊ ﺍﻟﻜﺜﻴﺮ ﻣﻦ ﻗﺎﺑﻠﻴﺘﻬﺎ ﻟﻠﺘﻮﺳﻌﺔ ﻣﻦ ﺑﻨﻴﺔ ﺑﻴﺎﻧﺎﺕ
ﺍﻟﺠﺪﻭﻝﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ،ﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺗﺨﺼﻴﺼﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻔﻬﻮﻡ Luaﺍﻟﻘﺎﺑﻞ ﻟﻠﺘﻮﺳﻴﻊ.
ﻳﻤﻜﻦﺍﺳﺘﺨﺪﺍﻡ Luaﺑﺴﻬﻮﻟﺔ ﻛﻤﻠﺤﻖ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻟﻠﻐﺎﺕ ﺃﺧﺮﻯ .ﻣﺜﻞ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﻔﻴﺬ
ﺍﻟﻤﺒﻜﺮﺓﻟـ ، Javaﺗﻤﺖ ﺗﺮﺟﻤﺔ Luaﺇﻟﻰ ﺭﻣﺰ ﻭﺳﻴﻂ ﻭﺗﻔﺴﻴﺮﻫﺎ .ﻳﻤﻜﻦ ﺑﺴﻬﻮﻟﺔ ﺗﻀﻤﻴﻨﻬﺎ
ﺑﺒﺴﺎﻃﺔﻓﻲ ﺃﻧﻈﻤﺔ ﺃﺧﺮﻯ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﺟﺰﺉﻴﺎً ﺇﻟﻰ ﺻﻐﺮ ﺣﺠﻢ ﻣﺘﺮﺟﻤﻬﺎ ،ﻭﺍﻟﺬﻱ ﻳﺒﻠﻎ ﺣﻮﺍﻟﻲ
150ﻛﻴﻠﻮ ﺑﺎﻳﺖ ﻓﻘﻂ.
2.19.1ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻤﻴﻢ
ﻳﻌﺘﻤﺪ # Cﻋﻠﻰ ++ Cﻭ Javaﻭﻟﻜﻨﻪ ﻳﺘﻀﻤﻦ ﺑﻌﺾ ﺍﻷﻓﻜﺎﺭ ﻣﻦ Delphiﻭ .Visual BASIC
ﻣﺼﻤﻤﻬﺎﺍﻟﺮﺉﻴﺴﻲ ، Anders Hejlsberg ،ﺻﻤﻢ ﺃﻳﻀﺎً Turbo Pascalﻭ ، Delphiﻭﻫﻮ
ﻣﺎﻳﻔﺴﺮ ﺃﺟﺰﺍء ﺩﻟﻔﻲ ﻣﻦ ﺗﺮﺍﺙ .# C
ﺍﻟﻐﺮﺽﻣﻦ # Cﻫﻮ ﺗﻮﻓﻴﺮ ﻟﻐﺔ ﻟﺘﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﻤﻜﻮﻧﺎﺕ ،ﺧﺎﺻﺔ ﻟﻤﺜﻞ ﻫﺬﺍ
ﺍﻟﺘﻄﻮﻳﺮﻓﻲ .NET Framework.ﻓﻲ ﻫﺬﻩ ﺍﻟﺒﻴﺉﺔ ،ﻳﻤﻜﻦ ﺩﻣﺞ ﻣﻜﻮﻧﺎﺕ ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ
ﻣﻦﺍﻟﻠﻐﺎﺕ ﺑﺴﻬﻮﻟﺔ ﻟﺘﺸﻜﻴﻞ ﺃﻧﻈﻤﺔ .ﺟﻤﻴﻊ ﻟﻐﺎﺕ ، NET.ﻭﺍﻟﺘﻲ ﺗﺸﻤﻞ # Cﻭ Basic .NET
Visualﻭ ++ Managed Cﻭ # Fﻭ 17، JScript .NETﺍﺳﺘﺨﺪﻡ ﻧﻈﺎﻡ ﺍﻟﻨﻮﻉ ﺍﻟﻤﺸﺘﺮﻙ ).(CTS
ﻳﻮﻓﺮ CTSﻣﻜﺘﺒﺔ ﻣﺸﺘﺮﻛﺔ ﻟﻠﻔﺼﻞ .ﻛﻞ ﺍﻷﻧﻮﺍﻉ ﻓﻲ ﻛﻞ ﺧﻤﺴﺔ .ﺗﺮﺙ ﻟﻐﺎﺕ NETﻣﻦ ﺟﺬﺭ ﻓﺉﺔ
ﻭﺍﺣﺪ ،ﺍﻟﻨﻈﺎﻡ.ﺗﻘﻮﻡ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺤﻮﻳﻞ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻟﺘﻲ ﺗﺘﻮﺍﻓﻖ ﻣﻊ ﻣﻮﺍﺻﻔﺎﺕ CTSﺑﺈﻧﺸﺎء ﻛﺎﺉﻨﺎﺕ
ﻳﻤﻜﻦﺩﻣﺠﻬﺎ ﻓﻲ ﺃﻧﻈﻤﺔ ﺑﺮﻣﺠﻴﺔ .ﻳﺘﻢ ﺗﺠﻤﻴﻊ ﺟﻤﻴﻊ ﻟﻐﺎﺕ NET.ﻓﻲ ﻧﻔﺲ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻮﺳﻴﻂ ،
ﺍﻟﻠﻐﺔﺍﻟﻮﺳﻴﻄﺔ )18.(ILﻋﻠﻰ ﻋﻜﺲ ، Javaﻻ ﻳﺘﻢ ﺗﻔﺴﻴﺮ ILﻣﻄﻠﻘﺎً .ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺘﺮﺟﻢ -Time
Just-inﻟﺘﺮﺟﻤﺔ ILﺇﻟﻰ ﻛﻮﺩ ﺍﻵﻟﺔ ﻗﺒﻞ ﺗﻨﻔﻴﺬﻩ.
ﻟﺼﺎﻟﺢﻣﺼﻤﻤﻲ ، # Cﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺤﺎﻻﺕ ،ﺗﻢ ﺗﺤﺴﻴﻦ ﺇﺻﺪﺍﺭ # C
ﻟﻤﻴﺰﺓ .++ Cﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻣﻠﻒﺗﻌﺪﺍﺩﺗﻌﺪ ﺃﻧﻮﺍﻉ # Cﺃﻛﺜﺮ ﺃﻣﺎﻧﺎً ﻣﻦ ﺃﻧﻮﺍﻉ ، ++ Cﻷﻧﻬﺎ ﻻ
ﻳﺘﻢﺗﺤﻮﻳﻠﻬﺎ ﺿﻤﻨﻴﺎً ﺇﻟﻰ ﺃﻋﺪﺍﺩ ﺻﺤﻴﺤﺔ .ﻫﺬﺍ ﻳﺴﻤﺢ ﻟﻬﻢ ﺑﺄﻥ ﻳﻜﻮﻧﻮﺍ ﺃﻛﺜﺮ ﺃﻣﺎﻧﺎً .ﺍﻝﻫﻴﻜﻞﺗﻢ ﺗﻐﻴﻴﺮ
ﺍﻟﻨﻮﻉﺑﺸﻜﻞ ﻛﺒﻴﺮ ،ﻣﻤﺎ ﺃﺩﻯ ﺇﻟﻰ ﺗﻜﻮﻳﻦ ﻣﻔﻴﺪ ﺣﻘﺎً ،ﺑﻴﻨﻤﺎ ﻓﻲ ++ Cﻻ ﻳﺨﺪﻡ ﺃﻱ ﻏﺮﺽ ﺗﻘﺮﻳﺒﺎً.
ﺗﻤﺖﻣﻨﺎﻗﺸﺔ ﻫﻴﺎﻛﻞ # Cﻓﻲ ﺍﻟﻔﺼﻞ # C .12ﻳﺄﺧﺬ ﻃﻌﻨﺔ ﻓﻲ ﺗﺤﺴﻴﻦ
ﻳﺤُﻮﻝّﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ Cﻭ ++ Cﻭ .Javaﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﻣﻔﺘﺎﺡ # Cﻓﻲ ﺍﻟﻔﺼﻞ .8
ﺗﺤﻮﻳﻞﺍﻟﻘﻴﻢ ﺑﻴﻦ ﺍﻟﻨﻈﺎﻣﻴﻦ -ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻟﻮﺿﻊ ﻗﻴﻤﺔ ﺃﻭﻟﻴﺔ ﻓﻲ ﻣﺠﻤﻮﻋﺔ ﺗﺨﺰﻥ
ﺍﻟﻜﺎﺉﻨﺎﺕ.ﻳﺠﻌﻞ # Cﺍﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ﻗﻴﻢ ﻧﻈﺎﻣﻲ ﺍﻟﻜﺘﺎﺑﺔ ﺿﻤﻨﻴﺎً ﺟﺰﺉﻴﺎً ﻣﻦ ﺧﻼﻝ ﻋﻤﻠﻴﺎﺕ
ﺍﻟﻤﻼﻛﻤﺔﺍﻟﻀﻤﻨﻴﺔ ﻭﺇﻟﻐﺎء ﺍﻟﻌﺒﻮﺓ ،ﻭﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺍﻟﻔﺼﻞ 20.12
ﺗﻄﻮﺭ # Cﺑﺸﻜﻞ ﻣﺴﺘﻤﺮ ﻭﺳﺮﻳﻊ ﻣﻨﺬ ﺇﺻﺪﺍﺭﻩ ﺍﻷﻭﻟﻲ ﻓﻲ ﻋﺎﻡ .2002ﺃﺣﺪﺙ ﺇﺻﺪﺍﺭ ﻫﻮ
.C #2010ﻳﻀﻴﻒ C # 2010ﺷﻜﻼ ًﻣﻦ ﺃﺷﻜﺎﻝ ﺍﻟﻜﺘﺎﺑﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ،ﻭﺍﻟﻜﺘﺎﺑﺔ ﺍﻟﻀﻤﻨﻴﺔ ،
ﻭﺍﻷﻧﻮﺍﻉﺍﻟﻤﺠﻬﻮﻟﺔ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ .(6
2.19.3ﺍﻟﺘﻘﻴﻴﻢ
ﻛﺎﻥﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺃﻥ ﺗﻜﻮﻥ # Cﺗﺤﺴﻴﻨﺎً ﻟﻜﻞ ﻣﻦ ++ Cﻭ Javaﻛﻠﻐﺔ ﺑﺮﻣﺠﺔ ﺫﺍﺕ ﺃﻏﺮﺍﺽ
ﻋﺎﻣﺔ.ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻳﻤﻜﻦ ﺍﻟﻘﻮﻝ ﺃﻥ ﺑﻌﺾ ﻣﻴﺰﺍﺗﻪ ﻫﻲ ﺧﻄﻮﺓ ﺇﻟﻰ ﺍﻟﻮﺭﺍء ،ﺇﻻ ﺃﻥ # C
ﺗﺘﻀﻤﻦﺑﻮﺿﻮﺡ ﺑﻌﺾ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺘﻲ ﺗﻨﻘﻠﻬﺎ ﺇﻟﻰ ﻣﺎ ﻭﺭﺍء ﺳﺎﺑﻘﺎﺗﻬﺎ .ﺑﺎﻟﺘﺄﻛﻴﺪ ﺳﻴﺘﻢ ﺍﻋﺘﻤﺎﺩ
ﺑﻌﺾﻣﻴﺰﺍﺗﻪ ﺑﻮﺍﺳﻄﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺍﻟﻤﺴﺘﻘﺒﻞ ﺍﻟﻘﺮﻳﺐ .ﺍﻟﺒﻌﺾ ﻳﻔﻌﻞ ﺑﺎﻟﻔﻌﻞ.
= [ﺍﻟﻌﺪﺍﺩ] intList
Int32.Parse )Console.readLine )(( ،
؛ { - //ﻧﻬﺎﻳﺔ ﻟـ )ﻋﺪﺍﺩ // ...ﺣﺴﺎﺏ ﺍﻟﻤﺘﻮﺳﻂ [
ﻋﺪﺍﺩ] sum + = intList
ﺁﺧﺮ
ﻭﺣﺪﺓﺍﻟﺘﺤﻜﻢ.
"ﺧﻄﺄ -ﻃﻮﻝ ﻗﺎﺉﻤﺔ ﺍﻹﺩﺧﺎﻝ ﻏﻴﺮ ﻗﺎﻧﻮﻧﻲ"( ؛ { - //ﻧﻬﺎﻳﺔ ﺍﻟﻄﺮﻳﻘﺔ
ﺍﻟﺮﺉﻴﺴﻴﺔ
{ - //ﻧﻬﺎﻳﺔ ﺍﻟﻔﺉﺔ Ch2example
2.20.1 XSLT
ﻟﻐﺔﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﻤﻮﺳﻌﺔ ) (XMLﻫﻲ ﻟﻐﺔ .metamarkupﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﻟﺘﺤﺪﻳﺪ ﻟﻐﺎﺕ
ﺍﻟﺘﺮﻣﻴﺰ.ﺗﺴﺘﺨﺪﻡ ﻟﻐﺎﺕ ﺍﻟﺘﺮﻣﻴﺰ ﺍﻟﻤﺸﺘﻘﺔ ﻣﻦ XMLﻟﺘﺤﺪﻳﺪ ﻣﺴﺘﻨﺪﺍﺕ ﺍﻟﺒﻴﺎﻧﺎﺕ ،ﻭﺍﻟﺘﻲ ﺗﺴﻤﻰ
ﻣﺴﺘﻨﺪﺍﺕ .XMLﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻣﺴﺘﻨﺪﺍﺕ XMLﻗﺎﺑﻠﺔ ﻟﻠﻘﺮﺍءﺓ ﺍﻟﺒﺸﺮﻳﺔ ،ﺇﻻ ﺃﻧﻬﺎ ﺗﺘﻢ
ﻣﻌﺎﻟﺠﺘﻬﺎﺑﻮﺍﺳﻄﺔ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﺗﺘﻜﻮﻥ ﻫﺬﻩ ﺍﻟﻤﻌﺎﻟﺠﺔ ﻓﻲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﻓﻘﻂ ﻣﻦ ﻋﻤﻠﻴﺎﺕ
ﺍﻟﺘﺤﻮﻳﻞﺇﻟﻰ ﺍﻟﻨﻤﺎﺫﺝ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻋﺮﺿﻬﺎ ﺃﻭ ﻃﺒﺎﻋﺘﻬﺎ ﺑﺸﻜﻞ ﻓﻌﺎﻝ .ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻟﺤﺎﻻﺕ ،
ﺗﻜﻮﻥﻫﺬﻩ ﺍﻟﺘﺤﻮﻳﻼﺕ ﺇﻟﻰ ، HTMLﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻋﺮﺿﻬﺎ ﺑﻮﺍﺳﻄﺔ ﻣﺴﺘﻌﺮﺽ ﺍﻟﻮﻳﺐ .ﻓﻲ
ﺣﺎﻻﺕﺃﺧﺮﻯ ،ﺗﺘﻢ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺍﻟﻤﺴﺘﻨﺪ ،ﺗﻤﺎﻣﺎً ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺃﺷﻜﺎﻝ
ﻣﻠﻔﺎﺕﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻷﺧﺮﻯ.
ﻣﻌﺎﻟﺞ XSLTﻫﻮ ﺑﺮﻧﺎﻣﺞ ﻳﺄﺧﺬ ﻛﻤﺪﺧﻼﺕ ﻣﺴﺘﻨﺪ ﺑﻴﺎﻧﺎﺕ XMLﻭﻭﺛﻴﻘﺔ ) XSLTﻭﺍﻟﺘﻲ ﺗﻜﻮﻥ
ﺃﻳﻀﺎًﻓﻲ ﺷﻜﻞ ﻣﺴﺘﻨﺪ .(XMLﻓﻲ ﻫﺬﻩ ﺍﻟﻤﻌﺎﻟﺠﺔ ،ﻳﺘﻢ ﺗﺤﻮﻳﻞ ﻣﺴﺘﻨﺪ ﺑﻴﺎﻧﺎﺕ XMLﺇﻟﻰ XML
ﺁﺧﺮ
105 2.20ﺗﺮﻣﻴﺰ /ﺑﺮﻣﺠﺔ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺨﺘﻠﻄﺔ
ﻳﺤﺘﻮﻱ XSLTﺃﻳﻀﺎً ﻋﻠﻰ ﺑﻨﻴﺎﺕ ﺑﺮﻣﺠﺔ ﺑﻤﺴﺘﻮﻯ ﺃﺩﻧﻰ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺘﻢ ﺗﻀﻤﻴﻦ
ﺑﻨﻴﺔﺍﻟﺘﻜﺮﺍﺭ ،ﻭﺍﻟﺘﻲ ﺗﺴﻤﺢ ﺑﺘﺤﺪﻳﺪ ﺃﺟﺰﺍء ﻣﺘﻜﺮﺭﺓ ﻣﻦ ﻣﺴﺘﻨﺪ .XMLﻫﻨﺎﻙ ﺃﻳﻀﺎ ﻋﻤﻠﻴﺔ ﻓﺮﺯ.
ﻫﺬﻩﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺫﺍﺕ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻷﺩﻧﻰ ﻣﺤﺪﺩﺓ ﺑﻌﻼﻣﺎﺕ ، XSLTﻣﺜﻞ >ﻟﻜﻞ<.
2.20.2 JSP
ﺍﻟﺠﺰء"ﺍﻷﺳﺎﺳﻲ" ﻣﻦ ﻣﻜﺘﺒﺔ ﺍﻟﻌﻼﻣﺎﺕ ﺍﻟﻘﻴﺎﺳﻴﺔ ﻟﺼﻔﺤﺎﺕ ﺧﺎﺩﻡ ﺟﺎﻓﺎ ) (JSTLﻫﻮ ﻟﻐﺔ ﻫﺠﻴﻨﺔ
ﺃﺧﺮﻯﻟﻠﺘﺮﻣﻴﺰ /ﺍﻟﺒﺮﻣﺠﺔ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺍﺧﺘﻼﻑ ﺷﻜﻠﻬﺎ ﻭﺍﻟﻐﺮﺽ ﻣﻨﻬﺎ ﻋﻦ ﻟﻐﺔ .XSLTﻗﺒﻞ
ﻣﻨﺎﻗﺸﺔ ، JSTLﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺗﻘﺪﻳﻢ ﺃﻓﻜﺎﺭ servletsﻭﺻﻔﺤﺎﺕ ﺧﺎﺩﻡ ( .Java )JSPﺃservlet
ﻫﻮﻣﺜﻴﻞ ﻟﻔﺉﺔ Javaﺗﻮﺟﺪ ﻋﻠﻰ ﻧﻈﺎﻡ ﺧﺎﺩﻡ ﻭﻳﺐ ﻭﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻋﻠﻰ ﻧﻈﺎﻡ ﺧﺎﺩﻡ ﺍﻟﻮﻳﺐ .ﻳﺘﻢ
ﻃﻠﺐﺗﻨﻔﻴﺬ servletﺑﻮﺍﺳﻄﺔ ﻭﺛﻴﻘﺔ ﺗﻌﻠﻴﻢ ﻳﺘﻢ ﻋﺮﺿﻬﺎ ﺑﻮﺍﺳﻄﺔ ﻣﺴﺘﻌﺮﺽ ﻭﻳﺐ .ﻳﺘﻢ ﺇﺭﺟﺎﻉ
ﻣﺨﺮﺟﺎﺕ ، servletﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻓﻲ ﺷﻜﻞ ﻭﺛﻴﻘﺔ ، HTMLﺇﻟﻰ ﺑﺮﻧﺎﻣﺞ ﺍﻻﺳﺘﻌﺮﺍﺽ ﺍﻟﻤﻄﻠﻮﺏ.
ﺑﺮﻧﺎﻣﺞﻳﺘﻢ ﺗﺸﻐﻴﻠﻪ ﻓﻲ ﻋﻤﻠﻴﺔ ﺧﺎﺩﻡ ﺍﻟﻮﻳﺐ ،ﻭﻳﺴﻤﻰ aﺣﺎﻭﻳﺔ ،servletﻳﺘﺤﻜﻢ ﻓﻲ ﺗﻨﻔﻴﺬ
.servletsﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ Servletsﺑﺸﻜﻞ ﺷﺎﺉﻊ ﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻨﻤﺎﺫﺝ ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻗﺎﻋﺪﺓ
ﺍﻟﺒﻴﺎﻧﺎﺕ.
ﺗﻌﺎﻟﺞﺍﻟﺤﺎﻭﻳﺔ ﺃﺟﺰﺍء JSTLﻣﻦ ﻣﺴﺘﻨﺪﺍﺕ JSPﺑﻄﺮﻳﻘﺔ ﻣﺸﺎﺑﻬﺔ ﻟﻜﻴﻔﻴﺔ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻷﻭﻟﻲ C
++ C /ﻟﺒﺮﺍﻣﺞ Cﻭ .++ Cﺃﻭﺍﻣﺮ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻷﻭﻟﻲ ﻫﻲ ﺗﻌﻠﻴﻤﺎﺕ ﻟﻠﻤﻌﺎﻟﺞ ﺍﻷﻭﻟﻲ ﻟﺘﺤﺪﻳﺪ ﻛﻴﻔﻴﺔ
ﺇﻧﺸﺎءﻣﻠﻒ ﺍﻹﺧﺮﺍﺝ ﻣﻦ ﻣﻠﻒ ﺍﻹﺩﺧﺎﻝ .ﻭﺑﺎﻟﻤﺜﻞ ،ﻓﺈﻥ ﻋﻨﺎﺻﺮ ﺗﺼﺮﻑ ﺗﺤﻜﻢ JSTLﻫﻲ
ﺗﻌﻠﻴﻤﺎﺕﻟﻤﻌﺎﻟﺞ JSPﻟﺘﺤﺪﻳﺪ ﻛﻴﻔﻴﺔ ﺑﻨﺎء ﻣﻠﻒ ﻣﺨﺮﺟﺎﺕ XMLﻣﻦ ﻣﻠﻒ ﺇﺩﺧﺎﻝ .XML
ﻣﻠﺨﺺ
ﻟﻘﺪﺑﺤﺜﻨﺎ ﻓﻲ ﺑﻴﺉﺎﺕ ﺍﻟﺘﻄﻮﻳﺮ ﻭﺍﻟﺘﻄﻮﻳﺮ ﻟﻌﺪﺩ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻳﻤﻨﺢ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺍﻟﻘﺎﺭﺉ
ﻣﻨﻈﻮﺭﺍًﺟﻴﺪﺍً ﻟﻠﻘﻀﺎﻳﺎ ﺍﻟﺤﺎﻟﻴﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ .ﻟﻘﺪ ﻣﻬﺪﻧﺎ ﺍﻟﻄﺮﻳﻖ ﻹﺟﺮﺍء ﻣﻨﺎﻗﺸﺔ ﻣﺘﻌﻤﻘﺔ
ﺣﻮﻝﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﻬﻤﺔ ﻟﻠﻐﺎﺕ ﺍﻟﻤﻌﺎﺻﺮﺓ.
ﺣﻮﺍﺷﻲﺑﺒﻠﻴﻮﻏﺮﺍﻓﻴﺔ
ﺭﺑﻤﺎﻳﻜﻮﻥ ﺃﻫﻢ ﻣﺼﺪﺭ ﻟﻠﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ ﺣﻮﻝ ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﺒﻜﺮﺓ ﻫﻮﺗﺎﺭﻳﺦ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔ ،ﺣﺮﺭﻩ ﺭﻳﺘﺸﺎﺭﺩ ﻭﻳﻜﺴﻠﺒﻼﺕ ) .(1981ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﺨﻠﻔﻴﺔ ﺍﻟﺘﻄﻮﻳﺮﻳﺔ ﻭﺍﻟﺒﻴﺉﺔ ﻟـ 13
ﻟﻐﺔﺑﺮﻣﺠﺔ ﻣﻬﻤﺔ ،ﻛﻤﺎ ﺭﻭﻯ ﺍﻟﻤﺼﻤﻤﻮﻥ ﺃﻧﻔﺴﻬﻢ .ﻋﻤﻞ ﻣﻤﺎﺛﻞ ﻧﺘﺞ ﻋﻦ ﻣﺆﺗﻤﺮ "ﺍﻟﺘﺎﺭﻳﺦ"
ﺍﻟﺜﺎﻧﻲ ،ﻧﺸﺮ ﻛﻌﺪﺩ ﺧﺎﺹ ﻣﻦﺇﺷﻌﺎﺭﺍﺕ .)ACM SIGPLANﺃ( .ﻓﻲ ﻫﺬﺍ ﺍﻟﻌﻤﻞ ،ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ
ﺗﺎﺭﻳﺦﻭﺗﻄﻮﺭ 13ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺃﺧﺮﻯ ACM ، 1993
ﺍﻟﻮﺭﻗﺔ"ﺍﻟﺘﻄﻮﻳﺮ ﺍﻟﻤﺒﻜﺮ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ" ) ، (Knuth and Pardo، 1977ﻭﻫﻲ ﺟﺰء ﻣﻦ
ﻣﻮﺳﻮﻋﺔﻋﻠﻮﻡ ﻭﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﻟﺤﺎﺳﻮﺏ ﻫﻮ ﻋﻤﻞ ﻣﻤﺘﺎﺯ ﻣﻜﻮﻥ ﻣﻦ 85ﺻﻔﺤﺔ ﻳﻌﺮﺽ ﺗﻔﺎﺻﻴﻞ
ﺗﻄﻮﺭﺍﻟﻠﻐﺎﺕ ﺣﺘﻰ ﻟﻐﺔ ﻓﻮﺭﺗﺮﺍﻥ ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ .ﺗﺘﻀﻤﻦ ﺍﻟﻮﺭﻗﺔ ﺃﻣﺜﻠﺔ ﻋﻠﻰ ﺑﺮﺍﻣﺞ ﻹﺛﺒﺎﺕ ﻣﻴﺰﺍﺕ
ﺍﻟﻌﺪﻳﺪﻣﻦ ﺗﻠﻚ ﺍﻟﻠﻐﺎﺕ.
ﺭﺍﺟﻊﺍﻷﺳﺉﻠﺔ
.6ﻣﺎ ﻫﻲ ﻗﺪﺭﺓ ﺍﻷﺟﻬﺰﺓ ﺍﻟﺘﻲ ﻇﻬﺮﺕ ﻷﻭﻝ ﻣﺮﺓ ﻓﻲ ﻛﻤﺒﻴﻮﺗﺮ IBM 704ﺍﻟﺘﻲ ﺃﺛﺮﺕ ﺑﺸﺪﺓ ﻋﻠﻰ
ﺗﻄﻮﺭﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ؟ ﺍﺷﺮﺡ ﺍﻟﺴﺒﺐ.
.7ﻓﻲ ﺃﻱ ﺳﻨﺔ ﺑﺪﺃ ﻣﺸﺮﻭﻉ ﺗﺼﻤﻴﻢ ﻓﻮﺭﺗﺮﺍﻥ؟
.8ﻣﺎ ﻫﻮ ﻣﺠﺎﻝ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻷﺳﺎﺳﻲ ﻷﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻓﻲ ﺍﻟﻮﻗﺖ ﺍﻟﺬﻱ ﺗﻢ ﻓﻴﻪ ﺗﺼﻤﻴﻢ
Fortran؟
.9ﻣﺎ ﻫﻮ ﻣﺼﺪﺭ ﻛﻞ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﺘﺪﻓﻖ ﺍﻟﺨﺎﺻﺔ ﺑـ Fortran I؟
.10ﻣﺎ ﻫﻲ ﺃﻫﻢ ﻣﻴﺰﺓ ﺗﻤﺖ ﺇﺿﺎﻓﺘﻬﺎ ﺇﻟﻰ Fortran Iﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ Fortran II؟
.11ﻣﺎ ﻫﻲ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﺘﺪﻓﻖ ﺍﻟﺘﻲ ﺗﻤﺖ ﺇﺿﺎﻓﺘﻬﺎ ﺇﻟﻰ Fortran IVﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ Fortran 77؟
.45ﻣﺎ ﻫﻮ ﻧﻤﻮﺫﺝ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺬﻱ ﻻ ﺗﺪﻋﻤﻪ Goﺗﻘﺮﻳﺒﺎً ﺟﻤﻴﻊ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻤﺼﻤﻤﺔ ﺣﺪﻳﺜﺎً؟
ﺗﻢﺿﺒﻂ ﺍﻟﻤﺸﻜﻠﺔ
.1ﻣﺎ ﻫﻲ ﻣﻴﺰﺍﺕ Plankalkülﺍﻟﺘﻲ ﺗﻌﺘﻘﺪ ﺃﻧﻬﺎ ﺳﻴﻜﻮﻥ ﻟﻬﺎ ﺍﻟﺘﺄﺛﻴﺮ ﺍﻷﻛﺒﺮ ﻋﻠﻰ Fortran 0
ﺇﺫﺍﻛﺎﻥ ﻣﺼﻤﻤﻮ Fortranﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺑـ Plankalkül؟
.7ﺑﺪﺃﺕ LISPﻛﻠﻐﺔ ﻭﻇﻴﻔﻴﺔ ﺧﺎﻟﺼﺔ ﻭﻟﻜﻨﻬﺎ ﺍﻛﺘﺴﺒﺖ ﺗﺪﺭﻳﺠﻴﺎ ًﺍﻟﻤﺰﻳﺪ ﻭﺍﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ
ﺍﻟﻀﺮﻭﺭﻳﺔ.ﻟﻤﺎﺫﺍ؟
.8ﺻﻒِ ﺑﺎﻟﺘﻔﺼﻴﻞ ﺍﻷﺳﺒﺎﺏ ﺍﻟﺜﻼﺛﺔ ﺍﻷﻛﺜﺮ ﺃﻫﻤﻴﺔ ،ﺑﺮﺃﻳﻚ ،ﻟﻤﺎﺫﺍ ﻟﻢ ﺗﺼﺒﺢ ALGOL 60
ﻟﻐﺔﻣﺴﺘﺨﺪﻣﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ.
.9ﻟﻤﺎﺫﺍ ،ﻓﻲ ﺭﺃﻳﻚ ،ﺳﻤﺤﺖ COBOLﺑﻤﻌﺮﻓﺎﺕ ﻃﻮﻳﻠﺔ ﺑﻴﻨﻤﺎ ﻟﻢ ﺗﺴﻤﺢ Fortranﻭ
ALGOLﺑﺬﻟﻚ؟
ﺍﻟﻔﺼﻞ 2ﺗﻄﻮﺭ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ 110
.13ﻣﺎ ﻫﻮ ﺍﻟﺴﺒﺐ ﺍﻟﺮﺉﻴﺴﻲ ﻭﺭﺍء ﺍﺳﺘﺨﺪﺍﻡ PL / Iﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﺃﻛﺜﺮ ﻣﻦ ALGOL 68
؟
.14ﻣﺎ ﻫﻲ ﺍﻟﺤﺠﺞ ﺍﻟﻤﺆﻳﺪﺓ ﻭﺍﻟﻤﻌﺎﺭﺿﺔ ﻟﻔﻜﺮﺓ ﺍﻟﻠﻐﺔ ﻏﻴﺮ ﺍﻟﻤﺼﻨﻌّﺔ؟
.18ﺍﻟﻠﻐﺎﺕ ﺗﺘﻄﻮﺭ ﺑﺎﺳﺘﻤﺮﺍﺭ .ﻣﺎ ﻧﻮﻉ ﺍﻟﻘﻴﻮﺩ ﺍﻟﺘﻲ ﺗﻌﺘﻘﺪ ﺃﻧﻬﺎ ﻣﻨﺎﺳﺒﺔ ﻟﻠﺘﻐﻴﻴﺮﺍﺕ ﻓﻲ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔ؟ﻗﺎﺭﻥ ﺇﺟﺎﺑﺎﺗﻚ ﺑﺘﻄﻮﺭ .Fortran
.19ﻗﻢ ﺑﺒﻨﺎء ﺟﺪﻭﻝ ﻳﺤﺪﺩ ﺟﻤﻴﻊ ﺍﻟﺘﻄﻮﺭﺍﺕ ﺍﻟﻠﻐﻮﻳﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ،ﻣﻊ ﻭﻗﺖ ﺣﺪﻭﺛﻬﺎ ،ﻭﺍﻟﻠﻐﺔ
ﺍﻟﺘﻲﻇﻬﺮﺕ ﺑﻬﺎ ﻷﻭﻝ ﻣﺮﺓ ،ﻭﻫﻮﻳﺎﺕ ﺍﻟﻤﻄﻮﺭﻳﻦ.
.20ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﺑﻌﺾ ﺍﻟﺘﺒﺎﺩﻻﺕ ﺍﻟﻌﺎﻣﺔ ﺑﻴﻦ Microsoftﻭ Sunﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺘﺼﻤﻴﻢ J
++ Microsoftﻭ # Cﻭ .Sun's Javaﺍﻗﺮﺃ ﺑﻌﺾ ﻫﺬﻩ ﺍﻟﻮﺛﺎﺉﻖ ،ﺍﻟﻤﺘﻮﻓﺮﺓ ﻋﻠﻰ
ﻣﻮﺍﻗﻊﺍﻟﻮﻳﺐ ﺍﻟﺨﺎﺻﺔ ﺑﻜﻞ ﻣﻨﻬﺎ ،ﻭﺍﻛﺘﺐ ﺗﺤﻠﻴﻼ ًﻟﻠﺨﻼﻓﺎﺕ ﺍﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﻤﻨﺪﻭﺑﻴﻦ.
.21ﻓﻲ ﺍﻟﺴﻨﻮﺍﺕ ﺍﻷﺧﻴﺮﺓ ،ﺗﻄﻮﺭﺕ ﻫﻴﺎﻛﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺩﺍﺧﻞ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻟﺘﺤﻞ ﻣﺤﻞ
ﺍﻟﻤﺼﻔﻮﻓﺎﺕﺍﻟﺘﻘﻠﻴﺪﻳﺔ .ﺍﺷﺮﺡ ﺍﻟﺘﺴﻠﺴﻞ ﺍﻟﺰﻣﻨﻲ ﻟﻬﺬﻩ ﺍﻟﺘﻄﻮﺭﺍﺕ.
.22ﺍﺷﺮﺡ ﺳﺒﺒﻴﻦ ﻳﺠﻌﻞ ﺍﻟﺘﺮﺟﻤﺔ ﺍﻟﺸﻔﻮﻳﺔ ﺍﻟﺨﺎﻟﺼﺔ ﻃﺮﻳﻘﺔ ﺗﻨﻔﻴﺬ ﻣﻘﺒﻮﻟﺔ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﻟﻐﺎﺕ
ﺍﻟﺒﺮﻣﺠﺔﺍﻟﻨﺼﻴﺔ ﺍﻟﺤﺪﻳﺜﺔ.
.23ﺑﻴﺮﻝ ، 6ﻋﻨﺪ ﻭﺻﻮﻟﻬﺎ ،ﺳﺘﻜﻮﻥ ﻋﻠﻰ ﺍﻷﺭﺟﺢ ﻟﻐﺔ ﻣﻜﺒﺮﺓ ﺑﺸﻜﻞ ﻣﻠﺤﻮﻅ .ﻗﻢ ﺑﺘﺨﻤﻴﻦ
ﻣﺘﻌﻠﻢﺣﻮﻝ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻟﻐﺔ ﻣﺜﻞ Luaﺳﺘﻨﻤﻮ ﺑﺎﺳﺘﻤﺮﺍﺭ ﻋﻠﻰ ﻣﺪﺍﺭ ﺣﻴﺎﺗﻬﺎ .ﺍﺩﻋﻢ ﺇﺟﺎﺑﺘﻚ.
.24ﻟﻤﺎﺫﺍ ،ﺑﺮﺃﻳﻚ ،ﺗﻈﻬﺮ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﻟﺠﺪﻳﺪﺓ ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ﺃﻛﺜﺮ ﻣﻦ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﻤﺘﺮﺟﻤﺔﺍﻟﺠﺪﻳﺪﺓ؟
.25ﺃﻋﻂ ﻭﺻﻔﺎ ﻋﺎﻣﺎ ﻣﺨﺘﺼﺮﺍ ﻟﻠﺘﺮﻣﻴﺰ /ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻤﺨﺘﻠﻄﺔ.
111 ﺗﻤﺎﺭﻳﻦﺍﻟﺒﺮﻣﺠﺔ
ﺗﻤﺎﺭﻳﻦﺍﻟﺒﺮﻣﺠﺔ
.1ﻟﻔﻬﻢ ﻗﻴﻤﺔ ﺍﻟﺴﺠﻼﺕ ﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ،ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﺻﻐﻴﺮﺍً ﺑﻠﻐﺔ ﺗﺴﺘﻨﺪ ﺇﻟﻰ C
ﺗﺴﺘﺨﺪﻡﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﺘﻲ ﺗﺨﺰﻥ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻄﺎﻟﺐ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺍﻻﺳﻢ
ﻭﺍﻟﻌﻤﺮﻭﺍﻟﻤﻌﺪﻝ ﺍﻟﺘﺮﺍﻛﻤﻲ ﻛﻌﺎﻣﻞ ﺗﻌﻮﻳﻢ ﻭﻣﺴﺘﻮﻯ ﺍﻟﺼﻒ ﻛﺴﻠﺴﻠﺔ )ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ "،ﺍﻟﻤﺒﺘﺪﺉﻮﻥ" ،ﺇﻟﺦ .(.ﺃﻳﻀﺎً ،ﺍﻛﺘﺐ ﻧﻔﺲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﻨﻔﺲ ﺍﻟﻠﻐﺔ ﺩﻭﻥ ﺍﺳﺘﺨﺪﺍﻡ
ﺍﻟﺒﻨﻴﺎﺕ.
.2ﻟﻔﻬﻢ ﻗﻴﻤﺔ ﺍﻟﻌﻮﺩﻳﺔ ﻓﻲ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ،ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬ ﺍﻟﻔﺮﺯ ﺍﻟﺴﺮﻳﻊ ،ﺃﻭﻻ ً
ﺑﺎﺳﺘﺨﺪﺍﻡﺍﻟﻌﻮﺩﻳﺔ ﺛﻢ ﺑﺪﻭﻥ ﺍﻟﻌﻮﺩﻳﺔ.
.3ﻟﻔﻬﻢ ﻗﻴﻤﺔ ﺣﻠﻘﺎﺕ ﺍﻟﻌﺪ ،ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻳﻨﻔﺬ ﻋﻤﻠﻴﺔ ﺿﺮﺏ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ
ﺗﺮﺍﻛﻴﺐﺣﻠﻘﺔ ﺍﻟﻌﺪ .ﺛﻢ ﺍﻛﺘﺐ ﻧﻔﺲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺤﻠﻘﺎﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻓﻘﻂ -ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺑﻴﻨﻤﺎﺍﻟﺤﻠﻘﺎﺕ.
ﻫﺬﻩﺍﻟﺼﻔﺤﺔ ﺗﺮﻛﺖ ﻓﺎﺭﻏﺔ ﻋﻤﺪﺍ
3
ﻭﺻﻒﺍﻟﻨﺤﻮ
ﻭﻋﻠﻢﺍﻟﺪﻻﻟﺔ
3.1ﻣﻘﺪﻣﺔ
3.2ﺍﻟﻤﺸﻜﻠﺔ ﺍﻟﻌﺎﻣﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
3.4ﺍﻟﺴﻤﺔ ﺍﻟﻨﺤﻮﻳﺔ
3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
113
ﺗﻲ
ﻭﺻﻒﺍﻟﻨﺤﻮ ﻭﺍﻟﻤﻌﺎﻧﻲ ﺍﻟﻔﺼﻞ3 114
3.1ﻣﻘﺪﻣﺔ
ﺗﻌﺘﺒﺮﻣﻬﻤﺔ ﺗﻘﺪﻳﻢ ﻭﺻﻒ ﻣﻮﺟﺰ ﻭﻣﻔﻬﻮﻡ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺃﻣﺮﺍً ﺻﻌﺒﺎً ﻭﻟﻜﻨﻪ ﺿﺮﻭﺭﻱ ﻟﻨﺠﺎﺡ ﺍﻟﻠﻐﺔ.
ﺗﻢﺗﻘﺪﻳﻢ ALGOL 60ﻭ ALGOL 68ﻷﻭﻝ ﻣﺮﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﻭﺻﺎﻑ ﺭﺳﻤﻴﺔ ﻣﻮﺟﺰﺓ ؛ ﻓﻲ ﻛﻠﺘﺎ
ﺍﻟﺤﺎﻟﺘﻴﻦ ،ﻭﻣﻊ ﺫﻟﻚ ،ﻟﻢ ﻳﻜﻦ ﻣﻦ ﺍﻟﺴﻬﻞ ﻓﻬﻢ ﺍﻷﻭﺻﺎﻑ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﺟﺰﺉﻴﺎً ﺇﻟﻰ ﺍﺳﺘﺨﺪﺍﻡ
ﻛﻞﻣﻨﻬﻤﺎ ﺗﺮﻣﻴﺰﺍً ﺟﺪﻳﺪﺍً .ﻧﺘﻴﺠﺔ ﻟﺬﻟﻚ ،ﻋﺎﻧﺖ ﻣﺴﺘﻮﻳﺎﺕ ﻗﺒﻮﻝ ﺍﻟﻠﻐﺘﻴﻦ .ﻣﻦ ﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ ،
ﻋﺎﻧﺖﺑﻌﺾ ﺍﻟﻠﻐﺎﺕ ﻣﻦ ﻣﺸﻜﻠﺔ ﻭﺟﻮﺩ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻠﻬﺠﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻗﻠﻴﻼ ً ،ﻧﺘﻴﺠﺔ ﻟﺘﻌﺮﻳﻒ
ﺑﺴﻴﻂﻭﻟﻜﻨﻪ ﻏﻴﺮ ﺭﺳﻤﻲ ﻭﻏﻴﺮ ﺩﻗﻴﻖ.
ﻭﺍﺣﺪﺓﻣﻦ ﺍﻟﻤﺸﺎﻛﻞ ﻓﻲ ﻭﺻﻒ ﺍﻟﻠﻐﺔ ﻫﻮ ﺗﻨﻮﻉ ﺍﻟﻨﺎﺱ ﺍﻟﺬﻳﻦ ﻳﺠﺐ ﺃﻥ ﻳﻔﻬﻤﻮﺍ ﺍﻟﻮﺻﻒ.
ﻭﻣﻦﺑﻴﻦ ﻫﺆﻻء ﺍﻟﻤﻘﻴﻤِّﻮﻥ ﺍﻷﻭﻟﻴﻮﻥ ﻭﺍﻟﻤﻨﻔﺬﻭﻥ ﻭﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ .ﺗﺨﻀﻊ ﻣﻌﻈﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺍﻟﺠﺪﻳﺪﺓﻟﻔﺘﺮﺓ ﻣﻦ ﺍﻟﺘﺪﻗﻴﻖ ﻣﻦ ﻗﺒﻞ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﺤﺘﻤﻠﻴﻦ ،ﻏﺎﻟﺒﺎً ﺍﻷﺷﺨﺎﺹ ﺩﺍﺧﻞ
ﺍﻟﻤﻨﻈﻤﺔﺍﻟﺘﻲ ﺗﻮﻇﻒ ﻣﺼﻤﻢ ﺍﻟﻠﻐﺔ ،ﻗﺒﻞ ﺍﻛﺘﻤﺎﻝ ﺗﺼﻤﻴﻤﺎﺗﻬﺎ .ﻫﺆﻻء ﻫﻢ ﺍﻟﻤﻘﻴﻤﻮﻥ ﺍﻷﻭﻟﻴﻮﻥ.
ﻳﻌﺘﻤﺪﻧﺠﺎﺡ ﺩﻭﺭﺓ ﺍﻟﺘﻌﻠﻴﻘﺎﺕ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻋﻠﻰ ﻭﺿﻮﺡ ﺍﻟﻮﺻﻒ.
ﻣﻦﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻣﻨﻔﺬﻱ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻧﻮﺍ ﻗﺎﺩﺭﻳﻦ ﻋﻠﻰ ﺗﺤﺪﻳﺪ ﻛﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ
ﺍﻟﺘﻌﺒﻴﺮﺍﺕﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻭﺣﺪﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻟﻠﻐﺔ ،ﻭﻛﺬﻟﻚ ﺗﺄﺛﻴﺮﻫﺎ ﺍﻟﻤﻘﺼﻮﺩ ﻋﻨﺪ ﺗﻨﻔﻴﺬﻫﺎ .ﺗﺘﺤﺪﺩ
ﺻﻌﻮﺑﺔﻋﻤﻞ ﺍﻟﻤﻨﻔﺬﻳﻦ ،ﺟﺰﺉﻴﺎً ،ﻣﻦ ﺧﻼﻝ ﺍﻛﺘﻤﺎﻝ ﻭﺩﻗﺔ ﻭﺻﻒ ﺍﻟﻠﻐﺔ.
ﺃﺧﻴﺮﺍً ،ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﺴﺘﺨﺪﻣﻮ ﺍﻟﻠﻐﺔ ﻗﺎﺩﺭﻳﻦ ﻋﻠﻰ ﺗﺤﺪﻳﺪ ﻛﻴﻔﻴﺔ ﺗﺸﻔﻴﺮ ﺣﻠﻮﻝ ﺍﻟﺒﺮﺍﻣﺞ
ﻣﻦﺧﻼﻝ ﺍﻟﺮﺟﻮﻉ ﺇﻟﻰ ﺩﻟﻴﻞ ﻣﺮﺟﻌﻲ ﻟﻠﻐﺔ .ﺗﺪﺧﻞ ﺍﻟﻜﺘﺐ ﺍﻟﻤﺪﺭﺳﻴﺔ ﻭﺍﻟﺪﻭﺭﺍﺕ ﻓﻲ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ،
ﻟﻜﻦﻛﺘﻴﺒﺎﺕ ﺍﻟﻠﻐﺔ ﻋﺎﺩﺓ ﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻤﺼﺪﺭ ﺍﻟﻮﺣﻴﺪ ﺍﻟﻤﻮﺛﻮﻕ ﻟﻠﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﻄﺒﻮﻋﺔ ﺣﻮﻝ ﺍﻟﻠﻐﺔ.
ﻳﻤﻜﻦﺗﻘﺴﻴﻢ ﺩﺭﺍﺳﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻣﺜﻞ ﺩﺭﺍﺳﺔ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻄﺒﻴﻌﻴﺔ ،ﺇﻟﻰ ﺍﻣﺘﺤﺎﻧﺎﺕ
ﻟﻐﻮﻳﺔﻭﺩﻻﻻﺕ .ﺍﻝﺑﻨﺎء ﺍﻟﺠﻤﻠﺔﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻲ ﺷﻜﻞ ﺗﻌﺒﻴﺮﺍﺗﻬﺎ ﻭﺑﻴﺎﻧﺎﺗﻬﺎ ﻭﻭﺣﺪﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺇﻧﻪ
ﺩﻻﻻﺕﻫﻮ ﻣﻌﻨﻰ ﺗﻠﻚ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻭﺣﺪﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺑﻨﺎء ﺟﻤﻠﺔ
Javaﺑﻴﻨﻤﺎﺍﻟﺒﻴﺎﻥ ﻫﻮ
ﺑﻴﻨﻤﺎ)(boolean_expr
115 3.2ﺍﻟﻤﺸﻜﻠﺔ ﺍﻟﻌﺎﻣﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﺩﻻﻻﺕﻧﻤﻮﺫﺝ ﺍﻟﺒﻴﺎﻥ ﻫﺬﺍ ﻫﻲ ﺃﻧﻪ ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ ﻟﻠﺘﻌﺒﻴﺮ ﺍﻟﻤﻨﻄﻘﻲ ﺻﺤﻴﺤﺔ ،ﻳﺘﻢ
ﺗﻨﻔﻴﺬﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻀﻤﻨﺔ .ﺧﻼﻑ ﺫﻟﻚ ،ﻳﺴﺘﻤﺮ ﺍﻟﺘﺤﻜﻢ ﺑﻌﺪﺑﻴﻨﻤﺎﺑﻨﺎء .ﺛﻢ ﻳﻌﻮﺩ ﻋﻨﺼﺮ ﺍﻟﺘﺤﻜﻢ
ﺿﻤﻨﻴﺎًﺇﻟﻰ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻤﻨﻄﻘﻲ ﻟﺘﻜﺮﺍﺭ ﺍﻟﻌﻤﻠﻴﺔ.
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻬﻤﺎ ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻢ ﻓﺼﻠﻬﻤﺎ ﻷﻏﺮﺍﺽ ﺍﻟﻤﻨﺎﻗﺸﺔ ،ﺇﻻ ﺃﻥ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ
ﻭﺍﻟﺪﻻﻻﺕﻳﺮﺗﺒﻄﺎﻥ ﺍﺭﺗﺒﺎﻃﺎً ﻭﺛﻴﻘﺎً .ﻓﻲ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺟﻴﺪﺓ ﺍﻟﺘﺼﻤﻴﻢ ،ﻳﺠﺐ ﺃﻥ ﺗﺘﺒﻊ ﺍﻟﺪﻻﻻﺕ
ﻣﺒﺎﺷﺮﺓﻣﻦ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ؛ ﺃﻱ ﺃﻥ ﻇﻬﻮﺭ ﺍﻟﺒﻴﺎﻥ ﻳﺠﺐ ﺃﻥ ﻳﻮﺣﻲ ﺑﻘﻮﺓ ﺑﻤﺎ ﻳﻘُﺼﺪ ﺑﺎﻟﺒﻴﺎﻥ ﺗﺤﻘﻴﻘﻪ.
ﺇﻥﻭﺻﻒ ﺍﻟﻨﺤﻮ ﺃﺳﻬﻞ ﻣﻦ ﻭﺻﻒ ﺍﻟﺪﻻﻻﺕ ،ﻭﻳﺮﺟﻊ ﺫﻟﻚ ﺟﺰﺉﻴﺎً ﺇﻟﻰ ﺗﻮﻓﺮ ﺗﺪﻭﻳﻦ ﻣﻮﺟﺰ
ﻭﻣﻘﺒﻮﻝﻋﺎﻟﻤﻴﺎً ﻟﻮﺻﻒ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ،ﻭﻟﻜﻦ ﻟﻢ ﻳﺘﻢ ﺗﻄﻮﻳﺮ ﺃﻱ ﻣﻨﻬﺎ ﺣﺘﻰ ﺍﻵﻥ ﻟﻠﺪﻻﻻﺕ.
ﻏﺎﻟﺒﺎًﻣﺎ ﻻ ﺗﺘﻀﻤﻦ ﺍﻷﻭﺻﺎﻑ ﺍﻟﺮﺳﻤﻴﺔ ﻟﺒﻨﺎء ﺟﻤﻠﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻣﻦ ﺃﺟﻞ ﺍﻟﺒﺴﺎﻃﺔ ،
ﺃﻭﺻﺎﻓﺎًﻟﻠﻮﺣﺪﺍﺕ ﺍﻟﻨﺤﻮﻳﺔ ﺫﺍﺕ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻷﺩﻧﻰ .ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻟﻮﺣﺪﺍﺕ ﺍﻟﺼﻐﻴﺮﺓ.lexemes
ﻳﻤﻜﻦﺇﻋﻄﺎء ﻭﺻﻒ ﺍﻟﻤﻔﺮﺩﺍﺕ ﺑﻮﺍﺳﻄﺔ ﻣﻮﺍﺻﻔﺔ ﻣﻌﺠﻤﻴﺔ ،ﻭﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻋﺎﺩﺓ ًﻣﻨﻔﺼﻠﺔ ﻋﻦ
ﺍﻟﻮﺻﻒﺍﻟﻨﺤﻮﻱ ﻟﻠﻐﺔ .ﺗﺸﺘﻤﻞ ﻣﻌﺠﻢ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﻋﻠﻰ ﺍﻟﺤﺮﻭﻑ ﺍﻟﺮﻗﻤﻴﺔ ﻭﺍﻟﻤﻌﺎﻣﻼﺕ
ﻭﺍﻟﻜﻠﻤﺎﺕﺍﻟﺨﺎﺻﺔ ،ﻣﻦ ﺑﻴﻦ ﺃﻣﻮﺭ ﺃﺧﺮﻯ .ﻳﻤﻜﻦ ﻟﻠﻤﺮء ﺃﻥ ﻳﻔﻜﺮ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ﻋﻠﻰ ﺃﻧﻬﺎ ﺳﻼﺳﻞ
ﻣﻦﺍﻟﻤﻌﺎﺟﻢ ﻭﻟﻴﺲ ﻛﺸﺨﺼﻴﺎﺕ.
mult_op *
ﺍﻟﻤﻌﺮﻑ ﻋﺪﺩ
plus_op +
int_literal 17
ﻓﺎﺻﻠﺔﻣﻨﻘﻮﻃﺔ ؛
ﺇﻥﺗﻮﺻﻴﻔﺎﺕ ﺍﻟﻠﻐﺔ ﺍﻟﻨﻤﻮﺫﺟﻴﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺑﺴﻴﻄﺔ ﻟﻠﻐﺎﻳﺔ ،ﻭﺗﺸﻤﻞ ﻣﻌﻈﻤﻬﺎ ﺃﻭﺻﺎﻓﺎً
ﻟﻜﺴﻴﻢ.
ﺟﺰءﺗﺤﻠﻴﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻣﻦ ﺍﻟﻤﺘﺮﺟﻢ ﻫﻮ ﺃﺩﺍﺓ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﻳﺘﺮﺟﻤﻬﺎ ﺍﻟﻤﺘﺮﺟﻢ.
ﻓﻲﻫﺬﺍ ﺍﻟﺪﻭﺭ ،ﻻ ﺗﺤﺘﺎﺝ ﺃﺩﺍﺓ ﺍﻟﺘﻌﺮﻑّ ﺇﻟﻰ ﺍﺧﺘﺒﺎﺭ ﺟﻤﻴﻊ ﺍﻟﺴﻼﺳﻞ ﺍﻟﻤﻤﻜﻨﺔ ﻟﻸﺣﺮﻑ ﻣﻦ
ﻣﺠﻤﻮﻋﺔﻣﺎ ﻟﺘﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻛﻞ ﻣﻨﻬﺎ ﺑﺎﻟﻠﻐﺔ .ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ،ﻻ ﻳﺤﺘﺎﺝ ﺍﻷﻣﺮ ﺇﻻ ﺇﻟﻰ ﺗﺤﺪﻳﺪ
ﻣﺎﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻘﺪﻣﺔ ﺑﺎﻟﻠﻐﺔ ﺃﻡ ﻻ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻳﻘﻮﻡ ﻣﺤﻠﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺑﺘﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ
ﻛﺎﻧﺖﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻌﻴﻨﺔ ﺻﺤﻴﺤﺔ ﻣﻦ ﺍﻟﻨﺎﺣﻴﺔ ﺍﻟﻨﺤﻮﻳﺔ .ﺗﻤﺖ ﻣﻨﺎﻗﺸﺔ ﺑﻨﻴﺔ ﻣﺤﻠﻼﺕ ﺍﻟﻨﺤﻮ ،
ﻭﺍﻟﻤﻌﺮﻭﻓﺔﺃﻳﻀﺎً ﺑﺎﺳﻢ ﺍﻟﻤﺤﻠﻞ ﺍﻟﻠﻐﻮﻱ ،ﻓﻲ ﺍﻟﻔﺼﻞ .4
3.2.2ﻣﻮﻟﺪﺍﺕ ﺍﻟﻠﻐﺔ
ﻣﻮﻟﺪﺍﻟﻠﻐﺔ ﻫﻮ ﺟﻬﺎﺯ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺘﻮﻟﻴﺪ ﺟﻤﻞ ﺍﻟﻠﻐﺔ .ﻳﻤﻜﻨﻨﺎ ﺃﻥ ﻧﻔﻜﺮ ﻓﻲ ﺍﻟﻤﻮﻟﺪ ﻋﻠﻰ ﺃﻧﻪ
ﻳﺤﺘﻮﻱﻋﻠﻰ ﺯﺭ ﻳﻨﺘﺞ ﺟﻤﻠﺔ ﻣﻦ ﺍﻟﻠﻐﺔ ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻳﺘﻢ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ .ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﺠﻤﻠﺔ ﺍﻟﻤﺤﺪﺩﺓ
ﺍﻟﺘﻲﻳﻨﺘﺠﻬﺎ ﺍﻟﻤﻮﻟﺪ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭﻩ ﻻ ﻳﻤﻜﻦ ﺍﻟﺘﻨﺒﺆ ﺑﻬﺎ ،ﻳﺒﺪﻭ ﺃﻥ ﺍﻟﻤﻮﻟﺪ ﺟﻬﺎﺯ ﺫﻭ ﻓﺎﺉﺪﺓ
ﻣﺤﺪﻭﺩﺓﻛﻮﺍﺻﻒ ﻟﻐﺔ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﻔﻀﻞ ﺍﻟﻨﺎﺱ ﺃﺷﻜﺎﻻً ﻣﻌﻴﻨﺔ ﻣﻦ ﺍﻟﻤﻮﻟﺪﺍﺕ ﻋﻠﻰ ﺃﺩﻭﺍﺕ
ﺍﻟﺘﻌﺮﻑﻷﻧﻬﺎ ﺗﺴﺘﻄﻴﻊ ﻗﺮﺍءﺗﻬﺎ ﻭﻓﻬﻤﻬﺎ ﺑﺴﻬﻮﻟﺔ ﺃﻛﺒﺮ .ﻋﻠﻰ ﺍﻟﻨﻘﻴﺾ ﻣﻦ ﺫﻟﻚ ،ﻓﺈﻥ ﺟﺰء ﺍﻟﺘﺤﻘﻖ
ﻣﻦﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻣﻦ ﺍﻟﻤﺘﺮﺟﻢ )ﺃﺩﺍﺓ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻠﻐﺔ( ﻟﻴﺲ ﻣﻔﻴﺪﺍً ﻟﻮﺻﻒ ﺍﻟﻠﻐﺔ ﻟﻠﻤﺒﺮﻣﺞ ﻷﻧﻪ
ﻻﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺇﻻ ﻓﻲ ﻭﺿﻊ ﺍﻟﺘﺠﺮﺑﺔ ﻭﺍﻟﺨﻄﺄ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻟﺘﺤﺪﻳﺪ ﺍﻟﺼﻴﻐﺔ
ﺍﻟﺼﺤﻴﺤﺔﻟﻌﺒﺎﺭﺓ ﻣﻌﻴﻨﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺘﺮﺟﻢ ،
117 3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﻳﻘﺒﻠﻬﺎﺍﻟﻤﺘﺮﺟﻢ .ﻣﻦ ﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﺑﻨﺎء ﺟﻤﻠﺔ ﺑﻴﺎﻥ
ﻣﻌﻴﻦﺻﺤﻴﺤﺎً ﻋﻦ ﻃﺮﻳﻖ ﻣﻘﺎﺭﻧﺘﻪ ﺑﻬﻴﻜﻞ ﺍﻟﻤﻮﻟﺪ.
ﻫﻨﺎﻙﺍﺭﺗﺒﺎﻁ ﻭﺛﻴﻖ ﺑﻴﻦ ﺃﺟﻬﺰﺓ ﺍﻹﻧﺸﺎء ﻭﺍﻟﺘﻌﺮﻑ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻠﻐﺔ ﻧﻔﺴﻬﺎ .ﻛﺎﻥ ﻫﺬﺍ ﺃﺣﺪ
ﺍﻻﻛﺘﺸﺎﻓﺎﺕﺍﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻋﻠﻮﻡ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،ﻭﺃﺩﻯ ﺇﻟﻰ ﺍﻟﻜﺜﻴﺮ ﻣﻤﺎ ﻫﻮ ﻣﻌﺮﻭﻑ ﺍﻵﻥ ﻋﻦ ﺍﻟﻠﻐﺎﺕ
ﺍﻟﺮﺳﻤﻴﺔﻭﻧﻈﺮﻳﺔ ﺗﺼﻤﻴﻢ ﺍﻟﻤﺘﺮﺟﻢ .ﻧﻌﻮﺩ ﺇﻟﻰ ﻋﻼﻗﺔ ﺍﻟﻤﻮﻟﺪﺍﺕ ﻭﺃﺟﻬﺰﺓ ﺍﻟﺘﻌﺮﻑ ﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻟﺘﺎﻟﻲ.
ﺃﺻﺒﺤﺖﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻨﻘﺤﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ ﻣﻌﺮﻭﻓﺔ ﺑﺎﺳﻢ (.ﻧﻮﺭ ALGOL 60 )1960 ،
ﻧﻤﻮﺫﺝﺑﺎﻛﻮﺱ ﻧﻮﺭ ،ﺃﻭ ﺑﺒﺴﺎﻃﺔ.BNF
)Ingerman ، 1967(.ﻟﻮﺻﻒ ﺗﺮﻛﻴﺐ ﺍﻟﻠﻐﺔ ﺍﻟﺴﻨﺴﻜﺮﻳﺘﻴﺔ ﻗﺒﻞ ﺍﻟﻤﺴﻴﺢ ﺑﻌﺪﺓ ﻣﺉﺎﺕ
ﻣﻦﺍﻟﺴﻨﻴﻦ BNFﻫﻮ ﺗﺪﻭﻳﻦ ﻃﺒﻴﻌﻲ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺍﺳﺘﺨﺪﻡ ﺑﺎﻧﻴﻨﻲ ﺷﻴﺉﺎً ﻣﺸﺎﺑﻬﺎً
ﻟـBNF
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﺳﺘﺨﺪﺍﻡ BNFﻓﻲ ﺗﻘﺮﻳﺮ ALGOL 60ﻟﻢ ﻳﺘﻢ ﻗﺒﻮﻟﻪ ﻋﻠﻰ ﺍﻟﻔﻮﺭ ﻣﻦ ﻗﺒﻞ
ﻣﺴﺘﺨﺪﻣﻲﺍﻟﻜﻤﺒﻴﻮﺗﺮ ،ﺇﻻ ﺃﻧﻪ ﺳﺮﻋﺎﻥ ﻣﺎ ﺃﺻﺒﺢ ﻭﻣﺎ ﺯﺍﻝ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻟﻮﺻﻒ ﻟﻐﺔ
ﺍﻟﺒﺮﻣﺠﺔﺑﺈﻳﺠﺎﺯ.
ﻣﻦﺍﻟﻼﻓﺖ ﻟﻠﻨﻈﺮ ﺃﻥ BNFﻣﻄﺎﺑﻖ ﺗﻘﺮﻳﺒﺎً ﻷﺟﻬﺰﺓ Chomskyﺍﻟﺘﻮﻟﻴﺪﻳﺔ ﻟﻠﻐﺎﺕ ﺧﺎﻟﻴﺔ ﻣﻦ
ﺍﻟﺴﻴﺎﻕ ،ﺍﻟﻤﺴﻤﺎﺓﻗﻮﺍﻋﺪ ﻧﺤﻮﻳﺔ ﺧﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ .ﻓﻲ ﺍﻟﺠﺰء ﺍﻟﻤﺘﺒﻘﻲ ﻣﻦ ﺍﻟﻔﺼﻞ ،ﻧﺸﻴﺮ
ﺇﻟﻰﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ ﺑﺒﺴﺎﻃﺔ ﻋﻠﻰ ﺃﻧﻬﺎ ﻗﻮﺍﻋﺪ ﻧﺤﻮﻳﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻤﺼﻄﻠﺤﺎﺕ BNFﻭﺍﻟﻘﻮﺍﻋﺪ ﺑﺎﻟﺘﺒﺎﺩﻝ.
3.3.1.3ﺍﻷﺳﺎﺳﻴﺎﺕ
ﺃﻣﻴﺘﺎﻟﻨﺠﻮﻳﺞﻫﻲ ﻟﻐﺔ ﺗﺴﺘﺨﺪﻡ ﻟﻮﺻﻒ ﻟﻐﺔ ﺃﺧﺮﻯ BNF .ﻫﻲ ﻟﻐﺔ ﻣﻌﺪﻧﻴﺔ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ.
ﻳﺴﺘﺨﺪﻡ BNFﺍﻟﺘﺠﺮﻳﺪﺍﺕ ﻟﻠﺒﻨﻰ ﺍﻟﻨﺤﻮﻳﺔ .ﻗﺪ ﻳﺘﻢ ﺗﻤﺜﻴﻞ ﻋﺒﺎﺭﺓ ﺗﺨﺼﻴﺺ Javaﺑﺴﻴﻄﺔ ،
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻣﻦ ﺧﻼﻝ ﺍﻟﺘﺠﺮﻳﺪ >ﺗﻌﻴﻴﻦ< )ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺴﺘﺨﺪﻡ ﺍﻷﻗﻮﺍﺱ ﺍﻟﻤﺪﺑﺒﺔ ﻟﺘﺤﺪﻳﺪ
ﺃﺳﻤﺎءﺍﻟﺘﺠﺮﻳﺪﺍﺕ( .ﻳﻤﻜﻦ ﺇﻋﻄﺎء ﺍﻟﺘﻌﺮﻳﻒ ﺍﻟﻔﻌﻠﻲ ﻟـ >ﺗﻌﻴﻴﻦ< ﺑﻮﺍﺳﻄﺔ
ﺍﻟﻨﺺﺍﻟﻤﻮﺟﻮﺩ ﻋﻠﻰ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺍﻟﺴﻬﻢ ،ﻭﺍﻟﺬﻱ ﻳﺴﻤﻰ ﻋﻠﻰ ﻧﺤﻮ ﻣﻨﺎﺳﺐ ﺑﺎﻣﺘﺪﺍﺩ
ﺍﻟﺠﺎﻧﺐﺍﻷﻳﺴﺮ ﻳﻄﻠﻖ ﻋﻠﻴﻪ LHS.ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﺍﻟﺘﺠﺮﻳﺪ .ﺍﻟﻨﺺ ﺍﻟﻤﻮﺟﻮﺩ ﻋﻠﻰ ﻳﻤﻴﻦ ﺍﻟﺴﻬﻢ ﻫﻮ
ﺗﻌﺮﻳﻒ )LHS( ،ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ) aﻭﻳﺘﻜﻮﻥ ﻣﻦ ﻣﺰﻳﺞ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﻭﺍﻟﻤﻌﺎﺟﻢ ﻭﺍﻟﻤﺮﺍﺟﻊ ﺇﻟﻰ
ﺍﻟﺘﺠﺮﻳﺪﺍﺕﺍﻷﺧﺮﻯ) .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻤﻴﺰﺓ ﻫﻲ ﺃﻳﻀﺎً ﺗﺠﺮﻳﺪﻳﺔ( .ﻭﺇﺟﻤﺎﻻ ً ،ﻳﻄُﻠﻖ ﻋﻠﻰ
ﺍﻟﺘﻌﺮﻳﻒﺍﺳﻢ ( RHSﻗﺎﻋﺪﺓ ،ﺃﻭﺇﻧﺘﺎﺝ .ﻓﻲ ﻗﺎﻋﺪﺓ ﺍﻟﻤﺜﺎﻝ ﺍﻟﻤﻌﻄﺎﺓ ﻟﻠﺘﻮ ،ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ ﻳﺠﺐ
ﺗﺤﺪﻳﺪﺍﻟﺘﺠﺮﻳﺪﺍﺕ > <varﻭ > <expressionﻟﻜﻲ ﻳﻜﻮﻥ ﺗﻌﺮﻳﻒ > <assignﻣﻔﻴﺪﺍً.
ﺗﺤﺪﺩﻫﺬﻩ ﺍﻟﻘﺎﻋﺪﺓ ﺍﻟﺨﺎﺻﺔ ﺃﻥ ﺍﻟﺘﺠﺮﻳﺪ >ﺗﻌﻴﻴﻦ< ﻳﺘﻢ ﺗﻌﺮﻳﻔﻪ ﻛﻤﺜﻴﻞ ﻟﻠﺘﺠﺮﻳﺪ >، <var
ﻣﺘﺒﻮﻋﺎًﺑـ ، = lexemeﻣﺘﺒﻮﻋﺎً ﺑﻤﺜﻴﻞ ﻣﻦ ﺍﻟﺘﺠﺮﻳﺪ > .<expressionﺃﺣﺪ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﺍﻟﺠﻤﻠﺔ
ﺍﻟﺘﻲﻭﺻﻔﺖ ﺍﻟﻘﺎﻋﺪﺓ ﻫﻴﻜﻠﻬﺎ ﺍﻟﻨﺤﻮﻱ ﻫﻮ
ﻏﺎﻟﺒﺎًﻣﺎ ﻳﺘﻢ ﺍﺳﺘﺪﻋﺎء ﺍﻟﺘﺠﺮﻳﺪﺍﺕ ﻓﻲ ﻭﺻﻒ BNFﺃﻭ ﺍﻟﻘﻮﺍﻋﺪﺍﻟﺮﻣﻮﺯ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ،ﺃﻭ ﺑﺒﺴﺎﻃﺔ
ﻏﻴﺮﻧﻬﺎﺉﻴﺔ ،ﻭ lexemesﻭ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻤﻴﺰﺓ ﻟﻠﻘﻮﺍﻋﺪ ﺗﺴﻤﻰﺭﻣﻮﺯ ﺍﻟﻤﺤﻄﺔ ،ﺃﻭ ﺑﺒﺴﺎﻃﺔ
ﻣﺤﻄﺎﺕ .ﻭﺻﻒ ، BNFﺃﻭﻗﻮﺍﻋﺪ ،ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ.
ﻳﻤﻜﻦﺃﻥ ﺗﺤﺘﻮﻱ ﺍﻟﺮﻣﻮﺯ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ﻋﻠﻰ ﺗﻌﺮﻳﻔﻴﻦ ﻣﻤﻴﺰﻳﻦ ﺃﻭ ﺃﻛﺜﺮ ،ﻳﻤﺜﻼﻥ ﺷﻜﻠﻴﻦ
ﻧﺤﻮﻳﻴﻦﺃﻭ ﺃﻛﺜﺮ ﻓﻲ ﺍﻟﻠﻐﺔ .ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ ﺗﻌﺮﻳﻔﺎﺕ ﻣﺘﻌﺪﺩﺓ ﻛﻘﺎﻋﺪﺓ ﻭﺍﺣﺪﺓ ،ﻣﻊ ﺍﻟﻔﺼﻞ ﺑﻴﻦ
ﺍﻟﺘﻌﺎﺭﻳﻒﺍﻟﻤﺨﺘﻠﻔﺔ
119 3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﺍﻟﺮﻣﺰ| ،ﺑﻤﻌﻨﻰ ORﺍﻟﻤﻨﻄﻘﻲ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻣﻠﻒ Javaﻟﻮﻳﻤﻜﻦ ﻭﺻﻒ ﺍﻟﺒﻴﺎﻥ ﻣﻊ
ﺍﻟﻘﻮﺍﻋﺪ
<→>if_stmtﻟﻮ)><→logic_expr<( >stmt< >if_stmtﻟﻮ)>
<logic_expr<( >stmtﺁﺧﺮ><stmt
ﺃﻭﻣﻊ ﺍﻟﻘﺎﻋﺪﺓ
<→>if_stmtﻟﻮ)><logic_expr<( >stmt
|ﻟﻮ)><logic_expr<( >stmtﺁﺧﺮ><stmt
ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ BNFﺑﺴﻴﻂ ،ﺇﻻ ﺃﻧﻪ ﻗﻮﻱ ﺑﻤﺎ ﻳﻜﻔﻲ ﻟﻮﺻﻒ ﺟﻤﻴﻊ ﺻﻴﻎ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ
ﺗﻘﺮﻳﺒﺎً.ﻋﻠﻰ ﻭﺟﻪ ﺍﻟﺨﺼﻮﺹ ،ﻳﻤﻜﻦ ﺃﻥ ﻳﺼﻒ ﻗﻮﺍﺉﻢ ﺍﻟﺒﻨﻰ ﺍﻟﻤﺘﺸﺎﺑﻬﺔ ،ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﺬﻱ ﻳﺠﺐ
ﺃﻥﺗﻈﻬﺮ ﺑﻪ ﺍﻟﺒﻨﻰ ﺍﻟﻤﺨﺘﻠﻔﺔ ،ﻭﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﻤﺘﺪﺍﺧﻠﺔ ﻷﻱ ﻋﻤﻖ ،ﻭﺣﺘﻰ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺃﺳﺒﻘﻴﺔ
ﺍﻟﻤﺸﻐﻞﻭﺗﺮﺍﺑﻂ ﺍﻟﻤﺸﻐﻞ.
3.3.1.4ﻭﺻﻒ ﺍﻟﻘﻮﺍﺉﻢ
ﻏﺎﻟﺒﺎًﻣﺎ ﺗﺘﻢ ﻛﺘﺎﺑﺔ ﺍﻟﻘﻮﺍﺉﻢ ﺫﺍﺕ ﺍﻟﻄﻮﻝ ﺍﻟﻤﺘﻐﻴﺮ ﻓﻲ ﺍﻟﺮﻳﺎﺿﻴﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﻼﻣﺔ ﺍﻟﻘﻄﻊ ) (..؛
. . .، 2، 1ﺍﻧﻪ ﻣﺜﺎﻝ .ﻻ ﻳﺘﻀﻤﻦ BNFﻋﻼﻣﺔ ﺍﻟﻘﻄﻊ ،ﻟﺬﻟﻚ ﻳﻠﺰﻡ ﻭﺟﻮﺩ ﻃﺮﻳﻘﺔ ﺑﺪﻳﻠﺔ ﻟﻮﺻﻒ
ﻗﻮﺍﺉﻢﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﻨﺤﻮﻳﺔ ﻓﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ )ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻗﺎﺉﻤﺔ ﺍﻟﻤﻌﺮﻓﺎﺕ ﺍﻟﺘﻲ ﺗﻈﻬﺮ
ﻓﻲﺑﻴﺎﻥ ﺇﻋﻼﻥ ﺍﻟﺒﻴﺎﻧﺎﺕ( .ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ، BNFﺍﻟﺒﺪﻳﻞ ﻫﻮ ﺍﻟﻌﻮﺩﻳﺔ .ﺍﻟﻘﺎﻋﺪﺓ ﻫﻲﺍﻟﻌﻮﺩﻳﺔﺇﺫﺍ ﻇﻬﺮ
LHSﺍﻟﺨﺎﺹ ﺑﻪ ﻓﻲ .RHSﺗﻮﺿﺢ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺘﺎﻟﻴﺔ ﻛﻴﻔﻴﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺩﻳﺔ ﻟﻮﺻﻒ ﺍﻟﻘﻮﺍﺉﻢ:
<→>ident_listﺍﻟﻤﻌﺮﻑ
|ﺍﻟﻤﻌﺮﻑ <ident_list> ،
ﻳﻌﺮﻑّﻫﺬﺍ > <ident_listﺇﻣﺎ ﻛﺮﻣﺰ ﻭﺍﺣﺪ )ﻣﻌﺮﻑ( ﺃﻭ ﻣﻌﺮﻑ ﻣﺘﺒﻮﻋﺎً ﺑﻔﺎﺻﻠﺔ ﻭﻣﺜﻴﻞ ﺁﺧﺮ ﻟـ
> .<ident_listﺗﺴُﺘﺨﺪﻡ ﺍﻟﻌﻮﺩﻳﺔ ﻟﻮﺻﻒ ﺍﻟﻘﻮﺍﺉﻢ ﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻣﺜﻠﺔ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻓﻲ
ﺍﻟﺠﺰءﺍﻟﻤﺘﺒﻘﻲ ﻣﻦ ﻫﺬﺍ ﺍﻟﻔﺼﻞ.
3.3.1.5ﺍﻟﻘﻮﺍﻋﺪ ﻭﺍﻻﺷﺘﻘﺎﻗﺎﺕ
ﺍﻟﻘﻮﺍﻋﺪﻫﻲ ﺃﺩﺍﺓ ﻣﻮﻟﺪﺓ ﻟﺘﻌﺮﻳﻒ ﺍﻟﻠﻐﺎﺕ .ﻳﺘﻢ ﺇﻧﺸﺎء ﺟﻤﻞ ﺍﻟﻠﻐﺔ ﻣﻦ ﺧﻼﻝ ﺳﻠﺴﻠﺔ ﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ
ﺍﻟﻘﻮﺍﻋﺪ ،ﺑﺪءﺍً ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﺻﺔ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ﺍﻟﺘﻲ ﺗﺴﻤﻰﺭﻣﺰ ﺍﻟﺒﺪﺍﻳﺔ .ﻳﺴﻤﻰ ﻫﺬﺍ
ﺍﻟﺘﺴﻠﺴﻞﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻘﺎﻋﺪﺓ aﺍﻻﺷﺘﻘﺎﻕ .ﻓﻲ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﻐﺔ ﺑﺮﻣﺠﺔ ﻛﺎﻣﻠﺔ ،ﻳﻤﺜﻞ ﺭﻣﺰ
ﺍﻟﺒﺪﺍﻳﺔﺑﺮﻧﺎﻣﺠﺎً ﻛﺎﻣﻼ ًﻭﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺴُﻤﻰ > .<programﺗﺴُﺘﺨﺪﻡ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻤﺒﻴﻨﺔ ﻓﻲ
ﺍﻟﻤﺜﺎﻝ 3.1ﻟﺘﻮﺿﻴﺢ ﺍﻻﺷﺘﻘﺎﻗﺎﺕ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 120
<stmt<> →>stmt_list
| >< >stmt_list؛ <stmt
<>expression< >var<> →>stmt
= <→varﺃ | ﺏ | ﺝ
>ﺍﻟﺘﻌﺒﻴﺮ<→ ><var< + >var
| ><var< - >var
| >ﻓﺎﺭ<
ﺗﺤﺘﻮﻱﺍﻟﻠﻐﺔ ﺍﻟﻤﻮﺻﻮﻓﺔ ﻓﻲ ﻗﻮﺍﻋﺪ ﺍﻟﻤﺜﺎﻝ 3.1ﻋﻠﻰ ﻧﻤﻮﺫﺝ ﺑﻴﺎﻥ ﻭﺍﺣﺪ ﻓﻘﻂ :ﺍﻟﺘﺨﺼﻴﺺ.
ﺑﺮﻧﺎﻣﺞﻳﺘﻜﻮﻥ ﻣﻦ ﻛﻠﻤﺔ ﺧﺎﺻﺔﻳﺒﺪﺃ ،ﻣﺘﺒﻮﻋﺔ ﺑﻘﺎﺉﻤﺔ ﻣﻦ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻣﻔﺼﻮﻟﺔ ﺑﻔﻮﺍﺻﻞ ﻣﻨﻘﻮﻃﺔ ،
ﻣﺘﺒﻮﻋﺔﺑﺎﻟﻜﻠﻤﺔ ﺍﻟﺨﺎﺻﺔﻧﻬﺎﻳﺔ .ﺍﻟﺘﻌﺒﻴﺮ ﻫﻮ ﺇﻣﺎ ﻣﺘﻐﻴﺮ ﻭﺍﺣﺪ ﺃﻭ ﻣﺘﻐﻴﺮﻳﻦ ﻣﻔﺼﻮﻟﻴﻦ ﺇﻣﺎ +ﺃﻭ .-
ﺃﺳﻤﺎءﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻮﺣﻴﺪﺓ ﻓﻲ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﻫﻲﺃ ،ﺏ ،ﻭﺝ.
>ﺑﺮﻧﺎﻣﺞ< =<ﻳﺒﺪﺃ><stmt_listﻧﻬﺎﻳﺔ
=<ﻳﺒﺪﺃ>< >stmt_list؛ <stmtﻧﻬﺎﻳﺔ
=<ﻳﺒﺪﺃ>< >stmt_list؛ <var< = >expressionﻧﻬﺎﻳﺔ =<
ﻳﺒﺪﺃﺃ = >ﺍﻟﺘﻌﺒﻴﺮ< ؛ ><stmt_listﻧﻬﺎﻳﺔ =<ﻳﺒﺪﺃﺃ = >
< >stmt_list؛ <var< + >varﻧﻬﺎﻳﺔ =<ﻳﺒﺪﺃﺃ = ﺏ > +ﻓﺎﺭ< ؛
><stmt_listﻧﻬﺎﻳﺔ =<ﻳﺒﺪﺃﺃ = ﺏ +ﺝ ؛ ><stmt_listﻧﻬﺎﻳﺔ
=<ﻳﺒﺪﺃﺃ = ﺏ +ﺝ ؛ ><stmtﻧﻬﺎﻳﺔ
ﻳﺒﺪﺃﻫﺬﺍ ﺍﻻﺷﺘﻘﺎﻕ ،ﻣﺜﻞ ﻛﻞ ﺍﻻﺷﺘﻘﺎﻗﺎﺕ ،ﺑﺮﻣﺰ ﺍﻟﺒﺪﺍﻳﺔ ،ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ >ﺍﻟﺒﺮﻧﺎﻣﺞ< .ﻳﻘُﺮﺃ
ﺍﻟﺮﻣﺰ=< "ﻣﺸﺘﻘﺎﺕ" .ﻳﺘﻢ ﺍﺷﺘﻘﺎﻕ ﻛﻞ ﺳﻠﺴﻠﺔ ﻣﺘﺘﺎﻟﻴﺔ ﻓﻲ ﺍﻟﺘﺴﻠﺴﻞ ﻣﻦ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺴﺎﺑﻘﺔ
ﻋﻦﻃﺮﻳﻖ ﺍﺳﺘﺒﺪﺍﻝ ﺃﺣﺪ ﺍﻷﺣﺮﻑ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ﺑﺄﺣﺪ ﺗﻌﺮﻳﻔﺎﺕ ﺗﻠﻚ ﻏﻴﺮ ﻧﻬﺎﺉﻴﺔ .ﻛﻞ ﺳﻠﺴﻠﺔ ﻓﻲ
ﺍﻻﺷﺘﻘﺎﻕ ،ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ >ﺑﺮﻧﺎﻣﺞ< ،ﺗﺴﻤﻰ ﺃﺷﻜﻞ ﻭﺟﻮﺩﻱ.
ﻓﻲﻫﺬﺍ ﺍﻻﺷﺘﻘﺎﻕ ،ﺗﻜﻮﻥ ﺍﻟﺼﻴﻐﺔ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ﺍﻟﻤﺴﺘﺒﺪﻟﺔ ﻫﻲ ﺩﺍﺉﻤﺎً ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ ﻏﻴﺮ
ﻧﻬﺎﺉﻴﺔﻓﻲ ﺍﻟﺸﻜﻞ ﺍﻟﻤﻌﻴﻦ ﺍﻟﺴﺎﺑﻖ .ﺗﺴﻤﻰ ﺍﻻﺷﺘﻘﺎﻗﺎﺕ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﺗﺮﺗﻴﺐ ﺍﻻﺳﺘﺒﺪﺍﻝ ﻫﺬﺍ
ﺍﻻﺷﺘﻘﺎﻗﺎﺕﻓﻲ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ .ﻳﺴﺘﻤﺮ ﺍﻻﺷﺘﻘﺎﻕ ﺣﺘﻰ ﻻ ﻳﺤﺘﻮﻱ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻤﻌﺘﻤﺪ ﻋﻠﻰ
ﻏﻴﺮﻧﻬﺎﺉﻴﺔ .ﻫﺬﺍ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺤﺴﻲ ،ﺍﻟﺬﻱ ﻳﺘﻜﻮﻥ ﻣﻦ ﻣﺤﻄﺎﺕ ﻓﻘﻂ ،ﺃﻭ ، lexemesﻫﻮ
ﺍﻟﺠﻤﻠﺔﺍﻟﻤﻮﻟﺪﺓ.
121 3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ ،ﻗﺪ ﻳﻜﻮﻥ ﺍﻻﺷﺘﻘﺎﻕ ﺃﻗﺼﻰ ﺍﻟﻴﻤﻴﻦ ﺃﻭ ﺑﺘﺮﺗﻴﺐ ﻟﻴﺲ ﺃﻗﺼﻰ
ﺍﻟﻴﺴﺎﺭﺃﻭ ﺃﻗﺼﻰ ﺍﻟﻴﻤﻴﻦ .ﻟﻴﺲ ﻷﻣﺮ ﺍﻻﺷﺘﻘﺎﻕ ﺃﻱ ﺗﺄﺛﻴﺮ ﻋﻠﻰ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﻮﻟﺪﻫﺎ ﺍﻟﻘﻮﺍﻋﺪ.
ﺍﻟﻤﺜﺎﻝ 3.2ﻫﻮ ﻣﺜﺎﻝ ﺁﺧﺮ ﻟﻘﻮﺍﻋﺪ ﺍﻟﻠﻐﺔ ﻟﺠﺰء ﻣﻦ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﻤﻮﺫﺟﻴﺔ.
ﻳﺼﻒﺍﻟﻨﺤﻮ ﻓﻲ ﺍﻟﻤﺜﺎﻝ 3.2ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ ﺍﻟﺘﻲ ﺗﻜﻮﻥ ﺟﻮﺍﻧﺒﻬﺎ ﺍﻟﻴﻤﻨﻰ ﻋﺒﺎﺭﺓ ﻋﻦ
ﺗﻌﺒﻴﺮﺍﺕﺣﺴﺎﺑﻴﺔ ﻣﻊ ﻋﻮﺍﻣﻞ ﺍﻟﻀﺮﺏ ﻭﺍﻟﺠﻤﻊ ﻭﺍﻷﻗﻮﺍﺱ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻟﺒﻴﺎﻥ
ﺃ= ﺏ * )ﺃ +ﺝ(
=< ﺃ = ﺏ * >ﺇﻛﺴﺒﺮ<
=< ﺃ = ﺏ * )>ﺇﻛﺴﺒﺮ<( =< ﺃ = ﺏ * )>
ﻣﻌﺮﻑ< <= (<expr> +ﺃ = ﺏ * )ﺃ > +
ﺇﻛﺴﺒﺮ<( =< ﺃ = ﺏ * )ﺃ > +ﻣﻌﺮﻑ<( =< ﺃ
= ﺏ * )ﺃ +ﺝ (
3.3.1.6ﺗﺤﻠﻴﻞ ﺍﻷﺷﺠﺎﺭ
ﻣﻦﺃﻛﺜﺮ ﺍﻟﻤﻴﺰﺍﺕ ﺟﺎﺫﺑﻴﺔ ﻟﻠﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺃﻧﻬﺎ ﺗﺼﻒ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻬﺮﻣﻴﺔ
ﻟﺠﻤﻞﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺗﺤﺪﺩﻫﺎ .ﺗﺴﻤﻰ ﻫﺬﻩ ﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﻬﺮﻣﻴﺔﺗﺤﻠﻴﻞ ﺍﻷﺷﺠﺎﺭ .ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﺗﻈُﻬﺮ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻓﻲ ﺍﻟﺸﻜﻞ 3.1ﺑﻨﻴﺔ ﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﺍﻟﻤﺸﺘﻖ ﺳﺎﺑﻘﺎً.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 122
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.1
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻟﺒﻴﺎﻥ
<>expr = <>id ﺑﺴﻴﻂ
ﺃ= ﺏ * )ﺃ +ﺝ(
<>id ﺃ
ﺝ
ﻳﺘﻢﺗﻤﻴﻴﺰ ﻛﻞ ﻋﻘﺪﺓ ﺩﺍﺧﻠﻴﺔ ﻟﺸﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺑﺮﻣﺰ ﻏﻴﺮ ﻧﻬﺎﺉﻲ ؛ ﻳﺘﻢ ﺗﻤﻴﻴﺰ ﻛﻞ ﻭﺭﻗﺔ ﺑﺮﻣﺰ
ﻃﺮﻓﻲ.ﺗﺼﻒ ﻛﻞ ﺷﺠﺮﺓ ﻓﺮﻋﻴﺔ ﻟﺸﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻣﺜﻴﻼً ﻭﺍﺣﺪﺍً ﻟﻠﺘﺠﺮﻳﺪ ﻓﻲ ﺍﻟﺠﻤﻠﺔ.
3.3.1.7ﺍﻟﻐﻤﻮﺽ
ﻳﻘُﺎﻝﺇﻥ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺘﻲ ﺗﻨُﺸﺊ ﻧﻤﻮﺫﺟﺎً ﺣﺴﺎﺑﻴﺎً ﻟﻬﺎ ﺷﺠﺮﺗﺎﻥ ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﺷﺠﺮﺗﻲ ﺍﻟﺘﺤﻠﻴﻞ
ﺍﻟﻤﺘﻤﻴﺰﺗﻴﻦﻏﺎﻣﺾ .ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ ﺍﻟﻤﺜﺎﻝ ، 3.3ﻭﺍﻟﺘﻲ ﺗﻌﺪ
ﺍﺧﺘﻼﻓﺎًﺑﺴﻴﻄﺎً ﻓﻲ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ ﺍﻟﻤﺜﺎﻝ .3.2
ﻣﺜﺎﻝ .3.2ﺑﺪﻻ ًﻣﻦ ﺍﻟﺴﻤﺎﺡ ﻟﺸﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻟﻠﺘﻌﺒﻴﺮ ﺑﺎﻟﻨﻤﻮ ﻋﻠﻰ ﺍﻟﻴﻤﻴﻦ ﻓﻘﻂ ،ﺗﺴﻤﺢ ﻫﺬﻩ
ﺍﻟﻘﻮﺍﻋﺪﺑﺎﻟﻨﻤﻮ ﻋﻠﻰ ﻛﻞ ﻣﻦ ﺍﻟﻴﺴﺎﺭ ﻭﺍﻟﻴﻤﻴﻦ.
ﺷﺠﺮﺗﺎﺗﺤﻠﻴﻞ ﻣﺘﻤﻴﺰﺗﺎﻥ
<>expr = <>id <>expr = <>id
ﻟﻨﻔﺲﺍﻟﺠﻤﻠﺔ ،
ﺃ= ﺏ +ﺝ * ﺃ
<>expr * <>expr ﺃ <>expr + <>expr ﺃ
ﻫﻨﺎﻙﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺨﺼﺎﺉﺺ ﺍﻷﺧﺮﻯ ﻟﻠﻘﻮﺍﻋﺪ ﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻣﻔﻴﺪﺓ ﺃﺣﻴﺎﻧﺎً ﻓﻲ ﺗﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ
ﻛﺎﻧﺖﺍﻟﻘﻮﺍﻋﺪ ﻏﺎﻣﻀﺔ1.ﻭﻫﻲ ﺗﺸﻤﻞ ﻣﺎ ﻳﻠﻲ (1) :ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻮﺍﻋﺪ ﺗﻮﻟﺪ ﺟﻤﻠﺔ ﺑﺄﻛﺜﺮ ﻣﻦ
ﺍﺷﺘﻘﺎﻕﻭﺍﺣﺪ ﻓﻲ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ ﻭ ) (2ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻮﺍﻋﺪ ﺗﻮﻟﺪ ﺟﻤﻠﺔ ﺑﺄﻛﺜﺮ ﻣﻦ ﺍﺷﺘﻘﺎﻕ ﻭﺍﺣﺪ ﻓﻲ
ﺃﻗﺼﻰﺍﻟﻴﻤﻴﻦ.
ﻳﻤﻜﻦﺃﻥ ﺗﺴﺘﻨﺪ ﺑﻌﺾ ﺧﻮﺍﺭﺯﻣﻴﺎﺕ ﺍﻟﺘﺤﻠﻴﻞ ﺇﻟﻰ ﻗﻮﺍﻋﺪ ﻧﺤﻮﻳﺔ ﻏﺎﻣﻀﺔ .ﻋﻨﺪﻣﺎ ﻳﻮﺍﺟﻪ ﻣﺜﻞ
ﻫﺬﺍﺍﻟﻤﺤﻠﻞ ﺍﻟﻠﻐﻮﻱ ﺑﻨﻴﺔ ﻏﺎﻣﻀﺔ ،ﻓﺈﻧﻪ ﻳﺴﺘﺨﺪﻡ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﻏﻴﺮ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺘﻲ ﻳﻮﻓﺮﻫﺎ ﺍﻟﻤﺼﻤﻢ
ﻹﻧﺸﺎءﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺼﺤﻴﺤﺔ .ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻟﺤﺎﻻﺕ ،ﻳﻤﻜﻦ ﺇﻋﺎﺩﺓ ﻛﺘﺎﺑﺔ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻐﺎﻣﻀﺔ
ﺑﺤﻴﺚﻻ ﻟﺒﺲ ﻓﻴﻬﺎ ﻭﻟﻜﻦ ﻻ ﺗﺰﺍﻝ ﺗﻮﻟﺪ ﺍﻟﻠﻐﺔ ﺍﻟﻤﺮﻏﻮﺑﺔ.
3.3.1.8ﺃﺳﺒﻘﻴﺔ ﺍﻟﻤﺸﻐﻞ
ﻋﻨﺪﻣﺎﻳﺘﻀﻤﻦ ﺍﻟﺘﻌﺒﻴﺮ ﻋﺎﻣﻠﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ ،ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺱ +ﺹ * ﺽ ،ﺇﺣﺪﻯ ﺍﻟﻘﻀﺎﻳﺎ
ﺍﻟﺪﻻﻟﻴﺔﺍﻟﻮﺍﺿﺤﺔ ﻫﻲ ﺗﺮﺗﻴﺐ ﺗﻘﻴﻴﻢ ﺍﻟﻤﺸﻐﻠﻴﻦ )ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ ﻫﺬﺍ ﺍﻟﺘﻌﺒﻴﺮ ،ﻫﻞ ﻳﺘﻢ
ﺍﻟﺠﻤﻊﺛﻢ ﺍﻟﻀﺮﺏ ،ﺃﻭ ﺍﻟﻌﻜﺲ؟( .ﻳﻤﻜﻦ ﺍﻹﺟﺎﺑﺔ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺴﺆﺍﻝ ﺍﻟﺪﻻﻟﻲ ﻋﻦ ﻃﺮﻳﻖ ﺗﻌﻴﻴﻦ
ﻣﺴﺘﻮﻳﺎﺕﺃﺳﺒﻘﻴﺔ ﻣﺨﺘﻠﻔﺔ ﻟﻠﻤﺸﻐﻠﻴﻦ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺇﺫﺍ ﺗﻢ ﺗﻌﻴﻴﻦ ﺃﺳﺒﻘﻴﺔ ﺃﻋﻠﻰ ﻣﻦ ) +
ﺣﺴﺐﺍﻟﻠﻐﺔ
.1ﻻﺣﻆ ﺃﻧﻪ ﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ ﺭﻳﺎﺿﻴﺎً ﺗﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺘﻌﺴﻔﻴﺔ ﻏﺎﻣﻀﺔ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 124
ﻣﺼﻤﻢ( ،ﺳﻴﺘﻢ ﺍﻟﻀﺮﺏ ﺃﻭﻻ ً ،ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺗﺮﺗﻴﺐ ﻇﻬﻮﺭ ﺍﻟﻌﺎﻣﻠﻴﻦ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ.
ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﻳﻤﻜﻦ ﻟﻠﻘﻮﺍﻋﺪ ﺃﻥ ﺗﺼﻒ ﺑﻨﻴﺔ ﻧﺤﻮﻳﺔ ﻣﻌﻴﻨﺔ ﺑﺤﻴﺚ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺟﺰء
ﻣﻦﻣﻌﻨﻰ ﺍﻟﻬﻴﻜﻞ ﻣﻦ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ .ﻋﻠﻰ ﻭﺟﻪ ﺍﻟﺨﺼﻮﺹ ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ
ﺣﻘﻴﻘﺔﺃﻥ ﻋﺎﻣﻞ ﺍﻟﺘﺸﻐﻴﻞ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﺤﺴﺎﺑﻲ ﻳﺘﻢ ﺇﻧﺸﺎﺅﻩ ﻓﻲ ﻣﺴﺘﻮﻯ ﺃﺩﻧﻰ ﻓﻲ ﺷﺠﺮﺓ
ﺍﻟﺘﺤﻠﻴﻞ)ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﺠﺐ ﺗﻘﻴﻴﻤﻪ ﺃﻭﻻ ً( ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻧﻪ ﻟﻪ ﺃﺳﺒﻘﻴﺔ ﻋﻠﻰ ﻋﺎﻣﻞ ﺗﻢ ﺇﻧﺘﺎﺟﻪ ﺃﻋﻠﻰ ﻓﻲ
ﺍﻟﺸﺠﺮﺓ.ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻷﻭﻟﻰ ﺑﺎﻟﺸﻜﻞ ، 3.2ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺘﻢ ﺇﻧﺸﺎء ﻋﺎﻣﻞ
ﺍﻟﻀﺮﺏﻓﻲ ﻣﺴﺘﻮﻯ ﺃﺩﻧﻰ ﻓﻲ ﺍﻟﺸﺠﺮﺓ ،ﻣﻤﺎ ﻗﺪ ﻳﺸﻴﺮ ﺇﻟﻰ ﺃﻧﻪ ﻟﻪ ﺍﻷﺳﺒﻘﻴﺔ ﻋﻠﻰ ﻋﺎﻣﻞ ﺍﻹﺿﺎﻓﺔ
ﻓﻲﺍﻟﺘﻌﺒﻴﺮ .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺜﺎﻧﻴﺔ ﺗﺸﻴﺮ ﺇﻟﻰ ﺍﻟﻌﻜﺲ ﺗﻤﺎﻣﺎً .ﻟﺬﻟﻚ ﻳﺒﺪﻭ ﺃﻥ
ﺷﺠﺮﺗﺎﺍﻟﺘﺤﻠﻴﻞ ﺗﺸﻴﺮﺍﻥ ﺇﻟﻰ ﻣﻌﻠﻮﻣﺎﺕ ﺃﺳﺒﻘﻴﺔ ﻣﺘﻀﺎﺭﺑﺔ.
ﻻﺣﻆﺃﻧﻪ ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻗﻮﺍﻋﺪ ﺍﻟﻤﺜﺎﻝ 3.2ﻟﻴﺴﺖ ﻏﺎﻣﻀﺔ ،ﻓﺈﻥ ﺗﺮﺗﻴﺐ ﺍﻷﺳﺒﻘﻴﺔ
ﻟﻤﺸﻐﻠﻴﻬﺎﻟﻴﺲ ﻫﻮ ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﻤﻌﺘﺎﺩ .ﻓﻲ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ،ﻓﺈﻥ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻟﺠﻤﻠﺔ ﻣﻊ
ﻋﻮﺍﻣﻞﺗﺸﻐﻴﻞ ﻣﺘﻌﺪﺩﺓ ،ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺍﻟﻌﻮﺍﻣﻞ ﺍﻟﻤﻌﻴﻨﺔ ،ﻟﻬﺎ ﻋﺎﻣﻞ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻤﻮﺟﻮﺩ ﻓﻲ
ﺃﻗﺼﻰﺍﻟﻴﻤﻴﻦ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ ﻋﻨﺪ ﺃﺩﻧﻰ ﻧﻘﻄﺔ ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ،ﻣﻊ ﺗﺤﺮﻙ ﺍﻟﻌﻮﺍﻣﻞ ﺍﻷﺧﺮﻯ ﻓﻲ
ﺍﻟﺸﺠﺮﺓﻟﻸﻋﻠﻰ ﺗﺪﺭﻳﺠﻴﺎ ًﻛﻠﻤﺎ ﺗﺤﺮﻙ ﺍﻟﻤﺮء ﻋﻠﻰ ﺍﻟﻴﺴﺎﺭ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻓﻲ
ﺍﻟﺘﻌﺒﻴﺮﺃ +ﺏ * ﺝ * ،ﻫﻮ ﺍﻷﺩﻧﻰ ﻓﻲ ﺍﻟﺸﺠﺮﺓ ،ﻣﻤﺎ ﻳﺸﻴﺮ ﺇﻟﻰ ﺃﻧﻪ ﻳﺠﺐ ﺍﻟﻘﻴﺎﻡ ﺑﻪ ﺃﻭﻻ ً.ﻭﻣﻊ
ﺫﻟﻚ ،ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮﺃ * ﺏ +ﺝ + ،ﻫﻮ ﺍﻷﺩﻧﻰ ،ﻣﻤﺎ ﻳﺸﻴﺮ ﺇﻟﻰ ﺃﻧﻪ ﻳﺠﺐ ﺍﻟﻘﻴﺎﻡ ﺑﻪ ﺃﻭﻻً.
ﻳﻤﻜﻦﻛﺘﺎﺑﺔ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺒﺴﻴﻄﺔ ﺍﻟﺘﻲ ﻛﻨﺎ ﻧﻨﺎﻗﺸﻬﺎ ﻭﺍﻟﺘﻲ ﻻ ﻟﺒﺲ ﻓﻴﻬﺎ
ﻭﺗﺤﺪﺩﺃﺳﺒﻘﻴﺔ ﻣﺘﺴﻘﺔ ﻟـ
+ﻭ* ،ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﺬﻱ ﺗﻈﻬﺮ ﺑﻪ ﺍﻟﻌﻮﺍﻣﻞ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮ .ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﺍﻟﺘﺮﺗﻴﺐ
ﺍﻟﺼﺤﻴﺢﺑﺎﺳﺘﺨﺪﺍﻡ ﺭﻣﻮﺯ ﻏﻴﺮ ﻧﻬﺎﺉﻴﺔ ﻣﻨﻔﺼﻠﺔ ﻟﺘﻤﺜﻴﻞ ﻣﻌﺎﻣﻼﺕ ﺍﻟﻤﺸﻐﻠﻴﻦ ﺍﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ
ﺃﺳﺒﻘﻴﺔﻣﺨﺘﻠﻔﺔ .ﻫﺬﺍ ﻳﺘﻄﻠﺐ ﻗﻮﺍﻋﺪ ﺇﺿﺎﻓﻴﺔ ﻏﻴﺮ ﻧﻬﺎﺉﻴﺔ ﻭﺑﻌﺾ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺠﺪﻳﺪﺓ .ﺑﺪﻻ ًﻣﻦ
ﺍﺳﺘﺨﺪﺍﻡ> <exprﻟﻜﻞ ﻣﻦ ﺍﻟﻤﻌﺎﻣﻠﻴﻦ +ﻭ * ،ﻳﻤﻜﻨﻨﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺛﻼﺙ ﻣﻌﺎﻣﻼﺕ ﻏﻴﺮ ﻧﻬﺎﺉﻴﺔ
ﻟﺘﻤﺜﻴﻞﺍﻟﻤﻌﺎﻣﻼﺕ ،ﻣﻤﺎ ﻳﺴﻤﺢ ﻟﻠﻘﻮﺍﻋﺪ ﺑﻔﺮﺽ ﻋﻮﺍﻣﻞ ﻣﺨﺘﻠﻔﺔ ﻋﻠﻰ ﻣﺴﺘﻮﻳﺎﺕ ﻣﺨﺘﻠﻔﺔ ﻓﻲ
ﺷﺠﺮﺓﺍﻟﺘﺤﻠﻴﻞ .ﺇﺫﺍ ﻛﺎﻥ > <exprﻫﻮ ﺭﻣﺰ ﺍﻟﺠﺬﺭ ﻟﻠﺘﻌﺒﻴﺮﺍﺕ ،ﻓﻴﻤﻜﻦ ﺇﺟﺒﺎﺭ +ﻋﻠﻰ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ
ﺃﻋﻠﻰﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻣﻦ ﺧﻼﻝ ﺟﻌﻞ > <exprﻣﺒﺎﺷﺮﺓ ﺗﻮﻟﺪ ﻋﻮﺍﻣﻞ +ﻓﻘﻂ ،ﺑﺎﺳﺘﺨﺪﺍﻡ
ﺍﻟﻤﻌﺎﻣﻞﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻲ ﺍﻟﺠﺪﻳﺪ > ،ﻧﺺ< ،ﻛﻤﻌﺎﻣﻞ ﺃﻳﻤﻦ ﻟـ .+ﺑﻌﺪ ﺫﻟﻚ ،ﻳﻤﻜﻨﻨﺎ ﺗﺤﺪﻳﺪ >ﻧﺺ<
ﻹﻧﺸﺎءﻋﻮﺍﻣﻞ * ،ﺑﺎﺳﺘﺨﺪﺍﻡ >ﻧﺺ< ﻛﻤﻌﺎﻣﻞ ﺃﻳﺴﺮ ﻭﻣﻌﺎﻣﻞ ﻏﻴﺮ ﻧﻬﺎﺉﻲ ﺟﺪﻳﺪ > ،ﻋﺎﻣﻞ< ،
ﻛﻤﻌﺎﻣﻞﺣﻘﻬﺎ .ﺍﻵﻥ ،ﺳﺘﻜﻮﻥ * ﺩﺍﺉﻤﺎً ﺃﻗﻞ ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ،ﻷﻧﻬﺎ ﺑﺒﺴﺎﻃﺔ ﺃﺑﻌﺪ ﻣﻦ ﺭﻣﺰ
ﺍﻟﺒﺪﺍﻳﺔﻋﻦ +ﻓﻲ ﻛﻞ ﺍﺷﺘﻘﺎﻕ .ﻗﻮﺍﻋﺪ ﺍﻟﻤﺜﺎﻝ 3.4ﻫﻲ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ.
125 3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﻳﺘﻢﻋﺮﺽ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻔﺮﻳﺪﺓ ﻟﻬﺬﻩ ﺍﻟﺠﻤﻠﺔ ،ﺑﺎﺳﺘﺨﺪﺍﻡ ﻗﻮﺍﻋﺪ ﺍﻟﻤﺜﺎﻝ ، 3.4ﻓﻲ ﺍﻟﺸﻜﻞ
.3.3
ﺍﻟﻌﻼﻗﺔﺑﻴﻦ ﺃﺷﺠﺎﺭ ﺍﻟﺘﺤﻠﻴﻞ ﻭﺍﻻﺷﺘﻘﺎﻗﺎﺕ ﻗﺮﻳﺒﺔ ﺟﺪﺍً :ﻳﻤﻜﻦ ﺑﺴﻬﻮﻟﺔ ﺇﻧﺸﺎء ﺃﻱ ﻣﻨﻬﻤﺎ ﻣﻦ
ﺍﻵﺧﺮ.ﻛﻞ ﺍﺷﺘﻘﺎﻕ ﺑﻘﻮﺍﻋﺪ ﻻ ﻟﺒﺲ ﻓﻴﻬﺎ ﻟﻪ ﺷﺠﺮﺓ ﺗﺤﻠﻴﻞ ﻓﺮﻳﺪﺓ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻫﺬﻩ
ﺍﻟﺸﺠﺮﺓﻳﻤﻜﻦ ﺗﻤﺜﻴﻠﻬﺎ ﺑﻤﺸﺘﻘﺎﺕ ﻣﺨﺘﻠﻔﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻻﺷﺘﻘﺎﻕ ﺍﻟﺘﺎﻟﻲ ﻟﻠﺠﻤﻠﺔ
ﺃ= ﺏ +ﺝ * ﺃﻳﺨﺘﻠﻒ ﻋﻦ ﺍﺷﺘﻘﺎﻕ ﻧﻔﺲ ﺍﻟﺠﻤﻠﺔ ﺍﻟﻮﺍﺭﺩﺓ ﺳﺎﺑﻘﺎً .ﻫﺬﺍ ﺍﺷﺘﻘﺎﻕ ﺃﻗﺼﻰ ﺍﻟﻴﻤﻴﻦ ،
ﺑﻴﻨﻤﺎﺍﻟﺴﺎﺑﻖ ﻫﻮ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ .ﻭﻣﻊ ﺫﻟﻚ ،ﻳﺘﻢ ﺗﻤﺜﻴﻞ ﻛﻼ ﺍﻟﻤﺸﺘﻘﻴﻦ ﻣﻦ ﺧﻼﻝ ﻧﻔﺲ ﺷﺠﺮﺓ
ﺍﻟﺘﺤﻠﻴﻞ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 126
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.3
ﺷﺠﺮﺓﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻔﺮﻳﺪﺓ
<>expr = <>id ﻝﺃ = ﺏ +ﺝ * ﺃ
ﺑﺎﺳﺘﺨﺪﺍﻡﻻ ﻟﺒﺲ ﻓﻴﻪ
ﻗﻮﺍﻋﺪ
>ﻧﺺ< + <>expr ﺃ
ﺝ ﺏ
3.3.1.9ﺍﺗﺤﺎﺩ ﺍﻟﻤﺸﻐﻠﻴﻦ
ﻋﻨﺪﻣﺎﻳﺘﻀﻤﻦ ﺗﻌﺒﻴﺮ ﻋﺎﻣﻠﻴﻦ ﻟﻬﻤﺎ ﻧﻔﺲ ﺍﻷﻭﻟﻮﻳﺔ )ﻣﺜﻞ
* ﻭ /ﻋﺎﺩﺓ ﻣﺎ ﻳﻜﻮﻥ( -ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺃ /ﺏ * ﺝ -ﻣﻄﻠﻮﺏ ﻗﺎﻋﺪﺓ ﺩﻻﻟﻴﺔ ﻟﺘﺤﺪﻳﺪ ﺃﻳﻬﺎ
ﻳﺠﺐﺃﻥ ﻳﻜﻮﻥ ﻟﻪ ﺍﻷﺳﺒﻘﻴﺔ2.ﻫﺬﻩ ﺍﻟﻘﺎﻋﺪﺓ ﺗﺴﻤﻰﺍﻟﺘﺮﺍﺑﻄﻴﺔ.
.2ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﺬﻱ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺗﻜﺮﺭﻳﻦ ﻟﻨﻔﺲ ﺍﻟﻌﺎﻣﻞ ﻟﻪ ﻧﻔﺲ ﺍﻟﻤﺸﻜﻠﺔ ؛ ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺃ /ﺏ /ﺝ.
127 3.3ﺍﻟﻄﺮﻕ ﺍﻟﺮﺳﻤﻴﺔ ﻟﻮﺻﻒ ﺍﻟﻨﺤﻮ
ﻛﻤﺎﻛﺎﻥ ﺍﻟﺤﺎﻝ ﻣﻊ ﺍﻷﺳﺒﻘﻴﺔ ،ﻗﺪ ﺗﺸﻴﺮ ﻗﻮﺍﻋﺪ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﺇﻟﻰ ﺍﺭﺗﺒﺎﻁ
ﺍﻟﻤﺸﻐﻞ.ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻟﺒﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ:
ﻳﺘﻢﻋﺮﺽ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻟﻬﺬﻩ ﺍﻟﺠﻤﻠﺔ ،ﻛﻤﺎ ﻫﻮ ﻣﺤﺪﺩ ﻓﻲ ﻗﻮﺍﻋﺪ ﺍﻟﻤﺜﺎﻝ ، 3.4ﻓﻲ ﺍﻟﺸﻜﻞ
.3.4
ﺗﻮﺿﺢﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﻓﻲ ﺍﻟﺸﻜﻞ 3.4ﻋﺎﻣﻞ ﺍﻹﺿﺎﻓﺔ ﺍﻷﻳﺴﺮ ﺃﻗﻞ ﻣﻦ ﻋﺎﻣﻞ ﺍﻹﺿﺎﻓﺔ
ﺍﻷﻳﻤﻦ.ﻫﺬﺍ ﻫﻮ ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﺼﺤﻴﺢ ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺃﻥ ﺗﻜﻮﻥ ﺍﻹﺿﺎﻓﺔ ﺍﺭﺗﺒﺎﻃﻴﺔ ،ﻭﻫﻮ ﺃﻣﺮ
ﻧﻤﻮﺫﺟﻲ.ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﺤﺎﻻﺕ ،ﻳﻜﻮﻥ ﺍﺭﺗﺒﺎﻁ ﺍﻹﺿﺎﻓﺔ ﻓﻲ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻏﻴﺮ ﺫﻱ ﺻﻠﺔ .ﻓﻲ
ﺍﻟﺮﻳﺎﺿﻴﺎﺕ ،ﺗﻌﺘﺒﺮ ﺍﻟﺠﻤﻊ ﺗﺮﺍﺑﻄﻴﺔ ،ﻣﻤﺎ ﻳﻌﻨﻲ ﺃﻥ ﺃﻭﺍﻣﺮ ﺍﻟﺘﻘﻴﻴﻢ ﺍﻟﺘﺮﺍﺑﻄﻴﺔ ﺍﻟﻴﻤﻨﻰ ﻭﺍﻟﻴﺴﺮﻯ
ﺗﻌﻨﻲﻧﻔﺲ ﺍﻟﺸﻲء .ﺇﻧﻪ) ،ﺃ +ﺏ( +ﺝ = ﺃ ) +ﺏ +ﺝ(.ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﺇﺿﺎﻓﺔ ﺍﻟﻔﺎﺻﻠﺔ ﺍﻟﻌﺎﺉﻤﺔ
ﻓﻲﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻟﻴﺴﺖ ﺑﺎﻟﻀﺮﻭﺭﺓ ﺗﺮﺍﺑﻄﻴﺔ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻓﺘﺮﺽ ﺃﻥ ﻗﻴﻢ ﺍﻟﻔﺎﺻﻠﺔ
ﺍﻟﻌﺎﺉﻤﺔﺗﺨﺰﻥ ﺳﺒﻌﺔ ﺃﺭﻗﺎﻡ ﻣﻦ ﺍﻟﺪﻗﺔ .ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﻣﺸﻜﻠﺔ ﺟﻤﻊ 11ﺭﻗﻤﺎً ﻣﻌﺎً ،ﺣﻴﺚ
ﻳﻜﻮﻥﺃﺣﺪ ﺍﻷﺭﻗﺎﻡ ﻫﻮ 710
ﻭﺍﻟﻌﺸﺮﺓﺍﻷﺧﺮﻯ ﻫﻲ .1ﺇﺫﺍ ﺗﻤﺖ ﺇﺿﺎﻓﺔ ﻛﻞ ٍّﻣﻦ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﻐﻴﺮﺓ )ﺍﻵﺣﺎﺩ( ﺇﻟﻰ ﺍﻟﻌﺪﺩ ﺍﻟﻜﺒﻴﺮ ،
ﻭﺍﺣﺪﺍًﺗﻠﻮ ﺍﻵﺧﺮ ،ﻓﻼ ﻳﻮﺟﺪ ﺗﺄﺛﻴﺮ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﻌﺪﺩ ،ﻷﻥ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﻐﻴﺮﺓ ﺗﺤﺪﺙ ﻓﻲ ﺍﻟﺨﺎﻧﺔ
ﺍﻟﺜﺎﻣﻨﺔﻣﻦ ﺍﻟﻌﺪﺩ ﺍﻟﻜﺒﻴﺮ .ﻭﻣﻊ ﺫﻟﻚ ،ﺇﺫﺍ ﺗﻢ ﺟﻤﻊ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺼﻐﻴﺮﺓ ﻣﻌﺎً ﺃﻭﻻ ًﻭﺃﺿﻴﻔﺖ ﺍﻟﻨﺘﻴﺠﺔ
ﺇﻟﻰﺍﻟﻌﺪﺩ ﺍﻟﻜﺒﻴﺮ ،ﺗﻜﻮﻥ ﺍﻟﻨﺘﻴﺠﺔ ﺑﺪﻗﺔ ﻣﻜﻮﻧﺔ ﻣﻦ ﺳﺒﻌﺔ ﺃﺭﻗﺎﻡ ﻫﻲ .710 * 1.000001ﺍﻟﻄﺮﺡ
ﻭﺍﻟﻘﺴﻤﺔﻟﻴﺴﺎ ﺗﺮﺍﺑﻄﻴﻴﻦ ،ﺳﻮﺍء ﻓﻲ ﺍﻟﺮﻳﺎﺿﻴﺎﺕ ﺃﻭ ﻓﻲ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ .ﻟﺬﻟﻚ ،ﻗﺪ ﻳﻜﻮﻥ ﺍﻻﺭﺗﺒﺎﻁ
ﺍﻟﺼﺤﻴﺢﺿﺮﻭﺭﻳﺎً ﻟﻠﺘﻌﺒﻴﺮ ﺍﻟﺬﻱ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻱ ﻣﻨﻬﻤﺎ.
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.4
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻝﺃ = ﺏ
<>expr = <>id +ﺝ +ﺃﻳﻮﺿﺢ ﺍﺭﺗﺒﺎﻁ
ﺇﺿﺎﻓﺔ
>ﻧﺺ< + <>expr ﺃ
ﺝ <>id
ﺏ
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 128
ﻓﻲﻣﻌﻈﻢ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻲ ﺗﻮﻓﺮﻫﺎ ،ﻓﺈﻥ ﻋﺎﻣﻞ ﺍﻷﺳﻲ ﻫﻮ ﺍﺭﺗﺒﺎﻁ ﺻﺤﻴﺢ .ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ
ﺍﻻﺭﺗﺒﺎﻁﺍﻟﺼﺤﻴﺢ ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺩﻳﺔ ﺍﻟﺼﺤﻴﺤﺔ .ﺍﻟﻘﺎﻋﺪﺓ ﺍﻟﻨﺤﻮﻳﺔ ﻫﻲﺍﻟﻌﻮﺩﻳﺔ ﺍﻟﺼﺤﻴﺤﺔ
ﺇﺫﺍﻇﻬﺮ LHSﻓﻲ ﺍﻟﻄﺮﻑ ﺍﻷﻳﻤﻦ ﻣﻦ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ .ﻗﻮﺍﻋﺪ ﻣﺜﻞ
<→>if_stmtﻟﻮ><logic_exprﺛﻢ><stmt
ﻟﻮ><logic_exprﺛﻢ><stmtﺁﺧﺮ><stmt
ﺇﺫﺍﻛﺎﻥ ﻟﺪﻳﻨﺎ ﺃﻳﻀﺎً >> →<stmtﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ ﻏﺎﻣﻀﺔ .ﺃﺑﺴﻂ ﺷﻜﻞ ﻣﻌﻨﻮﻱ ﻳﻮﺿﺢ ﻫﺬﺍ
ﺍﻟﻐﻤﻮﺽﻫﻮ if_stmt< ،
ﻟﻮ><logic_exprﺛﻢ ﺇﺫﺍ><logic_exprﺛﻢ><stmtﺁﺧﺮ><stmt
ﻟﻮﺗﻢ ==ﺣﻘﻴﻘﻲ
ﺛﻢﺇﺫﺍﺍﻟﻤﺬﻫﺐ == 0
ﺛﻢﺍﻟﺤﺎﺻﻞ = 0؛
ﺁﺧﺮﺍﻟﺤﺎﺻﻞ = ﻋﺪﺩ /ﺩﻳﻦ ؛
ﺍﻟﻤﺸﻜﻠﺔﻫﻲ ﺃﻧﻪ ﺇﺫﺍ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻌﻠﻴﺎ ﻓﻲ ﺍﻟﺸﻜﻞ 3.5ﻛﺄﺳﺎﺱ ﻟﻠﺘﺮﺟﻤﺔ ،
ﻓﺴﻴﺘﻢﺗﻨﻔﻴﺬ ﺟﻤﻠﺔ elseﻋﻨﺪﻣﺎﻣﻨﺘﻬﻲﻟﻴﺲ ﺻﺤﻴﺤﺎً ،ﻭﺭﺑﻤﺎ ﻟﻢ ﻳﻜﻦ ﻫﺬﺍ ﻣﺎ ﻗﺼﺪﻩ ﻣﺆﻟﻒ
ﺍﻟﺒﻨﺎء.ﺳﻮﻑ ﻧﺪﺭﺱ ﺍﻟﻤﺸﻜﻼﺕ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﻤﺸﻜﻠﺔ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻷﺧﺮﻯ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ.
<>if_stmt ﺍﻟﺸﻜﻞ3.5
ﺷﺠﺮﺗﺎﺗﺤﻠﻴﻞ ﻣﻤﻴﺰﺗﺎﻥ
ﻟﻨﻔﺲﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻤﻌﻨﻮﻱ
<>if_stmt
<>if_stmt
<>if_stmt
ﻟﻮ><logic_exprﺛﻢ ﺇﺫﺍ><logic_exprﺛﻢ><stmtﺁﺧﺮ><stmt
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 130
ﺍﻟﻤﻤﺘﺪ3.3.2 BNF
ﺑﺴﺒﺐﺑﻌﺾ ﺍﻟﻤﻀﺎﻳﻘﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ ﻓﻲ ، BNFﺗﻢ ﺗﻤﺪﻳﺪﻩ ﺑﻌﺪﺓ ﻃﺮﻕ .ﺗﺴﻤﻰ ﻣﻌﻈﻢ
ﺍﻹﺻﺪﺍﺭﺍﺕﺍﻟﻤﻮﺳﻌﺔ ، Extended BNFﺃﻭ ﺑﺒﺴﺎﻃﺔ ، EBNFﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻬﺎ ﻟﻴﺴﺖ ﻛﻠﻬﺎ
ﻣﺘﺸﺎﺑﻬﺔﺗﻤﺎﻣﺎً .ﻻ ﺗﻌﺰﺯ ﺍﻻﻣﺘﺪﺍﺩﺍﺕ ﺍﻟﻘﻮﺓ ﺍﻟﻮﺻﻔﻴﺔ ﻟـ BNF؛ ﺇﻧﻬﺎ ﺗﺰﻳﺪ ﻓﻘﻂ ﻣﻦ ﻗﺎﺑﻠﻴﺘﻬﺎ
ﻟﻠﻘﺮﺍءﺓﻭﺍﻟﻜﺘﺎﺑﺔ.
<→>if_stmtﻟﻮ)>ﺍﻟﺘﻌﺒﻴﺮ<( >ﺍﻟﺒﻴﺎﻥ<
|ﻟﻮ)>ﺍﻟﺘﻌﺒﻴﺮ<( >ﺍﻟﺒﻴﺎﻥ<ﺁﺧﺮ>ﺑﻴﺎﻥ<
ﺍﻻﻣﺘﺪﺍﺩﺍﻟﺜﺎﻧﻲ ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﻗﻮﺍﺱ ﻓﻲ RHSﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻥ ﺍﻟﺠﺰء ﺍﻟﻤﻐﻠﻖ ﻳﻤﻜﻦ ﺗﻜﺮﺍﺭﻩ ﺇﻟﻰ
ﺃﺟﻞﻏﻴﺮ ﻣﺴﻤﻰ ﺃﻭ ﺗﺮﻛﻪ ﺗﻤﺎﻣﺎً .ﻳﺴﻤﺢ ﻫﺬﺍ ﺍﻻﻣﺘﺪﺍﺩ ﺑﺒﻨﺎء ﺍﻟﻘﻮﺍﺉﻢ ﺑﻘﺎﻋﺪﺓ ﻭﺍﺣﺪﺓ ،ﺑﺪﻻ ًﻣﻦ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻌﻮﺩﻳﺔ ﻭﻗﺎﻋﺪﺗﻴﻦ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﻭﺻﻒ ﻗﻮﺍﺉﻢ ﺍﻟﻤﻌﺮﻓﺎﺕ ﺍﻟﻤﻔﺼﻮﻟﺔ
ﺑﻔﻮﺍﺻﻞﺑﺎﻟﻘﺎﻋﺪﺓ ﺍﻟﺘﺎﻟﻴﺔ:
BNF:
<<> →>exprﻧﺺ> expr< +
| ><ﻧﺺ> expr< -
| >ﺍﻟﻤﺼﻄﻠﺢ<
>ﻧﺺ<→ >ﺍﻟﻤﺼﻄﻠﺢ< * >ﺍﻟﻌﺎﻣﻞ<
| >ﺍﻟﻤﺼﻄﻠﺢ< > /ﺍﻟﻌﺎﻣﻞ<
| >ﻋﺎﻣﻞ<
>ﺍﻟﻌﺎﻣﻞ<→ ><exp< ** >factor
<>exp
<>) →>expﺇﻛﺴﺒﺮ<(
|ﺑﻄﺎﻗﺔ ﺗﻌﺮﻳﻒ
EBNF:
<> →>exprﺍﻟﻤﺼﻄﻠﺢ< })> (- | +ﻧﺺ<{ >
ﻧﺺ<→ >ﺍﻟﻌﺎﻣﻞ< })* | > (/ﺍﻟﻌﺎﻣﻞ<{ >ﺍﻟﻌﺎﻣﻞ
<→ ><>) →exp< }** >exp<{ >expﺇﻛﺴﺒﺮ<
(
|ﺑﻄﺎﻗﺔ ﺗﻌﺮﻳﻒ
ﻗﺎﻋﺪﺓBNF
ﻳﺤﺪﺩﺑﻮﺿﻮﺡ -ﻓﻲ ﺍﻟﻮﺍﻗﻊ ﻳﻔﺮﺽ -ﺍﻟﻌﺎﻣﻞ +ﺍﻟﺬﻱ ﻳﺠﺐ ﺗﺮﻛﻪ ﺗﺮﺍﺑﻄﻴﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﺇﺻﺪﺍﺭ
، EBNF
ﻻﻳﻌﻨﻲ ﺍﺗﺠﺎﻩ ﺍﻟﺘﺠﻤﻊ .ﻳﺘﻢ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻓﻲ ﻣﺤﻠﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻋﻠﻰ ﺃﺳﺎﺱ
ﻗﻮﺍﻋﺪ EBNFﻟﻠﺘﻌﺒﻴﺮﺍﺕ ﻣﻦ ﺧﻼﻝ ﺗﺼﻤﻴﻢ ﻋﻤﻠﻴﺔ ﺗﺤﻠﻴﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻟﻔﺮﺽ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﺼﺤﻴﺢ.
ﺗﻤﺖﻣﻨﺎﻗﺸﺔ ﻫﺬﺍ ﺑﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺍﻟﻔﺼﻞ .4
ﺗﺴﻤﺢﺑﻌﺾ ﺇﺻﺪﺍﺭﺍﺕ EBNFﺑﺈﺭﻓﺎﻕ ﺧﻂ ﺭﻗﻤﻲ ﻣﺮﺗﻔﻊ ﺑﺎﻟﻘﻮﺱ ﺍﻷﻳﻤﻦ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺣﺪ
ﺃﻋﻠﻰﻟﻌﺪﺩ ﺍﻟﻤﺮﺍﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻓﻴﻬﺎ ﺗﻜﺮﺍﺭ ﺍﻟﺠﺰء ﺍﻟﻤﺮﻓﻖ .ﺃﻳﻀﺎً ،ﺗﺴﺘﺨﺪﻡ ﺑﻌﺾ ﺍﻹﺻﺪﺍﺭﺍﺕ
ﻋﻼﻣﺔﺍﻟﺠﻤﻊ ) (+ﺍﻟﻌﻠﻮﻳﺔ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺗﻜﺮﺍﺭ ﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ،
>ﻣﺠﻤﻊ<→ﻳﺒﺪﺃ>{<stmt< }>stmtﻧﻬﺎﻳﺔ
ﻭ
>ﻣﺠﻤﻊ<→ﻳﺒﺪﺃ}>{<+stmtﻧﻬﺎﻳﺔ
ﻣﺘﻜﺎﻓﺉﺔ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 132
ﻓﻲﺍﻟﺴﻨﻮﺍﺕ ﺍﻷﺧﻴﺮﺓ ،ﻇﻬﺮﺕ ﺑﻌﺾ ﺍﻻﺧﺘﻼﻓﺎﺕ ﻓﻲ BNFﻭ .EBNFﻣﻦ ﺑﻴﻦ ﻫﺆﻻء ﻣﺎ
ﻳﻠﻲ:
• ﺑﺪﻻ ًﻣﻦ ﺍﻟﺴﻬﻢ ،ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻧﻘﻄﺘﻴﻦ ﻭﻳﺘﻢ ﻭﺿﻊ RHSﻋﻠﻰ ﺍﻟﺴﻄﺮ ﺍﻟﺘﺎﻟﻲ.
• ﺑﺪﻻ ًﻣﻦ ﺷﺮﻳﻂ ﻋﻤﻮﺩﻱ ﻟﻔﺼﻞ RHSsﺍﻟﺒﺪﻳﻠﺔ ،ﻳﺘﻢ ﻭﺿﻌﻬﺎ ﺑﺒﺴﺎﻃﺔ ﻓﻲ ﺧﻄﻮﻁ ﻣﻨﻔﺼﻠﺔ.
• ﺑﺪﻻ ًﻣﻦ ﺍﻷﻗﻮﺍﺱ ﺍﻟﻤﺮﺑﻌﺔ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺷﻲء ﻣﺎ ﺍﺧﺘﻴﺎﺭﻱ ،ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺧﻴﺎﺭ ﺍﻻﺷﺘﺮﺍﻙ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ،
ﻣﻌﻠﻦﺍﻟﻤﻨﺸﺊ→ﻗﺎﺉﻤﺔ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺍﻟﺮﺳﻤﻴﺔ) SimpleNameﻳﺨﺘﺎﺭ ،ﻳﻘﺮﺭ(
• ﺑﺪﻻ ًﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ | ﺭﻣﺰ ﻓﻲ ﻗﺎﺉﻤﺔ ﺍﻟﻌﻨﺎﺻﺮ ﺑﻴﻦ ﻗﻮﺳﻴﻦ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺍﺧﺘﻴﺎﺭ ،ﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻜﻠﻤﺎﺕ "ﻭﺍﺣﺪ ﻣﻦ" .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ،
ﻣﻬﻤﺔﺗﺸﻐﻴﻞ→ﻭﺍﺣﺪ ﻣﻦ = * = = - = + = ٪= /
>> = << = & = ^ = | =
3.3.3ﺍﻟﻘﻮﺍﻋﺪ ﻭﺍﻟﻤﻌﺮﻓﺎﺕ
ﻓﻲﻭﻗﺖ ﺳﺎﺑﻖ ﻣﻦ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ،ﺍﻗﺘﺮﺣﻨﺎ ﺃﻥ ﻫﻨﺎﻙ ﻋﻼﻗﺔ ﻭﺛﻴﻘﺔ ﺑﻴﻦ ﺃﺟﻬﺰﺓ ﺍﻟﺘﻮﻟﻴﺪ ﻭﺍﻟﺘﻌﺮﻑ
ﻋﻠﻰﻟﻐﺔ ﻣﻌﻴﻨﺔ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﺑﺎﻟﻨﻈﺮ ﺇﻟﻰ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ ،ﻳﻤﻜﻦ ﺇﻧﺸﺎء ﺃﺩﺍﺓ
ﺍﻟﺘﻌﺮﻑﻋﻠﻰ ﺍﻟﻠﻐﺔ ﺍﻟﺘﻲ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺑﻮﺍﺳﻄﺔ ﺍﻟﻘﻮﺍﻋﺪ ﺑﻄﺮﻳﻘﺔ ﺣﺴﺎﺑﻴﺔ .ﺗﻢ ﺗﻄﻮﻳﺮ ﻋﺪﺩ ﻣﻦ
ﺃﻧﻈﻤﺔﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﺘﻲ ﺗﺆﺩﻱ ﻫﺬﺍ ﺍﻟﺒﻨﺎء .ﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻷﻧﻈﻤﺔ ﺑﺎﻹﻧﺸﺎء ﺍﻟﺴﺮﻳﻊ ﻟﺠﺰء ﺗﺤﻠﻴﻞ ﺑﻨﺎء
ﺍﻟﺠﻤﻠﺔﻣﻦ ﻣﺘﺮﺟﻢ ﻟﻠﻐﺔ ﺟﺪﻳﺪﺓ ،ﻭﺑﺎﻟﺘﺎﻟﻲ ﻓﻬﻲ ﺫﺍﺕ ﻗﻴﻤﺔ ﻛﺒﻴﺮﺓ .ﻳﻄُﻠﻖ ﻋﻠﻰ ﺃﺣﺪ ﺃﻭﻝ ﻣﻮﻟﺪﺍﺕ
ﻣﺤﻠﻞﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺍﺳﻢ )3yaccﺟﻮﻧﺴﻮﻥ .(1975 ،ﻫﻨﺎﻙ ﺍﻵﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻫﺬﻩ ﺍﻷﻧﻈﻤﺔ ﺍﻟﻤﺘﺎﺣﺔ.
ﻳﺴﻤﺢﻟﻮﺻﻒ ﻗﻮﺍﻋﺪ ﻟﻐﺔ ﻣﻌﻴﻨﺔ ﺑﺸﻜﻞ ﻣﻼﺉﻢ ،ﻣﺜﻞ ﺗﻮﺍﻓﻖ ﺍﻟﻨﻮﻉ .ﻗﺒﻞ ﺃﻥ
ﻣﻼﺣﻈﺔﺗﺎﺭﻳﺨﻴﺔ ﺫ
ﻧﺤﺪﺩﺷﻜﻞ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺼﻔﺎﺕ ﺭﺳﻤﻴﺎً ،ﻳﺠﺐ ﺃﻥ ﻧﻮﺿﺢ ﻣﻔﻬﻮﻡ
ﺍﻟﺪﻻﻻﺕﺍﻟﺜﺎﺑﺘﺔ. ﺗﻢﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺴﻤﺎﺕ
ﻓﻲﻣﺠﻤﻮﻋﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ،
ﻭﻗﺪﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﺘﻘﺪﻳﻢ ﺃﻭﺻﺎﻑ
3.4.1ﺩﻻﻻﺕ ﺛﺎﺑﺘﺔ ﻛﺎﻣﻠﺔﻟﻠﻨﺤﻮ ﻭﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﻐﺎﺕ
ﻫﻨﺎﻙﺑﻌﺾ ﺧﺼﺎﺉﺺ ﺑﻨﻴﺔ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺘﻲ ﻳﺼﻌﺐ ﻭﺻﻔﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﺮﻣﺠﺔ) (Watt، 1979؛ ﻟﻘﺪ ﺗﻢ
، BNFﻭﺑﻌﻀﻬﺎ ﻣﺴﺘﺤﻴﻞ .ﻛﻤﺜﺎﻝ ﻋﻠﻰ ﻗﺎﻋﺪﺓ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺍﻟﺘﻲ ﻳﺼﻌﺐ ﺍﺳﺘﺨﺪﺍﻣﻬﺎﻛﺘﻌﺮﻳﻒ ﺭﺳﻤﻲ ﻟﻠﻐﺔ
ﺗﺤﺪﻳﺪﻫﺎﺑﺎﺳﺘﺨﺪﺍﻡ ، BNFﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﻗﻮﺍﻋﺪ ﺗﻮﺍﻓﻖ ﺍﻟﻨﻮﻉ .ﻓﻲ ، Java ﻳﻤﻜﻦﺇﺩﺧﺎﻟﻬﺎ ﻓﻲ ﻧﻈﺎﻡ ﺇﻧﺸﺎء ﻣﺘﺮﺟﻢ )
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻻ ﻳﻤﻜﻦ ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ ﺍﻟﻨﻘﻄﺔ ﺍﻟﻌﺎﺉﻤﺔ ﻟﻤﺘﻐﻴﺮ ﻧﻮﻉ ﻋﺪﺩ (Farrow، 1982؛ ﻭﻗﺪ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ
ﺻﺤﻴﺢ ،ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻌﻜﺲ ﻗﺎﻧﻮﻧﻲ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻛﺄﺳﺎﺱﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺤﺮﻳﺮ
ﺍﻟﻤﻮﺟﻬﺔﻧﺤﻮ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ )، 1981
ﻫﺬﺍﺍﻟﺘﻘﻴﻴﺪ ﻓﻲ ، BNFﺇﻻ ﺃﻧﻪ ﻳﺘﻄﻠﺐ ﺭﻣﻮﺯﺍً ﻭﻗﻮﺍﻋﺪ ﻏﻴﺮ ﻧﻬﺎﺉﻴﺔ ﺇﺿﺎﻓﻴﺔ .ﺇﺫﺍ
Teitelbaum and Reps؛ ، 1984
ﺗﻢﺗﺤﺪﻳﺪ ﺟﻤﻴﻊ ﻗﻮﺍﻋﺪ ﺍﻟﻜﺘﺎﺑﺔ ﻓﻲ Javaﻓﻲ ، BNFﻓﺴﺘﺼﺒﺢ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ
.(Fischer et al.ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺫﻟﻚ ،
ﺃﻛﺒﺮﻣﻦ ﺃﻥ ﺗﻜﻮﻥ ﻣﻔﻴﺪﺓ ،ﻷﻥ ﺣﺠﻢ ﺍﻟﻘﻮﺍﻋﺪ ﻳﺤﺪﺩ ﺣﺠﻢ ﻣﺤﻠﻞ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ.
ﺗﻢﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ
ﻟﻠﺨﺼﺎﺉﺺﻓﻲ ﺃﻧﻈﻤﺔ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻠﻐﺔ
ﺍﻟﻄﺒﻴﻌﻴﺔ).(Correa ، 1992
3.4.2ﻣﻔﺎﻫﻴﻢ ﺃﺳﺎﺳﻴﺔ
ﺍﻟﻘﻮﺍﻋﺪﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺴﻤﺎﺕ ﻫﻲ ﻗﻮﺍﻋﺪ ﻧﺤﻮﻳﺔ ﺧﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ ﺗﻤﺖ ﺇﺿﺎﻓﺔ ﺳﻤﺎﺕ ﺇﻟﻴﻬﺎ
ﻭﻭﻇﺎﺉﻒﺣﺴﺎﺏ ﺍﻟﺴﻤﺎﺕ ﻭﺍﻟﻮﻇﺎﺉﻒ ﺍﻷﺻﻠﻴﺔ.ﺻﻔﺎﺕ ،ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﺎﻟﺮﻣﻮﺯ ﺍﻟﻨﺤﻮﻳﺔ )ﺍﻟﺮﻣﻮﺯ
ﺍﻟﻄﺮﻓﻴﺔﻭﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ( ،ﺗﺸﺒﻪ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺑﻤﻌﻨﻰ ﺃﻧﻪ ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻟﻬﺎ ﻗﻴﻢ ﻣﺨﺼﺼﺔ ﻟﻬﺎ.
ﻭﻇﺎﺉﻒﺣﺴﺎﺏ ﺍﻟﺴﻤﺔ ،ﺗﺴﻤﻰ ﺃﺣﻴﺎﻧﺎً ﺍﻟﺪﻻﻟﻲ
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 134
ﻭﻇﺎﺉﻒﻣﺮﺗﺒﻄﺔ ﺑﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮ .ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﺘﺤﺪﻳﺪ ﻛﻴﻔﻴﺔ ﺣﺴﺎﺏ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ.ﻭﻇﺎﺉﻒ
ﺍﻟﻤﺴﻨﺪ ،ﺍﻟﺘﻲ ﺗﻨﺺ ﻋﻠﻰ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺪﻻﻟﻴﺔ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﻐﺔ ،ﺗﺮﺗﺒﻂ ﺑﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮ.
ﺳﺘﺼﺒﺢﻫﺬﻩ ﺍﻟﻤﻔﺎﻫﻴﻢ ﺃﻛﺜﺮ ﻭﺿﻮﺣﺎً ﺑﻌﺪ ﺃﻥ ﻧﺤﺪﺩ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺴﻤﺎﺕ ﺭﺳﻤﻴﺎً ﻭﻧﻘﺪﻡ
ﻣﺜﺎﻻً.
• ﺗﺮﺗﺒﻂ ﺑﻜﻞ ﻗﺎﻋﺪﺓ ﻧﺤﻮﻳﺔ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺪﻻﻟﻴﺔ ﻭﻣﺠﻤﻮﻋﺔ ﻓﺎﺭﻏﺔ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ
ﺍﻷﺻﻠﻴﺔﻋﻠﻰ ﺳﻤﺎﺕ ﺍﻟﺮﻣﻮﺯ ﻓﻲ ﺍﻟﻘﺎﻋﺪﺓ ﺍﻟﻨﺤﻮﻳﺔ .ﻟﻘﺎﻋﺪﺓ 0Xﺱ1XﺝXﻥ ،ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺮﻛﺒﺔ
ﻟـ0Xﻳﺘﻢ ﺣﺴﺎﺑﻬﺎ ﺑﻮﻇﺎﺉﻒ ﺩﻻﻟﻴﺔ ﻣﻦ ﺍﻟﻨﻤﻮﺫﺝ = (0S )Xﻭ )ﺃ )ﺱ، (1ﺝ ،ﻓﺄﺱﻥ(( .ﻟﺬﺍ ﻓﺈﻥ
ﻗﻴﻤﺔﺍﻟﺴﻤﺔ ﺍﻟﻤﺮﻛﺒﺔ ﻓﻲ ﻋﻘﺪﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺸﺠﺮﻱ ﺗﻌﺘﻤﺪ ﻓﻘﻂ ﻋﻠﻰ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ
ﺍﻟﻤﻮﺟﻮﺩﺓﻓﻲ ﺍﻟﻌﻘﺪ ﺍﻟﻔﺮﻋﻴﺔ ﻟﺘﻠﻚ ﺍﻟﻌﻘﺪﺓ .ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﻮﺭﻭﺛﺔ ﻟﻠﺮﻣﻮﺯ Xﻱ...1 ،ﻱ...ﻥ )ﻓﻲ
ﺍﻟﻘﺎﻋﺪﺓﺃﻋﻼﻩ( ،ﻳﺘﻢ ﺣﺴﺎﺑﻬﺎ ﺑﻮﻇﻴﻔﺔ ﺩﻻﻟﻴﺔ ﻣﻦ ﺍﻟﻨﻤﻮﺫﺝ I )Xﻱ( = ﻭ )ﺃ )ﺱ، (0ﺝ ،ﻓﺄﺱﻥ((.
ﻟﺬﺍﻓﺈﻥ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ ﺍﻟﻤﻮﺭﻭﺛﺔ ﻓﻲ ﻋﻘﺪﺓ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻟﻠﻌﻘﺪﺓ
ﺍﻷﺻﻠﻴﺔﻟﺘﻠﻚ ﺍﻟﻌﻘﺪﺓ ﻭﺗﻠﻚ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻌﻘﺪ ﺍﻟﺸﻘﻴﻘﺔ .ﻻﺣﻆ ﺃﻧﻪ ﻟﺘﺠﻨﺐ ﺍﻻﺳﺘﺪﺍﺭﺓ ،ﻏﺎﻟﺒﺎً
ﻣﺎﺗﻘﺘﺼﺮ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﻮﺭﻭﺛﺔ ﻋﻠﻰ ﻭﻇﺎﺉﻒ ﺍﻟﻨﻤﻮﺫﺝ I )Xﻱ( = ﻭ )ﺃ )ﺱ، (0ﺝ ،ﻓﺄﺱ)ﻱ.(((1-
ﻳﻤﻨﻊﻫﺬﺍ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺴﻤﺔ ﺍﻟﻤﻮﺭﻭﺛﺔ ﻣﻦ ﺍﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﻧﻔﺴﻬﺎ ﺃﻭ ﻋﻠﻰ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ
ﺇﻟﻰﺍﻟﻴﻤﻴﻦ ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ.
• ﻭﻇﻴﻔﺔ ﺍﻟﻤﺴﻨﺪ ﻟﻬﺎ ﺷﻜﻞ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻤﻨﻄﻘﻲ ﻋﻠﻰ ﺍﺗﺤﺎﺩ ﻣﺠﻤﻮﻋﺔ ﺍﻟﺴﻤﺎﺕ }، (0A )Xﺝ ،ﻓﺄﺱ
ﻥ({ ﻭﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻟﺤﺮﻓﻴﺔ .ﺍﻻﺷﺘﻘﺎﻗﺎﺕ ﺍﻟﻮﺣﻴﺪﺓ ﺍﻟﻤﺴﻤﻮﺡ ﺑﻬﺎ ﻣﻊ ﻗﻮﺍﻋﺪ
ﺍﻟﺴﻤﺔﻫﻲ ﺗﻠﻚ ﺍﻻﺷﺘﻘﺎﻗﺎﺕ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﻓﻴﻬﺎ ﻛﻞ ﻣﺴﻨﺪ ﻣﺮﺗﺒﻂ ﺑﻜﻞ ﻏﻴﺮ ﻧﻬﺎﺉﻲ ﺻﺤﻴﺤﺎً.
ﺗﺸﻴﺮﻗﻴﻤﺔ ﺩﺍﻟﺔ ﺍﻟﻤﺴﻨﺪ ﺍﻟﺨﺎﻃﺉﺔ ﺇﻟﻰ ﺍﻧﺘﻬﺎﻙ ﻗﻮﺍﻋﺪ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺃﻭ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﻐﺔ.
ﺷﺠﺮﺓﺍﻟﺘﺤﻠﻴﻞ ﻟﻘﻮﺍﻋﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺠﺪﻭﻟﻴﺔ ﻫﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺑﻨﺎء ًﻋﻠﻰ ﻗﻮﺍﻋﺪ BNF
ﺍﻷﺳﺎﺳﻴﺔﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ،ﻣﻊ ﺍﺣﺘﻤﺎﻝ ﺇﺭﻓﺎﻕ ﻣﺠﻤﻮﻋﺔ ﻓﺎﺭﻏﺔ ﻣﻦ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺑﻜﻞ ﻋﻘﺪﺓ .ﺇﺫﺍ ﺗﻢ
ﺣﺴﺎﺏﺟﻤﻴﻊ ﻗﻴﻢ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺠﺪﻭﻟﻴﺔ ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ،ﻳﻘُﺎﻝ ﺃﻥ ﺍﻟﺸﺠﺮﺓ ﻫﻲ ﻛﺬﻟﻚﻳﻌﺰﻯ
ﺑﺎﻟﻜﺎﻣﻞ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻣﻦ ﺍﻟﻨﺎﺣﻴﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻻ ﻳﺘﻢ ﺫﻟﻚ ﺩﺍﺉﻤﺎً ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ،ﻓﻤﻦ
ﺍﻟﻤﻼﺉﻢﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻋﻠﻰ ﺃﻧﻬﺎ ﻣﺤﺴﻮﺑﺔ ﺑﻌﺪ ﺃﻥ ﺗﻢ ﺇﻧﺸﺎء ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻜﺎﻣﻠﺔ
ﻏﻴﺮﺍﻟﻤﻨﺴﻮﺑﺔ ﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﺘﺮﺟﻢ.
3.4.4ﺍﻟﺴﻤﺎﺕ ﺍﻟﺠﻮﻫﺮﻳﺔ
ﺍﻟﺴﻤﺎﺕﺍﻟﺠﻮﻫﺮﻳﺔﻫﻲ ﺳﻤﺎﺕ ﻣﺮﻛﺒﺔ ﻟﻠﻌﻘﺪ ﺍﻟﻮﺭﻗﻴﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻤﻬﺎ ﺧﺎﺭﺝ ﺷﺠﺮﺓ
ﺍﻟﺘﺤﻠﻴﻞ.ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﻤﻜﻦ ﺃﻥ ﻳﺄﺗﻲ ﻧﻮﻉ ﻣﺜﻴﻞ ﺍﻟﻤﺘﻐﻴﺮ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﻣﺎ ﻣﻦ ﺟﺪﻭﻝ
ﺍﻟﺮﻣﻮﺯ ،ﻭﺍﻟﺬﻱ ﻳﺴﺘﺨﺪﻡ ﻟﺘﺨﺰﻳﻦ ﺃﺳﻤﺎء ﺍﻟﻤﺘﻐﻴﺮﺍﺕ
135 3.4ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺴﻤﺔ
ﻭﺃﻧﻮﺍﻋﻬﺎ.ﺗﻢ ﺗﻌﻴﻴﻦ ﻣﺤﺘﻮﻳﺎﺕ ﺟﺪﻭﻝ ﺍﻟﺮﻣﻮﺯ ﺑﻨﺎء ًﻋﻠﻰ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺼﺮﻳﺢ ﺍﻟﺴﺎﺑﻘﺔ .ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ،
ﺑﺎﻓﺘﺮﺍﺽﺃﻧﻪ ﻗﺪ ﺗﻢ ﺇﻧﺸﺎء ﺷﺠﺮﺓ ﺗﺤﻠﻴﻞ ﻏﻴﺮ ﻣﻨﺴﻮﺑﺔ ﻭﺃﻥ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻣﻄﻠﻮﺑﺔ ،ﻓﺈﻥ ﺍﻟﺴﻤﺎﺕ
ﺍﻟﻮﺣﻴﺪﺓﺫﺍﺕ ﺍﻟﻘﻴﻢ ﻫﻲ ﺍﻟﺴﻤﺎﺕ ﺍﻟﺠﻮﻫﺮﻳﺔ ﻟﻠﻌﻘﺪ ﺍﻟﻄﺮﻓﻴﺔ .ﺑﺎﻟﻨﻈﺮ ﺇﻟﻰ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻟﺠﻮﻫﺮﻳﺔ
ﻓﻲﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺪﻻﻟﻴﺔ ﻟﺤﺴﺎﺏ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺘﺒﻘﻴﺔ.
ﻓﻲﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ،ﺗﻨﺺ ﺍﻟﻘﺎﻋﺪﺓ ﺍﻷﺻﻠﻴﺔ ﻋﻠﻰ ﺃﻥ ﺳﻤﺔ ﺳﻠﺴﻠﺔ ﺍﻻﺳﻢ ﺍﻟﺨﺎﺻﺔ ﺑـ >ﺍﺳﻢ_
ﺍﻟﻤﺠﻤﻮﻋﺔ< ﻏﻴﺮ ﺍﻟﻄﺮﻓﻴﺔ ﻓﻲ ﺭﺃﺱ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ ﻳﺠﺐ ﺃﻥ ﺗﺘﻄﺎﺑﻖ ﻣﻊ ﺳﻤﺔ ﺳﻠﺴﻠﺔ ﺍﻻﺳﻢ
ﺍﻟﺨﺎﺻﺔﺑـ >ﺍﺳﻢ_ﺍﻟﻤﺠﻤﻮﻋﺔ< ﺍﻟﺘﻲ ﺗﻠﻲ ﻧﻬﺎﻳﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻔﺮﻋﻲ.
ﺑﻌﺪﺫﻟﻚ ،ﻧﻌﺘﺒﺮ ﻣﺜﺎﻻً ﺃﻛﺒﺮ ﻟﻘﻮﺍﻋﺪ ﺍﻟﺴﻤﺔ .ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﻳﻮﺿﺢ ﺍﻟﻤﺜﺎﻝ ﻛﻴﻒ ﻳﻤﻜﻦ
ﺍﺳﺘﺨﺪﺍﻡﻗﻮﺍﻋﺪ ﺍﻟﺴﻤﺔ ﻟﻠﺘﺤﻘﻖ ﻣﻦ ﻗﻮﺍﻋﺪ ﺍﻟﻨﻮﻉ ﺍﻟﺨﺎﺻﺔ ﺑﺒﻴﺎﻥ ﺍﻹﺳﻨﺎﺩ ﺍﻟﺒﺴﻴﻂ .ﺇﻥ ﺑﻨﺎء
ﺍﻟﺠﻤﻠﺔﻭﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ ﻟﺒﻴﺎﻥ ﺍﻟﻤﻬﻤﺔ ﻫﺬﺍ ﻫﻲ ﻛﻤﺎ ﻳﻠﻲ :ﺃﺳﻤﺎء ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻮﺣﻴﺪﺓ ﻫﻲﺃ ،ﺏ ،
ﻭﺝ.ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ ﻣﻦ ﺍﻟﺘﺨﺼﻴﺼﺎﺕ ﺇﻣﺎ ﻣﺘﻐﻴﺮﺍً ﺃﻭ ﺗﻌﺒﻴﺮﺍً ﻓﻲ ﺷﻜﻞ ﻣﺘﻐﻴﺮ
ﻣﻀﺎﻑﺇﻟﻰ ﻣﺘﻐﻴﺮ ﺁﺧﺮ .ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺃﺣﺪ ﻧﻮﻋﻴﻦ int :ﺃﻭ .realﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ
ﻫﻨﺎﻙﻣﺘﻐﻴﺮﻳﻦ ﻋﻠﻰ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ ﻣﻦ ﺍﻟﻤﻬﻤﺔ ،ﻓﻼ ﺩﺍﻋﻲ ﻷﻥ ﻳﻜﻮﻧﺎ ﻣﻦ ﻧﻔﺲ ﺍﻟﻨﻮﻉ .ﻧﻮﻉ
ﺍﻟﺘﻌﺒﻴﺮﻋﻨﺪﻣﺎ ﺗﺨﺘﻠﻒ ﺃﻧﻮﺍﻉ ﺍﻟﻤﻌﺎﻣﻞ ﻫﻮ ﺣﻘﻴﻘﻲ ﺩﺍﺉﻤﺎً .ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﻣﺘﻄﺎﺑﻘﺔ ،ﻳﻜﻮﻥ ﻧﻮﻉ
ﺍﻟﺘﻌﺒﻴﺮﻫﻮ ﻧﻮﻉ ﺍﻟﻤﻌﺎﻣﻼﺕ .ﻳﺠﺐ ﺃﻥ ﻳﺘﻄﺎﺑﻖ ﻧﻮﻉ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺍﻟﻤﻬﻤﺔ ﻣﻊ ﻧﻮﻉ ﺍﻟﺠﺎﻧﺐ
ﺍﻷﻳﻤﻦ.ﻟﺬﻟﻚ ﻳﻤﻜﻦ ﺧﻠﻂ ﺃﻧﻮﺍﻉ ﺍﻟﻤﻌﺎﻣﻼﺕ ﻓﻲ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ ،ﻭﻟﻜﻦ ﺍﻟﺘﺨﺼﻴﺺ ﻳﻜﻮﻥ
ﺻﺎﻟﺤﺎًﻓﻘﻂ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻬﺪﻑ ﻭﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺎﺗﺠﺔ ﻋﻦ ﺗﻘﻴﻴﻢ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ ﻣﻦ ﻧﻔﺲ ﺍﻟﻨﻮﻉ .ﺗﺤﺪﺩ
ﻗﻮﺍﻋﺪﺍﻟﺴﻤﺔ ﺍﻟﻨﺤﻮﻳﺔ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺪﻻﻟﻴﺔ ﺍﻟﺜﺎﺑﺘﺔ.
ﻳﺘﻢﻭﺻﻒ ﺳﻤﺎﺕ ﺍﻟﻘﻮﺍﻋﺪ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ ﻓﻲ ﻣﺜﺎﻝ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﺴﻤﺎﺕ ﻓﻲ
ﺍﻟﻔﻘﺮﺍﺕﺍﻟﺘﺎﻟﻴﺔ:
• ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ—ﺳﻤﻴﺔ ﻣﺮﻛﺒﺔ ﻣﺮﺗﺒﻄﺔ ﺑﺎﻟﻘﻴﻢ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻴﺔ > <varﻭ > .<exprﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻣﻪﻟﺘﺨﺰﻳﻦ ﺍﻟﻨﻮﻉ ﺍﻟﻔﻌﻠﻲ int ،ﺃﻭ ، realﻟﻤﺘﻐﻴﺮ ﺃﻭ ﺗﻌﺒﻴﺮ .ﻓﻲ ﺣﺎﻟﺔ ﺍﻟﻤﺘﻐﻴﺮ ،ﻳﻜﻮﻥ
ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ ﺟﻮﻫﺮﻳﺎً .ﻓﻲ ﺣﺎﻟﺔ ﺍﻟﺘﻌﺒﻴﺮ ،ﻳﺘﻢ ﺗﺤﺪﻳﺪﻩ ﻣﻦ ﺍﻷﻧﻮﺍﻉ ﺍﻟﻔﻌﻠﻴﺔ ﻟﻠﻌﻘﺪﺓ ﺍﻟﻔﺮﻋﻴﺔ ﺃﻭ
ﺍﻟﻌﻘﺪﺍﻟﻔﺮﻋﻴﺔ ﻟـ >.expr< nonterminal
• ﺍﻟﻨﻮﻉ_ ﺍﻟﻤﺘﻮﻗﻊ—ﺳﻤﺔ ﻣﻮﺭﻭﺛﺔ ﻣﺮﺗﺒﻄﺔ ﺑـ > <exprﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻲ .ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺘﺨﺰﻳﻦ
ﺍﻟﻨﻮﻉ ،ﺳﻮﺍء ﺃﻛﺎﻥ ﺻﺤﻴﺤﺎً ﺃﻡ ﺣﻘﻴﻘﻴﺎً ،ﺍﻟﻤﺘﻮﻗﻊ ﻟﻠﺘﻌﺒﻴﺮ ،ﻛﻤﺎ ﻫﻮ ﻣﺤﺪﺩ ﺑﻮﺍﺳﻄﺔ ﻧﻮﻉ
ﺍﻟﻤﺘﻐﻴﺮﻋﻠﻰ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺑﻴﺎﻥ ﺍﻹﺳﻨﺎﺩ.
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.6
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻝ
ﺃ= ﺃ +ﺏ
<>expr
ﺗﻈُﻬﺮﺍﻟﺸﺠﺮﺓ ﻓﻲ ﺍﻟﺸﻜﻞ 3.8ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻨﻬﺎﺉﻴﺔ ﻋﻠﻰ ﺍﻟﻌﻘﺪ .ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ،ﺃﻳﺘﻢ
ﺗﻌﺮﻳﻔﻪﻋﻠﻰ ﺃﻧﻪ ﺣﻘﻴﻘﻲ ﻭﺏﻳﺘﻢ ﺗﻌﺮﻳﻔﻪ ﻋﻠﻰ ﺃﻧﻪ ﻋﺪﺩ ﺻﺤﻴﺢ.
ﻳﻌﺪﺗﺤﺪﻳﺪ ﺃﻣﺮ ﺗﻘﻴﻴﻢ ﺍﻟﺴﻤﺔ ﻟﻠﺤﺎﻟﺔ ﺍﻟﻌﺎﻣﺔ ﻟﻘﻮﺍﻋﺪ ﺍﻟﺴﻤﺔ ﻣﺸﻜﻠﺔ ﻣﻌﻘﺪﺓ ﺗﺘﻄﻠﺐ ﺇﻧﺸﺎء
ﻣﺨﻄﻂﺗﺒﻌﻴﺔ ﻹﻇﻬﺎﺭ ﺟﻤﻴﻊ ﺗﺒﻌﻴﺎﺕ ﺍﻟﺴﻤﺔ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 138
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.7
ﺗﺪﻓﻖﺍﻟﺼﻔﺎﺕ ﻓﻲ
ﺍﻟﺸﺠﺮﺓ
ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ
ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ
>ﻣﺨﺘﻠﻒ< ][3 >ﻣﺨﺘﻠﻒ< ][2 >ﻓﺎﺭ<
>ﺗﻌﻴﻴﻦ< ﺍﻟﺸﻜﻞ3.8
ﻳﻌﺰﻯﺑﺎﻟﻜﺎﻣﻞ
ﺗﺤﻠﻴﻞﺷﺠﺮﺓ
= ﺍﻟﻨﻮﻉ ﺍﻟﻔﻌﻠﻲ [>var< ]3 = ﺍﻟﻨﻮﻉ ﺍﻟﻔﻌﻠﻲ [>var< ]2 >ﻓﺎﺭ< ﺍﻟﻨﻮﻉﺍﻟﻔﻌﻠﻲ =
int_type ﺍﻟﻨﻮﻉﺍﻟﺤﻘﻴﻘﻲ ﺍﻟﻨﻮﻉﺍﻟﺤﻘﻴﻘﻲ
3.4.7ﺍﻟﺘﻘﻴﻴﻢ
ﻳﻌﺪﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺪﻻﻟﻴﺔ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﻐﺔ ﺟﺰءﺍً ﺃﺳﺎﺳﻴﺎً ﻣﻦ ﺟﻤﻴﻊ ﺍﻟﻤﺠﻤﻌﻴﻦ .ﺣﺘﻰ ﻟﻮ ﻟﻢ
ﻳﺴﻤﻊﻛﺎﺗﺐ ﺍﻟﻤﺘﺮﺟﻢ ﻋﻦ ﻗﻮﺍﻋﺪ ﺍﻟﺴﻤﺔ ﻣﻦ ﻗﺒﻞ ،ﻓﺴﻴﺤﺘﺎﺝ ﺇﻟﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻓﻜﺎﺭﻫﻢ ﺍﻷﺳﺎﺳﻴﺔ
ﻟﺘﺼﻤﻴﻢﺍﺧﺘﺒﺎﺭﺍﺕ ﻗﻮﺍﻋﺪ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﻤﺘﺮﺟﻢ.
ﻫﻨﺎﻙﻋﺪﺓ ﺃﺳﺒﺎﺏ ﻣﺨﺘﻠﻔﺔ ﻭﺭﺍء ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﻣﻨﻬﺠﻴﺔ ﻭﺗﺪﻭﻳﻦ ﻟﻮﺻﻒ ﺍﻟﺪﻻﻻﺕ .ﻣﻦ
ﺍﻟﻮﺍﺿﺢﺃﻥ ﺍﻟﻤﺒﺮﻣﺠﻴﻦ ﻳﺤﺘﺎﺟﻮﻥ ﺇﻟﻰ ﻣﻌﺮﻓﺔ ﺑﺎﻟﻀﺒﻂ ﻣﺎ ﺗﻔﻌﻠﻪ ﻋﺒﺎﺭﺍﺕ ﺍﻟﻠﻐﺔ ﻗﺒﻞ ﺃﻥ ﻳﺘﻤﻜﻨﻮﺍ
ﻣﻦﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺑﻔﻌﺎﻟﻴﺔ ﻓﻲ ﺑﺮﺍﻣﺠﻬﻢ .ﻳﺠﺐ ﺃﻥ ﻳﻌﺮﻑ ﻣﺆﻟﻔﻮ ﺍﻟﻤﺘﺮﺟﻤﻴﻦ ﺑﺎﻟﻀﺒﻂ ﻣﺎ ﺗﻌﻨﻴﻪ
ﺗﺮﺍﻛﻴﺐﺍﻟﻠﻐﺔ ﻟﺘﺼﻤﻴﻢ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﻔﻴﺬ ﻟﻬﻢ ﺑﺸﻜﻞ ﺻﺤﻴﺢ .ﺇﺫﺍ ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﻣﻮﺍﺻﻔﺎﺕ ﺩﻻﻻﺕ
ﺩﻗﻴﻘﺔﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ،ﻓﻤﻦ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻥ ﻳﺘﻢ ﺇﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﻬﺬﻩ ﺍﻟﻠﻐﺔ ﺩﻭﻥ
ﺍﺧﺘﺒﺎﺭ.ﺃﻳﻀﺎً ،ﻳﻤﻜﻦ ﺇﻇﻬﺎﺭ ﺍﻟﻤﺘﺮﺟﻤﻴﻦ ﻹﻧﺘﺎﺝ ﺑﺮﺍﻣﺞ ﺗﻈﻬﺮ ﺑﺎﻟﻀﺒﻂ ﺍﻟﺴﻠﻮﻙ ﺍﻟﻮﺍﺭﺩ ﻓﻲ ﺗﻌﺮﻳﻒ
ﺍﻟﻠﻐﺔ ؛ﺃﻱ ﺃﻧﻪ ﻳﻤﻜﻦ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺘﻬﺎ .ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻮﺍﺻﻔﺎﺕ ﺍﻟﻜﺎﻣﻠﺔ ﻟﺒﻨﺎء ﺍﻟﺠﻤﻠﺔ
ﻭﺩﻻﻻﺕﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺑﻮﺍﺳﻄﺔ ﺃﺩﺍﺓ ﻹﻧﺸﺎء ﻣﺘﺮﺟﻢ ﻟﻠﻐﺔ ﺗﻠﻘﺎﺉﻴﺎً .ﺃﺧﻴﺮﺍً،
ﻳﺤﺪﺩﻣﻄﻮﺭﻭ ﺍﻟﺒﺮﺍﻣﺞ ﻭﻣﺼﻤﻤﻲ ﺍﻟﻤﺘﺮﺟﻢ ﻋﺎﺩﺓ ًﺩﻻﻻﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻣﻦ ﺧﻼﻝ ﻗﺮﺍءﺓ
ﺍﻟﺘﻔﺴﻴﺮﺍﺕﺍﻹﻧﺠﻠﻴﺰﻳﺔ ﻓﻲ ﻛﺘﻴﺒﺎﺕ ﺍﻟﻠﻐﺔ .ﻧﻈﺮﺍً ﻷﻥ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﺘﻔﺴﻴﺮﺍﺕ ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻜﻮﻥ ﻏﻴﺮ
ﺩﻗﻴﻘﺔﻭﻏﻴﺮ ﻛﺎﻣﻠﺔ ،ﻓﻤﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ﻏﻴﺮ ﻣﺮﺽ .ﻧﻈﺮﺍً ﻟﻌﺪﻡ ﻭﺟﻮﺩ ﻣﻮﺍﺻﻔﺎﺕ
ﺩﻻﻻﺕﻛﺎﻣﻠﺔ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻧﺎﺩﺭﺍً ﻣﺎ ﻳﺘﻢ ﺇﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺩﻭﻥ ﺍﺧﺘﺒﺎﺭ ،ﻭﻻ ﻳﺘﻢ ﺇﻧﺸﺎء
ﺍﻟﻤﺠﻤﻌﻴﻦﺍﻟﺘﺠﺎﺭﻳﻴﻦ ﺗﻠﻘﺎﺉﻴﺎً ﻣﻦ ﺃﻭﺻﺎﻑ ﺍﻟﻠﻐﺔ.
.ﻭﻫﻲﻟﻐﺔ ﻭﻇﻴﻔﻴﺔ ﻣﻮﺻﻮﻓﺔ ﻓﻲ ﺍﻟﻔﺼﻞ ، 15ﻫﻲ ﻭﺍﺣﺪﺓ ﻣﻦ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻘﻠﻴﻠﺔ ﺍﻟﺘﻲ
ﻳﺘﻀﻤﻦﺗﻌﺮﻳﻔﻬﺎ ﻭﺻﻔﺎً ﻟﻐﻮﻳﺎً ﺭﺳﻤﻴﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﻴﺴﺖ ﻭﺍﺣﺪﺓ
ﻣﻮﺻﻮﻓﺔﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ،ﺣﻴﺚ ﻳﺮﻛﺰ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻋﻠﻰ ﺍﻷﺳﺎﻟﻴﺐ ﺍﻟﻤﻨﺎﺳﺒﺔ ﻟﻠﻐﺎﺕ ﺍﻷﻣﺮ ،
Scheme
3.5.1ﺩﻻﻻﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ
ﺍﻟﻔﻜﺮﺓﻭﺭﺍءﺩﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻞﻫﻮ ﻭﺻﻒ ﻣﻌﻨﻰ ﺍﻟﺒﻴﺎﻥ ﺃﻭ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﺧﻼﻝ ﺗﺤﺪﻳﺪ ﺗﺄﺛﻴﺮﺍﺕ
ﺗﺸﻐﻴﻠﻪﻋﻠﻰ ﺍﻟﺠﻬﺎﺯ .ﻳﺘﻢ ﻋﺮﺽ ﺍﻟﺘﺄﺛﻴﺮﺍﺕ ﻋﻠﻰ ﺍﻟﺠﻬﺎﺯ ﻛﺘﺴﻠﺴﻞ ﺍﻟﺘﻐﻴﻴﺮﺍﺕ ﻓﻲ
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 140
ﺍﻟﺤﺎﻟﺔ ،ﺣﻴﺚ ﺗﻜﻮﻥ ﺣﺎﻟﺔ ﺍﻟﺠﻬﺎﺯ ﻫﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻘﻴﻢ ﻓﻲ ﺗﺨﺰﻳﻨﻬﺎ .ﺇﺫﻥ ،ﻳﺘﻢ ﺇﻋﻄﺎء ﻭﺻﻒ
ﺩﻻﻻﺕﺗﺸﻐﻴﻠﻴﺔ ﻭﺍﺿﺢ ﻣﻦ ﺧﻼﻝ ﺗﻨﻔﻴﺬ ﻧﺴﺨﺔ ﻣﺠﻤﻌﺔ ﻣﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺟﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ .ﻗﺎﻡ
ﻣﻌﻈﻢﺍﻟﻤﺒﺮﻣﺠﻴﻦ ،ﻓﻲ ﻣﻨﺎﺳﺒﺔ ﻭﺍﺣﺪﺓ ﻋﻠﻰ ﺍﻷﻗﻞ ،ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺍﺧﺘﺒﺎﺭ ﺻﻐﻴﺮ ﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ
ﺑﻌﺾﺗﻜﻮﻳﻨﺎﺕ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ،ﻏﺎﻟﺒﺎً ﺃﺛﻨﺎء ﺗﻌﻠﻢ ﺍﻟﻠﻐﺔ .ﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ ،ﻣﺎ ﻳﻔﻌﻠﻪ ﻣﺜﻞ ﻫﺬﺍ
ﺍﻟﻤﺒﺮﻣﺞﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ ﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺍﻟﺒﻨﺎء.
3.5.1.1ﺍﻟﻌﻤﻠﻴﺔ ﺍﻷﺳﺎﺳﻴﺔ
ﺗﺘﻤﺜﻞﺍﻟﺨﻄﻮﺓ ﺍﻷﻭﻟﻰ ﻓﻲ ﺇﻧﺸﺎء ﻭﺻﻒ ﺩﻻﻻﺕ ﺗﺸﻐﻴﻠﻴﺔ ﻟﻠﻐﺔ ﻓﻲ ﺗﺼﻤﻴﻢ ﻟﻐﺔ ﻭﺳﻴﻄﺔ
ﻣﻨﺎﺳﺒﺔ ،ﺣﻴﺚ ﺗﻜﻮﻥ ﺍﻟﺴﻤﺔ ﺍﻷﺳﺎﺳﻴﺔ ﻟﻠﻐﺔ ﻫﻲ ﺍﻟﻮﺿﻮﺡ .ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻟﻜﻞ ﺑﻨﺎء ﻟﻠﻐﺔ
ﺍﻟﻮﺳﻴﻄﺔﻣﻌﻨﻰ ﻭﺍﺿﺢ ﻻ ﻟﺒﺲ ﻓﻴﻪ .ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﻓﻲ ﺍﻟﻤﺴﺘﻮﻯ ﺍﻟﻤﺘﻮﺳﻂ ،ﻷﻥ ﻟﻐﺔ ﺍﻵﻟﺔ
ﻣﻨﺨﻔﻀﺔﺍﻟﻤﺴﺘﻮﻯ ﺑﺤﻴﺚ ﻻ ﻳﻤﻜﻦ ﻓﻬﻤﻬﺎ ﺑﺴﻬﻮﻟﺔ ،ﻭﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻟﻐﺔ ﺃﺧﺮﻯ ﻋﺎﻟﻴﺔ
ﺍﻟﻤﺴﺘﻮﻯﻟﻴﺴﺖ ﻣﻨﺎﺳﺒﺔ .ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻘﺮﺭ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺻﻒ ﺍﻟﺪﻻﻻﺕ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ
ﺍﻟﻄﺒﻴﻌﻴﺔ ،ﻓﻴﺠﺐ ﺇﻧﺸﺎء ﺁﻟﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ )ﻣﺘﺮﺟﻢ ﻓﻮﺭﻱ( ﻟﻠﻐﺔ ﺍﻟﻮﺳﻴﻄﺔ .ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺠﻬﺎﺯ
ﺍﻟﻈﺎﻫﺮﻱﻟﺘﻨﻔﻴﺬ ﺇﻣﺎ ﻋﺒﺎﺭﺍﺕ ﻓﺮﺩﻳﺔ ﺃﻭ ﻣﻘﺎﻃﻊ ﺭﻣﺰ ﺃﻭ ﺑﺮﺍﻣﺞ ﻛﺎﻣﻠﺔ .ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺻﻒ
ﺍﻟﺪﻻﻻﺕﺑﺪﻭﻥ ﺁﻟﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ ﺇﺫﺍ ﻛﺎﻥ ﻣﻌﻨﻰ ﻋﺒﺎﺭﺓ ﻭﺍﺣﺪﺓ ﻫﻮ ﻛﻞ ﻣﺎ ﻫﻮ ﻣﻄﻠﻮﺏ .ﻓﻲ ﻫﺬﺍ
ﺍﻻﺳﺘﺨﺪﺍﻡ ،
ﺍﻟﻌﻤﻠﻴﺔﺍﻷﺳﺎﺳﻴﺔ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ ﻟﻴﺴﺖ ﻏﻴﺮ ﻋﺎﺩﻳﺔ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ
ﺍﻟﻤﻔﻬﻮﻡﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ﻓﻲ ﺑﺮﻣﺠﺔ ﺍﻟﻜﺘﺐ ﺍﻟﻤﺪﺭﺳﻴﺔ ﻭﺍﻷﺩﻟﺔ ﺍﻟﻤﺮﺟﻌﻴﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ .ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺩﻻﻻﺕ Cﻝﻳﻤﻜﻦ ﻭﺻﻒ ﺍﻟﺒﻨﺎء ﻣﻦ ﺣﻴﺚ ﻋﺒﺎﺭﺍﺕ ﺃﺑﺴﻂ ،ﻛﻤﺎ ﻓﻲ
141 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
ﻣﻌﻨﻰ ﺑﻴﺎﻥﺝ
؛expr1 ﻝ)} ( expr3؛ ﺇﻛﺴﺒﺮ expr1 2
ﻟﻮexpr2 == 0ﺍﺫﻫﺐ ﺇﻟﻰ ﺣﻠﻘﺔ: ...
ﺧﺎﺭﺝ . . . {
expr3.
ﺍﺫﻫﺐﺇﻟﻰﺣﻠﻘﺔ
... ﺧﺎﺭﺝ:
ﺍﻟﻘﺎﺭﺉﺍﻟﺒﺸﺮﻱ ﻟﻤﺜﻞ ﻫﺬﺍ ﺍﻟﻮﺻﻒ ﻫﻮ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻻﻓﺘﺮﺍﺿﻲ ﻭﻳﻔﺘﺮﺽ ﺃﻧﻪ ﻗﺎﺩﺭ ﻋﻠﻰ "ﺗﻨﻔﻴﺬ"
ﺍﻟﺘﻌﻠﻴﻤﺎﺕﺍﻟﻮﺍﺭﺩﺓ ﻓﻲ ﺍﻟﺘﻌﺮﻳﻒ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻭﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺗﺄﺛﻴﺮﺍﺕ "ﺍﻟﺘﻨﻔﻴﺬ".
ﻏﺎﻟﺒﺎًﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻠﻐﺔ ﺍﻟﻮﺳﻴﻄﺔ ﻭﺍﻵﻟﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺃﻭﺻﺎﻑ
ﺍﻟﺪﻻﻻﺕﺍﻟﺘﺸﻐﻴﻠﻴﺔ ﺍﻟﺮﺳﻤﻴﺔ ﻣﺠﺮﺩﺓ ﻟﻠﻐﺎﻳﺔ .ﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺃﻥ ﺗﻜﻮﻥ ﺍﻟﻠﻐﺔ ﺍﻟﻮﺳﻴﻄﺔ ﻣﻼﺉﻤﺔ
ﻟﻶﻟﺔﺍﻻﻓﺘﺮﺍﺿﻴﺔ ،ﻭﻟﻴﺲ ﻟﻠﻘﺮﺍء ﺍﻟﺒﺸﺮﻳﻴﻦ .ﻭﻣﻊ ﺫﻟﻚ ،ﻷﻏﺮﺍﺿﻨﺎ ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ﻭﺳﻴﻄﺔ
ﺃﻛﺜﺮﺗﻮﺟﻬﺎ ًﻧﺤﻮ ﺍﻹﻧﺴﺎﻥ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﻗﺎﺉﻤﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ ،ﻭﺍﻟﺘﻲ
ﺳﺘﻜﻮﻥﻛﺎﻓﻴﺔ ﻟﻮﺻﻒ ﺩﻻﻻﺕ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﺒﺴﻴﻄﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﻤﻮﺫﺟﻴﺔ:
ident = var
+ 1 id = ident -1
id = id
ﺍﺫﻫﺐﺇﻟﻰﻣﻠﺼﻖ
ﻟﻮﻓﺎﺭ ﺭﻳﻠﻮﺏ ﻓﺎﺭﺍﺫﻫﺐ ﺇﻟﻰﻣﻠﺼﻖ
ﻓﻲﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ ،ﺗﻢ ﻭﺻﻒ ﺩﻻﻻﺕ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻠﻐﺔ
ﺍﻟﻮﺳﻴﻄﺔ.
ﻭﺻﻒﺍﻟﻨﺤﻮ ﻭﺍﻟﻤﻌﺎﻧﻲ ﺍﻟﻔﺼﻞ3 142
3.5.1.2ﺍﻟﺘﻘﻴﻴﻢ
ﻛﺎﻥﺃﻭﻝ ﻭﺃﻫﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ ﺍﻟﺮﺳﻤﻴﺔ ﻫﻮ ﻭﺻﻒ ﺩﻻﻻﺕ (I )Wegner ، 1972
.PL /ﺗﻢ ﺗﺴﻤﻴﺔ ﻫﺬﻩ ﺍﻵﻟﺔ ﺍﻟﻤﺠﺮﺩﺓ ﺍﻟﺨﺎﺻﺔ ﻭﻗﻮﺍﻋﺪ ﺍﻟﺘﺮﺟﻤﺔ ﻟـ PL / Iﻣﻌﺎً ﺑﺎﺳﻢ ﻟﻐﺔ ﺗﻌﺮﻳﻒ
ﻓﻴﻴﻨﺎ) ، (VDLﺑﻌﺪ ﺍﻟﻤﺪﻳﻨﺔ ﺍﻟﺘﻲ ﺻﻤﻤﺘﻬﺎ ﺷﺮﻛﺔ .IBM
3.5.2ﺩﻻﻻﺕ ﺍﻟﻜﻠﻤﺎﺕ
ﺩﻻﻻﺕﺩﻻﻻﺕﻫﻲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺮﺳﻤﻴﺔ ﺍﻷﻛﺜﺮ ﺻﺮﺍﻣﺔ ﻭﺍﻷﻛﺜﺮ ﺷﻬﺮﺓ ﻟﻮﺻﻒ ﻣﻌﻨﻰ ﺍﻟﺒﺮﺍﻣﺞ.
ﻳﻌﺘﻤﺪﺑﻘﻮﺓ ﻋﻠﻰ ﻧﻈﺮﻳﺔ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻟﻌﻮﺩﻳﺔ .ﺇﻥ ﺍﻟﻤﻨﺎﻗﺸﺔ ﺍﻟﺸﺎﻣﻠﺔ ﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ
ﻟﻮﺻﻒﺩﻻﻻﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻫﻲ ﺑﺎﻟﻀﺮﻭﺭﺓ ﻃﻮﻳﻠﺔ ﻭﻣﻌﻘﺪﺓ .ﻧﻬﺪﻑ ﺇﻟﻰ ﺗﺰﻭﻳﺪ ﺍﻟﻘﺎﺭﺉ ﺑﻤﻘﺪﻣﺔ
ﻟﻠﻤﻔﺎﻫﻴﻢﺍﻟﻤﺮﻛﺰﻳﺔ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ،ﺇﻟﻰ ﺟﺎﻧﺐ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺒﺴﻴﻄﺔ ﺫﺍﺕ ﺍﻟﺼﻠﺔ
ﺑﻤﻮﺍﺻﻔﺎﺕﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ.
ﺗﺘﻄﻠﺐﻋﻤﻠﻴﺔ ﺑﻨﺎء ﻣﻮﺍﺻﻔﺎﺕ ﺩﻻﻻﺕ ﺗﻌﺮﻳﻔﻴﺔ ﻟﻠﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺃﻥ ﻳﻘﻮﻡ ﺍﻟﻤﺮء ﺑﺘﻌﺮﻳﻒ ﻛﻞ
ﻛﻴﺎﻥﻟﻐﻮﻱ ﻛﻼ ًﻣﻦ ﻛﺎﺉﻦ ﺭﻳﺎﺿﻲ ﻭﻭﻇﻴﻔﺔ ﺗﺮﺳﻢ ﻣﺜﻴﻼﺕ ﻫﺬﺍ ﺍﻟﻜﻴﺎﻥ ﺍﻟﻠﻐﻮﻱ ﻋﻠﻰ ﻣﺜﻴﻼﺕ
ﺍﻟﻜﺎﺉﻦﺍﻟﺮﻳﺎﺿﻲ .ﻧﻈﺮﺍً ﻷﻥ ﺍﻟﻜﺎﺉﻨﺎﺕ ﻣﺤﺪﺩﺓ ﺑﺪﻗﺔ ،ﻓﺈﻧﻬﺎ ﺗﻤﺜﻞ ﺍﻟﻤﻌﻨﻰ ﺍﻟﺪﻗﻴﻖ ﻟﻠﻜﻴﺎﻧﺎﺕ
ﺍﻟﻤﻘﺎﺑﻠﺔﻟﻬﺎ .ﺗﺴﺘﻨﺪ ﺍﻟﻔﻜﺮﺓ ﺇﻟﻰ ﺣﻘﻴﻘﺔ ﺃﻥ ﻫﻨﺎﻙ ﻃﺮﻗﺎً ﺻﺎﺭﻣﺔ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ
ﻭﻟﻜﻦﻟﻴﺲ ﻫﻨﺎﻙ ﺗﺮﺍﻛﻴﺐ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ .ﺗﻜﻤﻦ ﺻﻌﻮﺑﺔ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﻓﻲ ﺇﻧﺸﺎء ﺍﻟﻜﺎﺉﻨﺎﺕ
ﻭﻭﻇﺎﺉﻒﺍﻟﺘﻌﻴﻴﻦ .ﺍﻟﻄﺮﻳﻘﺔ ﺗﺴﻤﻰﻣﻌﻠﻢ ﺏﻷﻥ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ ﺗﺪﻝ ﻋﻠﻰ ﻣﻌﻨﻰ ﺍﻟﻜﻴﺎﻧﺎﺕ
ﺍﻟﻨﺤﻮﻳﺔﺍﻟﻤﻘﺎﺑﻠﺔ ﻟﻬﺎ.
ﻭﻇﺎﺉﻒﺍﻟﺘﻌﻴﻴﻦ ﺍﻟﺨﺎﺻﺔ ﺑﻤﻮﺍﺻﻔﺎﺕ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺪﻻﻟﻴﺔ ،ﻣﺜﻞ ﺟﻤﻴﻊ ﺍﻟﻮﻇﺎﺉﻒ ﻓﻲ
ﺍﻟﺮﻳﺎﺿﻴﺎﺕ ،ﻟﻬﺎ ﻣﺠﺎﻝ ﻭﻧﻄﺎﻕ .ﺍﻟﻤﺠﺎﻝ ﻫﻮ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻘﻴﻢ ﺍﻟﺘﻲ ﺗﻌﺘﺒﺮ ﻣﻌﻠﻤﺎﺕ ﺷﺮﻋﻴﺔ
ﻟﻠﻮﻇﻴﻔﺔ ؛ﺍﻟﻨﻄﺎﻕ ﻫﻮ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺇﻟﻴﻬﺎ .ﻓﻲ ﺩﻻﻻﺕ
ﺍﻟﺪﻻﻟﺔ ،ﻳﻄُﻠﻖ ﻋﻠﻰ ﺍﻟﻤﺠﺎﻝ ﺍﺳﻢﺍﻟﻤﺠﺎﻝ ﺍﻟﻨﺤﻮﻱ ،ﻷﻧﻬﺎ ﺍﻟﻬﻴﺎﻛﻞ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻌﻴﻴﻨﻬﺎ.
ﺍﻟﻨﻄﺎﻕﻳﺴﻤﻰﺍﻟﻤﺠﺎﻝ ﺍﻟﺪﻻﻟﻲ.
ﺗﺮﺗﺒﻂﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﺔ ﺑﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻞ .ﻓﻲ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ ،ﺗﺘُﺮﺟﻢ ﺗﺮﻛﻴﺒﺎﺕ ﻟﻐﺔ
ﺍﻟﺒﺮﻣﺠﺔﺇﻟﻰ ﺗﺮﻛﻴﺒﺎﺕ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺃﺑﺴﻂ ،ﻭﺍﻟﺘﻲ ﺗﺼﺒﺢ ﺃﺳﺎﺳﺎً ﻟﻤﻌﻨﻰ
143 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
ﺑﻨﺎء.ﻓﻲ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ،ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﺗﺮﺍﻛﻴﺐ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ ﺇﻟﻰ ﻛﺎﺉﻨﺎﺕ ﺭﻳﺎﺿﻴﺔ ،ﺇﻣﺎ
ﻣﺠﻤﻮﻋﺎﺕﺃﻭ ،ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ ،ﻭﻇﺎﺉﻒ .ﻭﻣﻊ ﺫﻟﻚ ،ﻋﻠﻰ ﻋﻜﺲ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻠﻴﺔ ،
ﻓﺈﻥﺩﻻﻻﺕ ﺍﻟﺪﻻﻻﺕ ﻻ ﺗﺸﻜﻞ ﻧﻤﻮﺫﺟﺎً ﻟﻠﻤﻌﺎﻟﺠﺔ ﺍﻟﺤﺴﺎﺑﻴﺔ ﺧﻄﻮﺓ ﺑﺨﻄﻮﺓ ﻟﻠﺒﺮﺍﻣﺞ.
3.5.2.1ﻣﺜﺎﻻﻥ ﺑﺴﻴﻄﺎﻥ
ﻧﺤﻦﻧﺴﺘﺨﺪﻡ ﺑﻨﻴﺔ ﻟﻐﺔ ﺑﺴﻴﻄﺔ ﻟﻠﻐﺎﻳﺔ ،ﺗﻤﺜﻴﻼﺕ ﺳﻠﺴﻠﺔ ﺍﻷﺣﺮﻑ ﻟﻸﺭﻗﺎﻡ ﺍﻟﺜﻨﺎﺉﻴﺔ ،ﻟﺘﻘﺪﻳﻢ
ﻃﺮﻳﻘﺔﺍﻟﺪﻻﻟﺔ .ﻳﻤﻜﻦ ﻭﺻﻒ ﺑﻨﺎء ﺟﻤﻠﺔ ﻫﺬﻩ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺜﻨﺎﺉﻴﺔ ﻣﻦ ﺧﻼﻝ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻟﻠﻤﺜﺎﻝ ﺍﻟﺮﻗﻢ ﺍﻟﺜﻨﺎﺉﻲ ، 110،ﻳﻈﻬﺮ ﻓﻲ ﺍﻟﺸﻜﻞ .3.9ﻻﺣﻆ ﺃﻧﻨﺎ ﻭﺿﻌﻨﺎ ﺍﻟﻔﻮﺍﺻﻞ
ﺍﻟﻌﻠﻴﺎﺣﻮﻝ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻨﺤﻮﻳﺔ ﻹﻇﻬﺎﺭ ﺃﻧﻬﺎ ﻟﻴﺴﺖ ﺃﺭﻗﺎﻣﺎً ﺭﻳﺎﺿﻴﺔ .ﻫﺬﺍ ﻣﺸﺎﺑﻪ ﻟﻠﻌﻼﻗﺔ ﺑﻴﻦ ﺍﻷﺭﻗﺎﻡ
ﺍﻟﻤﺸﻔﺮﺓ ASCIIﻭﺍﻷﺭﻗﺎﻡ ﺍﻟﺮﻳﺎﺿﻴﺔ .ﻋﻨﺪﻣﺎ ﻳﻘﺮﺃ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺭﻗﻤﺎً ﻛﺴﻠﺴﻠﺔ ،ﻳﺠﺐ ﺗﺤﻮﻳﻠﻪ ﺇﻟﻰ ﺭﻗﻢ
ﺭﻳﺎﺿﻲﻗﺒﻞ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻛﻘﻴﻤﺔ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ.
<>bin_num ﺍﻟﺸﻜﻞ3.9
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻟﻠﻌﺪﺩ
ﺍﻟﺜﻨﺎﺉﻲ110
""0 <>bin_num
""1 <>bin_num
""1
ﻓﻲﻣﺜﺎﻟﻨﺎ ،ﻳﺠﺐ ﺃﻥ ﺗﺮﺗﺒﻂ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ﺑﺄﻭﻝ ﻗﺎﻋﺪﺗﻴﻦ ﻧﺤﻮﻳﺘﻴﻦ .ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ
ﺍﻷﺧﺮﻯﻫﻲ ،ﺑﻤﻌﻨﻰ ﻣﺎ ،ﻗﻮﺍﻋﺪ ﺣﺴﺎﺑﻴﺔ ،ﻷﻧﻬﺎ ﺗﺠﻤﻊ ﺑﻴﻦ ﺭﻣﺰ ﻃﺮﻓﻲ ،ﻳﻤﻜﻦ ﺃﻥ ﻳﺮﺗﺒﻂ ﺑﻪ
ﻛﺎﺉﻦ ،ﻣﻊ ﻏﻴﺮ ﻧﻬﺎﺉﻲ ،ﻭﺍﻟﺬﻱ ﻳﻤﻜﻦ ﺗﻮﻗﻌﻪ ﻟﺘﻤﺜﻴﻞ ﺑﻌﺾ ﺍﻟﺒﻨﺎء .ﺑﺎﻓﺘﺮﺍﺽ ﺃﻥ ﺍﻟﺘﻘﻴﻴﻢ ﻳﺘﻘﺪﻡ
ﺇﻟﻰﺃﻋﻠﻰ ﻓﻲ ﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ،
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 144
ﺳﻴﻜﻮﻥﻟﻠﻤﻌﻨﻰ ﻏﻴﺮ ﺍﻟﻨﻬﺎﺉﻲ ﻓﻲ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﻤﻦ ﺑﺎﻟﻔﻌﻞ ﻣﻌﻨﺎﻩ ﺍﻟﻤﺮﻓﻖ .ﻟﺬﺍ ،ﻓﺈﻥ ﺍﻟﻘﺎﻋﺪﺓ
ﺍﻟﻨﺤﻮﻳﺔﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻨﺼﺮ ﻏﻴﺮ ﻧﻬﺎﺉﻲ ﻣﺜﻞ RHSﺗﺘﻄﻠﺐ ﻭﻇﻴﻔﺔ ﺗﺤﺴﺐ ﻣﻌﻨﻰ ، LHS
ﻭﺍﻟﺘﻲﺗﻤﺜﻞ ﻣﻌﻨﻰ RHSﺍﻟﻜﺎﻣﻞ.
ﺍﻟﻮﻇﻴﻔﺔﺍﻟﺪﻻﻟﻴﺔ ،ﺍﻟﻤﺴﻤﺎﺓ Mﺳﻠﺔ ﻣﻬﻤﻼﺕ ،ﻳﻌﻴﻦ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﻨﺤﻮﻳﺔ ،ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ
ﺍﻟﻘﻮﺍﻋﺪﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺴﺎﺑﻘﺔ ،ﻟﻠﻜﺎﺉﻨﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ، Nﻣﺠﻤﻮﻋﺔ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻌﺸﺮﻳﺔ ﻏﻴﺮ ﺍﻟﺴﺎﻟﺒﺔ.
ﺍﻟﻮﻇﻴﻔﺔ.Mﺳﻠﺔ ﻣﻬﻤﻼﺕﻳﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ:
ﻳﻤﻜﻦﺭﺑﻂ ﺍﻟﻤﻌﺎﻧﻲ ،ﺃﻭ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﻤﺸُﺎﺭ ﺇﻟﻴﻬﺎ )ﻭﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﺃﺭﻗﺎﻣﺎً ﻋﺸﺮﻳﺔ( ،
ﺑﻌﻘُﺪﺷﺠﺮﺓ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺴﺎﺑﻘﺔ ،ﻣﻤﺎ ﻳﻨﺘﺞ ﻋﻨﻪ ﺍﻟﺸﺠﺮﺓ ﻓﻲ ﺍﻟﺸﻜﻞ
.3.10ﻫﺬﻩ ﺩﻻﻻﺕ ﻣﻮﺟﻬﺔ ﻧﺤﻮ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ .ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﺍﻟﻜﻴﺎﻧﺎﺕ ﺍﻟﻨﺤﻮﻳﺔ ﻟﻠﻜﺎﺉﻨﺎﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ
ﺫﺍﺕﺍﻟﻤﻌﻨﻰ ﺍﻟﻤﻠﻤﻮﺱ.
6 ﺍﻟﺸﻜﻞ3.10
<>bin_num
ﺷﺠﺮﺓﺗﺤﻠﻴﻞ ﻣﻊ ﻛﺎﺉﻨﺎﺕ
ﺗﺪﻝﻋﻠﻰ 110
3
""0 <>bin_num
1
""1 <>bin_num
""1
ﺟﺰﺉﻴﺎًﻷﻧﻨﺎ ﻧﺤﺘﺎﺝ ﺇﻟﻴﻪ ﻻﺣﻘﺎً ،ﻧﻌﺮﺽ ﺍﻵﻥ ﻣﺜﺎﻻً ﻣﺸﺎﺑﻬﺎً ﻟﻮﺻﻒ ﻣﻌﻨﻰ ﺍﻟﻘﻴﻢ ﺍﻟﺤﺮﻓﻴﺔ
ﺍﻟﻌﺸﺮﻳﺔﺍﻟﻨﺤﻮﻳﺔ .ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﺍﻟﻤﺠﺎﻝ ﺍﻟﻨﺤﻮﻱ ﻫﻮ ﻣﺠﻤﻮﻋﺔ ﺗﻤﺜﻴﻼﺕ ﺳﻠﺴﻠﺔ ﺍﻷﺣﺮﻑ
ﻟﻸﺭﻗﺎﻡﺍﻟﻌﺸﺮﻳﺔ .ﺍﻟﻤﺠﺎﻝ ﺍﻟﺪﻻﻟﻲ ﻫﻮ ﻣﺮﺓ ﺃﺧﺮﻯ ﺍﻟﻤﺠﻤﻮﻋﺔ .N
<' 9 '|' 8'7 '|' 6 '|' 5 '|' 4 '|' 3 '|' 2 '|' 1 '|' 0' →>dec_num
') <(' 9 '|' 8 '|' 7 '|' 6 '|' 5 '|' 4 '|' 3 '|' 2 '|' 1 '|' 0| >dec_num
ﻓﻲﺍﻷﻗﺴﺎﻡ ﺍﻟﺘﺎﻟﻴﺔ ،ﻧﻘﺪﻡ ﺃﻭﺻﺎﻑ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻟﺒﻌﺾ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ .ﺃﻫﻢ
ﺍﻓﺘﺮﺍﺽﻣﺒﺴﻂ ﺗﻢ ﺇﺟﺮﺍﺅﻩ ﻫﻨﺎ ﻫﻮ ﺃﻥ ﻛﻼ ﻣﻦ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻭﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ ﻟﻠﺒﻨﻰ ﺻﺤﻴﺤﺔ.
ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﺫﻟﻚ ،ﻧﻔﺘﺮﺽ ﺃﻧﻪ ﺗﻢ ﺗﻀﻤﻴﻦ ﻧﻮﻋﻴﻦ ﻋﺪﺩﻳﻴﻦ ﻓﻘﻂ :ﻋﺪﺩ ﺻﺤﻴﺢ ﻭ ﻣﻨﻄﻘﻲ.
3.5.2.2ﺣﺎﻟﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﻳﻤﻜﻦﺗﻌﺮﻳﻒ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻟﺒﺮﻧﺎﻣﺞ ﻣﺎ ﻣﻦ ﺣﻴﺚ ﺗﻐﻴﺮﺍﺕ ﺍﻟﺤﺎﻟﺔ ﻓﻲ ﺟﻬﺎﺯ ﻛﻤﺒﻴﻮﺗﺮ ﻣﺜﺎﻟﻲ.
ﻳﺘﻢﺗﻌﺮﻳﻒ ﺩﻻﻻﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ،ﻭﻳﺘﻢ ﺗﻌﺮﻳﻒ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ
ﺗﻘﺮﻳﺒﺎً.ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ﻣﺰﻳﺪ ﻣﻦ ﺍﻟﺘﺒﺴﻴﻂ ،ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻣﻦ ﺣﻴﺚ ﻗﻴﻢ ﺟﻤﻴﻊ
ﻣﺘﻐﻴﺮﺍﺕﺍﻟﺒﺮﻧﺎﻣﺞ ﻓﻘﻂ .ﻟﺬﻟﻚ ،ﺗﺴﺘﺨﺪﻡ ﺩﻻﻻﺕ ﺍﻟﺪﻻﻻﺕ ﺣﺎﻟﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻟﻮﺻﻒ ﺍﻟﻤﻌﻨﻰ ،
ﺑﻴﻨﻤﺎﺗﺴﺘﺨﺪﻡ ﺩﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻞ ﺣﺎﻟﺔ ﺍﻵﻟﺔ .ﻳﺘﻤﺜﻞ ﺍﻻﺧﺘﻼﻑ ﺍﻟﺮﺉﻴﺴﻲ ﺑﻴﻦ ﺩﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻞ
ﻭﺍﻟﺪﻻﻻﺕﺍﻟﺪﻻﻟﻴﺔ ﻓﻲ ﺃﻥ ﺗﻐﻴﻴﺮﺍﺕ ﺍﻟﺤﺎﻟﺔ ﻓﻲ ﺩﻻﻻﺕ ﺍﻟﺘﺸﻐﻴﻞ ﻳﺘﻢ ﺗﺤﺪﻳﺪﻫﺎ ﺑﻮﺍﺳﻄﺔ
ﺧﻮﺍﺭﺯﻣﻴﺎﺕﻣﺸﻔﺮﺓ ،ﻣﻜﺘﻮﺑﺔ ﻓﻲ ﺑﻌﺾ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﺑﻴﻨﻤﺎ ﻓﻲ ﺩﻻﻻﺕ ﺍﻟﺪﻻﻟﺔ ،ﻳﺘﻢ ﺗﺤﺪﻳﺪ
ﺗﻐﻴﻴﺮﺍﺕﺍﻟﺤﺎﻟﺔ ﻣﻦ ﺧﻼﻝ ﻭﻇﺎﺉﻒ ﺭﻳﺎﺿﻴﺔ.
ﺩﻉﺣﺎﻻﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻳﺘﻢ ﺗﻤﺜﻴﻠﻬﺎ ﻛﻤﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻷﺯﻭﺍﺝ ﺍﻟﻤﺮﺗﺒﺔ ،ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ:
ﻛﻞ iﻫﻮ ﺍﺳﻢ ﻣﺘﻐﻴﺮ ،ﻭ vﺍﻟﻤﻘﺘﺮﻧﺔ ﺑﻪ ﻫﻲ ﺍﻟﻘﻴﻢ ﺍﻟﺤﺎﻟﻴﺔ ﻟﺘﻠﻚ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ .ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻷﻱ
ﺣﺮﻑ vﻗﻴﻤﺔ ﺧﺎﺻﺔﺃﻭﻧﺪﻳﻒ ،ﻣﻤﺎ ﻳﺸﻴﺮ ﺇﻟﻰ ﺃﻥ ﺍﻟﻤﺘﻐﻴﺮ ﺍﻟﻤﺮﺗﺒﻂ ﺑﻪ ﻏﻴﺮ ﻣﺤﺪﺩ ﺣﺎﻟﻴﺎً .ﺩﻉ
VARMAPﺗﻜﻮﻥ ﺩﺍﻟﺔ ﻣﻦ ﻣﻌﻠﻤﺘﻴﻦ :ﺍﺳﻢ ﻣﺘﻐﻴﺮ ﻭﺣﺎﻟﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻗﻴﻤﺔ VARMAP )iﻱ vﻫﻮ (، s
ﻱ)ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻘﺘﺮﻧﺔ ﺑـ iﻱﻓﻲ ﺍﻟﺪﻭﻟﺔ( .ﺗﻘﻮﻡ ﻣﻌﻈﻢ ﻭﻇﺎﺉﻒ ﺗﻌﻴﻴﻦ ﺍﻟﺪﻻﻻﺕ ﻟﻠﺒﺮﺍﻣﺞ ﻭﺑﻨﺎء
ﺍﻟﺒﺮﺍﻣﺞﺑﺘﻌﻴﻴﻦ ﺍﻟﺪﻭﻝ ﺇﻟﻰ ﺍﻟﺪﻭﻝ .ﺗﺴُﺘﺨﺪﻡ ﺗﻐﻴﻴﺮﺍﺕ ﺍﻟﺤﺎﻟﺔ ﻫﺬﻩ ﻟﺘﺤﺪﻳﺪ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ ﻭﺑﻨﻴﺎﺕ
ﺍﻟﺒﺮﺍﻣﺞ.ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﺑﻌﺾ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ -ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻟﺘﻌﺒﻴﺮﺍﺕ -ﻋﻠﻰ ﺍﻟﻘﻴﻢ ﻭﻟﻴﺲ
ﺍﻟﺤﺎﻻﺕ.
3.5.2.3ﺍﻟﺘﻌﺒﻴﺮﺍﺕ
ﺍﻟﺘﻌﺒﻴﺮﺍﺕﺃﺳﺎﺳﻴﺔ ﻟﻤﻌﻈﻢ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻧﻔﺘﺮﺽ ﻫﻨﺎ ﺃﻥ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻟﻴﺲ ﻟﻬﺎ ﺁﺛﺎﺭ ﺟﺎﻧﺒﻴﺔ.
ﻋﻼﻭﺓﻋﻠﻰ ﺫﻟﻚ ،ﻧﺤﻦ ﻧﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺒﺴﻴﻄﺔ ﺟﺪﺍً ﻓﻘﻂ :ﺍﻟﻌﺎﻣﻼﻥ ﺍﻟﻮﺣﻴﺪﺍﻥ ﻫﻤﺎ +ﻭ *
،ﻭﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻟﻠﺘﻌﺒﻴﺮ ﻋﺎﻣﻞ ﻭﺍﺣﺪ ﻋﻠﻰ ﺍﻷﻛﺜﺮ ؛ ﺍﻟﻤﻌﺎﻣﻼﺕ ﺍﻟﻮﺣﻴﺪﺓ ﻫﻲ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ
ﺍﻟﻌﺪﺩﻳﺔﺍﻟﺼﺤﻴﺤﺔ ﻭﺍﻷﺭﻗﺎﻡ ﺍﻟﺤﺮﻓﻴﺔ ﺍﻟﺼﺤﻴﺤﺔ ؛ ﻻ ﻳﻮﺟﺪ ﺃﻗﻮﺍﺱ ﻭﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺮ ﻋﺪﺩ ﺻﺤﻴﺢ.
ﻓﻴﻤﺎﻳﻠﻲ ﻭﺻﻒ BNFﻟﻬﺬﻩ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ:
ﺍﻟﺨﻄﺄﺍﻟﻮﺣﻴﺪ ﺍﻟﺬﻱ ﻧﻌﺘﺒﺮﻩ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻫﻮ ﻣﺘﻐﻴﺮ ﻟﻪ ﻗﻴﻤﺔ ﻏﻴﺮ ﻣﺤﺪﺩﺓ .ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ
ﻳﻤﻜﻦﺃﻥ ﺗﺤﺪﺙ ﺃﺧﻄﺎء ﺃﺧﺮﻯ ،ﻟﻜﻦ ﻣﻌﻈﻤﻬﺎ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺍﻵﻟﺔ .ﺩﻉ Zﻳﻜﻮﻥ ﻣﺠﻤﻮﻋﺔ ﺍﻷﻋﺪﺍﺩ
ﺍﻟﺼﺤﻴﺤﺔ ،ﻭﺩﻉﺧﻄﺄﺗﻜﻮﻥ ﻗﻴﻤﺔ ﺍﻟﺨﻄﺄ .ﺛﻢ Zﺡ }ﺧﻄﺄ{ ﻫﻮ ﺍﻟﻤﺠﺎﻝ ﺍﻟﺪﻻﻟﻲ ﻟﻠﻤﻮﺍﺻﻔﺎﺕ
ﺍﻟﻮﺻﻔﻴﺔﻟﺘﻌﺒﻴﺮﺍﺗﻨﺎ.
ﺗﺘﺒﻊﻭﻇﻴﻔﺔ ﺍﻟﺘﻌﻴﻴﻦ ﻟﺘﻌﺒﻴﺮ ﻣﻌﻴﻦ Eﻭﺍﻟﺤﺎﻟﺔ .ﻟﻠﺘﻤﻴﻴﺰ ﺑﻴﻦ ﺗﻌﺮﻳﻔﺎﺕ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺮﻳﺎﺿﻴﺔ
ﻭﺑﻴﺎﻧﺎﺕﺍﻟﺘﺨﺼﻴﺺ ﺍﻟﺨﺎﺻﺔ ﺑﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ،ﻧﺴﺘﺨﺪﻡ ﺍﻟﺮﻣﺰ = -ﻟﺘﺤﺪﻳﺪ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺮﻳﺎﺿﻴﺔ.
ﻳﺮﺑﻂﺍﻟﺮﻣﺰ ﺍﻟﻀﻤﻨﻲ ، <= ،ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﻫﺬﺍ ﺍﻟﺘﻌﺮﻳﻒ ،ﺷﻜﻞ ﺍﻟﻤﻌﺎﻣﻞ ﺑﺒﻨﺎء ﺍﻟﺤﺎﻟﺔ )ﺃﻭ
ﺍﻟﺘﺒﺪﻳﻞ( ﺍﻟﻤﺮﺗﺒﻂ ﺑﻪ .ﻳﺴﺘﺨﺪﻡ ﺗﺪﻭﻳﻦ ﺍﻟﻨﻘﻄﺔ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﺍﻟﻌﻘﺪ ﺍﻟﻔﺮﻋﻴﺔ ﻟﻠﻌﻘﺪﺓ .ﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﻳﺸﻴﺮ > <binary_expr<. >left_exprﺇﻟﻰ ﺍﻟﻌﻘﺪﺓ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﻴﺴﺮﻯ ﻟـ
>.<binary_expr
3.5.2.4ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺨﺼﻴﺺ
ﻋﺒﺎﺭﺓﺍﻹﺳﻨﺎﺩ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺗﻘﻴﻴﻢ ﻟﻠﺘﻌﺒﻴﺮ ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺇﻋﺪﺍﺩ ﺍﻟﻤﺘﻐﻴﺮ ﺍﻟﻤﺴﺘﻬﺪﻑ ﻟﻘﻴﻤﺔ
ﺍﻟﺘﻌﺒﻴﺮ.ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﺗﻘﻮﻡ ﺩﺍﻟﺔ ﺍﻟﻤﻌﻨﻰ ﺑﺘﻌﻴﻴﻦ ﺣﺎﻟﺔ ﺇﻟﻰ ﺣﺎﻟﺔ .ﻳﻤﻜﻦ ﻭﺻﻒ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ
ﺑﻤﺎﻳﻠﻲ:
ﻻﺣﻆﺃﻥ ﺍﻟﻤﻘﺎﺭﻧﺔ ﻓﻲ ﺍﻟﺴﻄﺮ ﺍﻷﺧﻴﺮ ﺍﻟﺜﺎﻟﺚ ﺃﻋﻼﻩ ،ﺃﻧﺎﻱ.ﻣﻦ ﺍﻷﺳﻤﺎء ﻭﻟﻴﺲ ﺍﻟﻘﻴﻢ == x ،
147 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
ﻣﻌﻨﻰﺍﻟﺤﻠﻘﺔ ﻫﻮ ﺑﺒﺴﺎﻃﺔ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺍﻟﺤﻠﻘﺔ
ﺑﻌﺪﺩﺍﻟﻤﺮﺍﺕ ﺍﻟﻤﺤﺪﺩ ،ﺑﺎﻓﺘﺮﺍﺽ ﻋﺪﻡ ﻭﺟﻮﺩ ﺃﺧﻄﺎء .ﻓﻲ ﺟﻮﻫﺮﻫﺎ ،ﺗﻢ ﺗﺤﻮﻳﻞ ﺍﻟﺤﻠﻘﺔ ﻣﻦ ﺍﻟﺘﻜﺮﺍﺭ
ﺇﻟﻰﺍﻟﻌﻮﺩﻳﺔ ،ﺣﻴﺚ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻌﻮﺩﻳﺔ ﺭﻳﺎﺿﻴﺎً ﻣﻦ ﺧﻼﻝ ﻭﻇﺎﺉﻒ ﺗﻌﻴﻴﻦ ﺍﻟﺤﺎﻟﺔ
ﺍﻟﻌﻮﺩﻳﺔﺍﻷﺧﺮﻯ .ﻣﻦ ﺍﻷﺳﻬﻞ ﻭﺻﻒ ﺍﻟﺘﻜﺮﺍﺭ ﺑﺪﻗﺔ ﺭﻳﺎﺿﻴﺔ ﻣﻦ ﺍﻟﺘﻜﺮﺍﺭ.
3.5.2.6ﺍﻟﺘﻘﻴﻴﻢ
ﻳﻤﻜﻦﺗﻌﺮﻳﻒ ﺍﻟﻜﺎﺉﻨﺎﺕ ﻭﺍﻟﻮﻇﺎﺉﻒ ،ﻣﺜﻞ ﺗﻠﻚ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﺘﺮﻛﻴﺒﺎﺕ ﺍﻟﺴﺎﺑﻘﺔ ،
ﻟﻠﻜﻴﺎﻧﺎﺕﺍﻟﻨﺤﻮﻳﺔ ﺍﻷﺧﺮﻯ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ .ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻧﻈﺎﻡ ﻛﺎﻣﻞ ﻟﻠﻐﺔ ﻣﻌﻴﻨﺔ ،ﻳﻤﻜﻦ
ﺍﺳﺘﺨﺪﺍﻣﻪﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻜﺎﻣﻠﺔ ﻓﻲ ﺗﻠﻚ ﺍﻟﻠﻐﺔ .ﻳﻮﻓﺮ ﻫﺬﺍ ﺇﻃﺎﺭﺍً ﻟﻠﺘﻔﻜﻴﺮ ﻓﻲ ﺍﻟﺒﺮﻣﺠﺔ
ﺑﻄﺮﻳﻘﺔﺻﺎﺭﻣﺔ ﻟﻠﻐﺎﻳﺔ.
ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻛﻌﺎﻣﻞ ﻣﺴﺎﻋﺪ ﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ.
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻗﺪ ﺗﺸﻴﺮ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﺍﻟﻮﺻﻒ ﺍﻟﺪﻻﻟﻲ ﺍﻟﺪﻻﻟﻲ ﻟﻬﺎ ﻣﻌﻘﺪﺍً ﻭﺻﻌﺒ ًﺎ
ﺇﻟﻰﺍﻟﻤﺼﻤﻢ ﺃﻥ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﺼﻌﺐ ﺃﻳﻀﺎً ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﻠﻐﺔ ﻓﻬﻤﻬﺎ
ﻭﺃﻥﺍﻟﺘﺼﻤﻴﻢ ﺍﻟﺒﺪﻳﻞ ﻗﺪ ﻳﻜﻮﻥ ﻣﻨﺎﺳﺒﺎً.
ﺑﺴﺒﺐﺗﻌﻘﻴﺪ ﺍﻷﻭﺻﺎﻑ ﺍﻟﺘﻌﺮﻳﻔﻴﺔ ،ﻓﻬﻲ ﻗﻠﻴﻠﺔ ﺍﻟﻔﺎﺉﺪﺓ ﻟﻤﺴﺘﺨﺪﻣﻲ ﺍﻟﻠﻐﺔ .ﻣﻦ ﻧﺎﺣﻴﺔ
ﺃﺧﺮﻯ ،ﻓﺈﻧﻬﺎ ﺗﻮﻓﺮ ﻃﺮﻳﻘﺔ ﻣﻤﺘﺎﺯﺓ ﻟﻮﺻﻒ ﺍﻟﻠﻐﺔ ﺑﺈﻳﺠﺎﺯ.
3.5.3ﺩﻻﻻﺕ ﺑﺪﻳﻬﻴﺔ
ﺩﻻﻻﺕﺑﺪﻳﻬﻴﺔ ،ﺍﻟﺘﻲ ﺳﻤﻴﺖ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﻨﺤﻮ ﻷﻧﻬﺎ ﺗﺴﺘﻨﺪ ﺇﻟﻰ ﺍﻟﻤﻨﻄﻖ ﺍﻟﺮﻳﺎﺿﻲ ،ﻫﻲ ﺍﻟﻨﻬﺞ
ﺍﻷﻛﺜﺮﺗﺠﺮﻳﺪﺍً ﻟﻤﻮﺍﺻﻔﺎﺕ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ .ﺑﺪﻻ ًﻣﻦ ﺗﺤﺪﻳﺪ
ﻣﻌﻨﻰﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ،ﺗﺤﺪﺩ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻣﺎ ﻳﻤﻜﻦ ﺇﺛﺒﺎﺗﻪ ﺣﻮﻝ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﺗﺬﻛﺮ ﺃﻥ
ﺃﺣﺪﺍﻻﺳﺘﺨﺪﺍﻣﺎﺕ ﺍﻟﻤﻤﻜﻨﺔ ﻟﻠﻤﻮﺍﺻﻔﺎﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻫﻮ ﺇﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ.
ﻓﻲﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ،ﻻ ﻳﻮﺟﺪ ﻧﻤﻮﺫﺝ ﻟﺤﺎﻟﺔ ﺁﻟﺔ ﺃﻭ ﺑﺮﻧﺎﻣﺞ ﺃﻭ ﻧﻤﻮﺫﺝ ﻟﺘﻐﻴﻴﺮﺍﺕ ﺍﻟﺤﺎﻟﺔ
ﺍﻟﺘﻲﺗﺤﺪﺙ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻳﻌﺘﻤﺪ ﻣﻌﻨﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺍﻟﻌﻼﻗﺎﺕ ﺑﻴﻦ ﻣﺘﻐﻴﺮﺍﺕ ﻭﺛﻮﺍﺑﺖ
ﺍﻟﺒﺮﻧﺎﻣﺞ ،ﻭﺍﻟﺘﻲ ﻫﻲ ﻧﻔﺴﻬﺎ ﻓﻲ ﻛﻞ ﺗﻨﻔﻴﺬ ﻟﻠﺒﺮﻧﺎﻣﺞ.
ﺗﻢﺗﻌﺮﻳﻒ ﺩﻻﻻﺕ ﺃﻛﺴﻴﻮﻣﺎﺗﻴﻚ ﺑﺎﻟﺘﺰﺍﻣﻦ ﻣﻊ ﺗﻄﻮﻳﺮ ﻧﻬﺞ ﻹﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ .ﺗﻈﻬﺮ ﺃﺩﻟﺔ
ﺍﻟﺼﺤﺔﻫﺬﻩ ،ﻋﻨﺪﻣﺎ ﻳﻤﻜﻦ ﺑﻨﺎﺅﻫﺎ ،ﺃﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻳﻘﻮﻡ ﺑﺎﻟﺤﺴﺎﺑﺎﺕ ﺍﻟﻤﻮﺻﻮﻓﺔ ﻓﻲ ﻣﻮﺍﺻﻔﺎﺗﻪ.
ﻓﻲﺍﻹﺛﺒﺎﺕ ،ﻳﺴُﺒﻖ ﻛﻞ ﺑﻴﺎﻥ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻭﻳﺘﺒﻌﻪ ﺗﻌﺒﻴﺮ ﻣﻨﻄﻘﻲ ﻳﺤﺪﺩ ﺍﻟﻘﻴﻮﺩ ﻋﻠﻰ ﻣﺘﻐﻴﺮﺍﺕ
ﺍﻟﺒﺮﻧﺎﻣﺞ.ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ،ﺑﺪﻻ ًﻣﻦ ﺍﻟﺤﺎﻟﺔ ﺍﻟﻜﺎﻣﻠﺔ ﻵﻟﺔ ﻣﺠﺮﺩﺓ )ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺩﻻﻻﺕ
ﺍﻟﺘﺸﻐﻴﻞ( ،ﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺍﻟﺒﻴﺎﻥ .ﺍﻟﺘﺪﻭﻳﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﻮﺻﻒ ﺍﻟﻘﻴﻮﺩ -ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻟﻐﺔ
ﺍﻟﺪﻻﻻﺕﺍﻟﺒﺪﻳﻬﻴﺔ -ﻫﻮ ﺣﺴﺎﺏ ﺍﻟﺘﻔﺎﺿﻞ ﻭﺍﻟﺘﻜﺎﻣﻞ ﺍﻷﺻﻠﻲ .ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ
ﺍﻟﻤﻨﻄﻘﻴﺔﺍﻟﺒﺴﻴﻄﺔ ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻜﻮﻥ ﻛﺎﻓﻴﺔ ﻟﻠﺘﻌﺒﻴﺮ ﻋﻦ ﺍﻟﻘﻴﻮﺩ ،ﺇﻻ ﺃﻧﻬﺎ ﻟﻴﺴﺖ ﻛﺬﻟﻚ ﻓﻲ ﺑﻌﺾ
ﺍﻟﺤﺎﻻﺕ.
ﻋﻨﺪﻣﺎﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺩﻻﻻﺕ ﺑﺪﻳﻬﻴﺔ ﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺍﻟﺒﻴﺎﻥ ﺭﺳﻤﻴﺎً ،ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﺍﻟﻤﻌﻨﻰ ﻣﻦ
ﺧﻼﻝﺗﺄﺛﻴﺮ ﺍﻟﺒﻴﺎﻥ ﻋﻠﻰ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ ﺣﻮﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺘﺄﺛﺮﺓ ﺑﺎﻟﺒﻴﺎﻥ.
3.5.3.1ﺍﻟﺘﺄﻛﻴﺪﺍﺕ
ﺗﺴﻤﻰﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺩﻻﻻﺕ ﺑﺪﻳﻬﻴﺔ ﺍﻟﻤﺴﻨﺪﺍﺕ ﺃﻭ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ .ﺍﻟﺘﺄﻛﻴﺪ
ﺍﻟﺬﻱﻳﺴﺒﻖ ﺑﻴﺎﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻣﺒﺎﺷﺮﺓ ﻳﺼﻒ ﺍﻟﻘﻴﻮﺩ ﺍﻟﻤﻔﺮﻭﺿﺔ ﻋﻠﻰ ﻣﺘﻐﻴﺮﺍﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺗﻠﻚ
ﺍﻟﻤﺮﺣﻠﺔﻣﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻳﺼﻒ ﺍﻟﺘﺄﻛﻴﺪ ﺍﻟﺬﻱ ﻳﻠﻲ ﺍﻟﺘﺼﺮﻳﺢ ﻣﺒﺎﺷﺮﺓ ﺍﻟﻘﻴﻮﺩ ﺍﻟﺠﺪﻳﺪﺓ ﻋﻠﻰ ﺗﻠﻚ
ﺍﻟﻤﺘﻐﻴﺮﺍﺕ)ﻭﺭﺑﻤﺎ ﻏﻴﺮﻫﺎ( ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺓ .ﻫﺬﻩ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ ﺗﺴﻤﻰﺷﺮﻁ ﻣﺴﺒﻖﻭﺣﺎﻟﺔ ﻻﺣﻘﺔ
،ﻋﻠﻰ ﺍﻟﺘﻮﺍﻟﻲ ،ﻣﻦ ﺍﻟﺒﻴﺎﻥ .ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺒﻴﺎﻧﻴﻦ ﺍﻟﻤﺘﺠﺎﻭﺭﻳﻦ ،ﻓﺈﻥ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻟﻸﻭﻝ ﺑﻤﺜﺎﺑﺔ
ﺷﺮﻁﻣﺴﺒﻖ ﻟﻠﺜﺎﻧﻲ .ﻳﺘﻄﻠﺐ ﺗﻄﻮﻳﺮ ﻭﺻﻒ ﺑﺪﻳﻬﻲ ﺃﻭ ﺇﺛﺒﺎﺕ ﻟﺒﺮﻧﺎﻣﺞ ﻣﻌﻴﻦ ﺃﻥ ﻛﻞ ﻋﺒﺎﺭﺓ ﻓﻲ
ﺍﻟﺒﺮﻧﺎﻣﺞﻟﻬﺎ ﺷﺮﻁ ﻣﺴﺒﻖ ﻭﺷﺮﻁ ﻻﺣﻖ.
ﻳﺘﻢﺗﻘﺪﻳﻢ ﺗﺄﻛﻴﺪﺍﺕ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻭﻣﺎ ﺑﻌﺪ ﺍﻟﺸﺮﻁ ﻓﻲ ﺃﻗﻮﺍﺱ ﻟﺘﻤﻴﻴﺰﻫﺎ ﻋﻦ ﺃﺟﺰﺍء ﻣﻦ
ﻋﺒﺎﺭﺍﺕﺍﻟﺒﺮﻧﺎﻣﺞ .ﺃﺣﺪ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻤﺴﺒﻘﺔ ﺍﻟﻤﺤﺘﻤﻠﺔ ﻟﻬﺬﺍ ﺍﻟﺒﻴﺎﻥ ﻫﻮ }x< 10{.
ﻓﻲﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ،ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺑﻴﺎﻥ ﻣﻌﻴﻦ ﻣﻦ ﺧﻼﻝ ﺷﺮﻃﻪ ﺍﻟﻤﺴﺒﻖ ﻭﺣﺎﻟﺘﻪ
ﺍﻟﻼﺣﻘﺔ.ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻓﺈﻥ ﺍﻟﺘﺄﻛﻴﺪﻳﻦ ﻳﺤﺪﺩﺍﻥ ﺑﺪﻗﺔ ﺗﺄﺛﻴﺮ ﺗﻨﻔﻴﺬ ﺍﻟﺒﻴﺎﻥ.
ﻓﻲﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ،ﻧﺮﻛﺰ ﻋﻠﻰ ﺇﺛﺒﺎﺗﺎﺕ ﺻﺤﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻭﺍﻟﺒﺮﺍﻣﺞ ،ﻭﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ
ﺷﺎﺉﻊﻟﻠﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ .ﺍﻟﻤﻔﻬﻮﻡ ﺍﻷﻛﺜﺮ ﻋﻤﻮﻣﻴﺔ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻫﻮ ﺗﺤﺪﻳﺪ ﻣﻌﻨﻰ ﺍﻟﺒﻴﺎﻧﺎﺕ
ﻭﺍﻟﺒﺮﺍﻣﺞﺑﺪﻗﺔ ﻣﻦ ﺣﻴﺚ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ .ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻫﻮ ﺃﺣﺪ ﺗﻄﺒﻴﻘﺎﺕ
ﺍﻷﻭﺻﺎﻑﺍﻟﺒﺪﻳﻬﻴﺔ ﻟﻠﻐﺎﺕ.
ﺇﺫﺍﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺣﺴﺎﺏ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻣﻦ ﺃﻛﺜﺮ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻼﺣﻘﺔ ﻋﻤﻮﻣﻴﺔ ﻟﻜﻞ
ﻧﻮﻉﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻟﻠﻐﺔ ،ﻓﺈﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﺤﺴﺎﺏ ﻫﺬﻩ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻤﺴﺒﻘﺔ ﺗﻮﻓﺮ
ﻭﺻﻔﺎًﻣﻮﺟﺰﺍً ﻟﺪﻻﻻﺕ ﺗﻠﻚ ﺍﻟﻠﻐﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ ،ﻳﻤﻜﻦ ﺇﻧﺸﺎء ﺑﺮﺍﻫﻴﻦ ﺻﺤﺔ ﻟﻠﺒﺮﺍﻣﺞ ﺑﻬﺬﻩ
ﺍﻟﻠﻐﺔ.ﻳﺒﺪﺃ ﺇﺛﺒﺎﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺧﺼﺎﺉﺺ ﻧﺘﺎﺉﺞ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻛﺸﺮﻁ ﻻﺣﻖ ﻵﺧﺮ ﺑﻴﺎﻥ
ﻟﻠﺒﺮﻧﺎﻣﺞ.ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ،ﺟﻨﺒﺎً ﺇﻟﻰ ﺟﻨﺐ ﻣﻊ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻷﺧﻴﺮﺓ ،ﻟﺤﺴﺎﺏ
ﺃﺿﻌﻒﺷﺮﻁ ﻣﺴﺒﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻷﺧﻴﺮ .ﺛﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻛﺸﺮﻁ ﻻﺣﻖ ﻟﻠﺒﻴﺎﻥ
ﺍﻷﺧﻴﺮﺍﻟﺜﺎﻧﻲ .ﺗﺴﺘﻤﺮ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺣﺘﻰ ﻳﺘﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺑﺪﺍﻳﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻓﻲ ﺗﻠﻚ ﺍﻟﻨﻘﻄﺔ،
ﺍﻟﺸﺮﻁﺍﻟﻤﺴﺒﻖ ﻟﻠﻌﺒﺎﺭﺓ ﺍﻷﻭﻟﻰ ﻳﻨﺺ ﻋﻠﻰ ﺍﻟﺸﺮﻭﻁ ﺍﻟﺘﻲ ﺑﻤﻮﺟﺒﻬﺎ ﺳﻴﺤﺴﺐ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺘﺎﺉﺞ
ﺍﻟﻤﺮﺟﻮﺓ.ﺇﺫﺍ ﻛﺎﻧﺖ ﻫﺬﻩ ﺍﻟﺸﺮﻭﻁ ﻣﺘﻀﻤﻨﺔ ﻓﻲ ﻣﻮﺍﺻﻔﺎﺕ ﺇﺩﺧﺎﻝ ﺍﻟﺒﺮﻧﺎﻣﺞ ،ﻓﻘﺪ ﺗﻢ ﺍﻟﺘﺤﻘﻖ ﻣﻦ
ﺻﺤﺔﺍﻟﺒﺮﻧﺎﻣﺞ.
ﺍﻥﺣﻜﻢ ﺍﻻﺳﺘﺪﻻﻝﻫﻲ ﻃﺮﻳﻘﺔ ﻻﺳﺘﻨﺘﺎﺝ ﺣﻘﻴﻘﺔ ﺗﺄﻛﻴﺪ ﻭﺍﺣﺪ ﻋﻠﻰ ﺃﺳﺎﺱ ﻗﻴﻢ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ
ﺍﻷﺧﺮﻯ.ﺍﻟﺸﻜﻞ ﺍﻟﻌﺎﻡ ﻟﻘﺎﻋﺪﺓ ﺍﻻﺳﺘﻨﺘﺎﺝ ﻫﻮ ﻛﻤﺎ ﻳﻠﻲ:
ﺑﺪﻳﻬﻴﺔ.ﻭﻣﻊ ﺫﻟﻚ ،ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﺤﺎﻻﺕ ،ﻻ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺍﻷﺿﻌﻒ ﺇﻻ ﺑﻘﺎﻋﺪﺓ
ﺍﺳﺘﻨﺘﺎﺝ.
ﻻﺳﺘﺨﺪﺍﻡﺩﻻﻻﺕ ﺑﺪﻳﻬﻴﺔ ﻣﻊ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﻌﻴﻨﺔ ،ﺳﻮﺍء ﻹﺛﺒﺎﺗﺎﺕ ﺍﻟﺼﻮﺍﺏ ﺃﻭ ﻟﻤﻮﺍﺻﻔﺎﺕ
ﺍﻟﺪﻻﻻﺕﺍﻟﺮﺳﻤﻴﺔ ،ﻳﺠﺐ ﺃﻥ ﺗﻮﺟﺪ ﺇﻣﺎ ﺑﺪﻳﻬﻴﺔ ﺃﻭ ﻗﺎﻋﺪﺓ ﺍﺳﺘﻨﺘﺎﺝ ﻟﻜﻞ ﻧﻮﻉ ﻣﻦ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻓﻲ
ﺍﻟﻠﻐﺔ.ﻓﻲ ﺍﻷﻗﺴﺎﻡ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ،ﻧﻘﺪﻡ ﺑﺪﻳﻬﻴﺔ ﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﺨﺼﻴﺺ ﻭﻗﻮﺍﻋﺪ ﺍﻻﺳﺘﺪﻻﻝ
ﻟﺘﺴﻠﺴﻞﺍﻟﻌﺒﺎﺭﺍﺕ ،ﻭﺑﻴﺎﻧﺎﺕ ﺍﻻﺧﺘﻴﺎﺭ ،ﻭﻋﺒﺎﺭﺍﺕ ﺍﻟﺤﻠﻘﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻗﺒﻞ ﺍﻻﺧﺘﺒﺎﺭ .ﻻﺣﻆ ﺃﻧﻨﺎ
ﻧﻔﺘﺮﺽﺃﻧﻪ ﻟﻴﺲ ﻟﻠﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺤﺴﺎﺑﻴﺔ ﻭﻻ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺁﺛﺎﺭ ﺟﺎﻧﺒﻴﺔ.
3.5.3.3ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺨﺼﻴﺺ
ﺍﻟﺸﺮﻁﺍﻟﻤﺴﺒﻖ ﻭﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻟﺒﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﻣﻌﺎً ﻳﺤﺪﺩﺍﻥ ﻣﻌﻨﺎﻩ ﺑﺪﻗﺔ .ﻟﺘﺤﺪﻳﺪ ﻣﻌﻨﻰ
ﺑﻴﺎﻥﺍﻟﺘﺨﺼﻴﺺ ،ﻧﻈﺮﺍً ﻟﺸﺮﻁ ﻻﺣﻖ ،ﻳﺠﺐ ﺃﻥ ﺗﻜﻮﻥ ﻫﻨﺎﻙ ﻃﺮﻳﻘﺔ ﻟﺤﺴﺎﺏ ﺷﺮﻃﻪ ﺍﻟﻤﺴﺒﻖ
ﻣﻦﻫﺬﺍ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ.
ﻟﻨﻔﺘﺮﺽﺃﻥ x = Eﻋﺒﺎﺭﺓ ﻋﻦ ﺑﻴﺎﻥ ﺗﺨﺼﻴﺺ ﻋﺎﻡ ﻭﺃﻥ ﻳﻜﻮﻥ Qﻫﻮ ﺷﺮﻃﻪ ﺍﻟﻼﺣﻖ .ﺛﻢ ﻳﺘﻢ
ﺗﺤﺪﻳﺪﺷﺮﻃﻬﺎ ﺍﻟﻤﺴﺒﻖ ، P ،ﻣﻦ ﺧﻼﻝ ﺍﻟﺒﺪﻳﻬﻴﺔ
ﺱxﺱﻩ ﻑ=
ﻣﻤﺎﻳﻌﻨﻲ ﺃﻥ Pﻳﺘﻢ ﺣﺴﺎﺑﻬﺎ ﻋﻠﻰ ﺃﻧﻬﺎ Qﻣﻊ ﺍﺳﺘﺒﺪﺍﻝ ﺟﻤﻴﻊ ﻣﺜﻴﻼﺕ xﺑـ .Eﻋﻠﻰ ﺳﺒﻴﻞ
ﺍﻟﻤﺜﺎﻝ ،ﺇﺫﺍ ﻛﺎﻥ ﻟﺪﻳﻨﺎ ﺑﻴﺎﻥ ﺍﻟﻤﻬﻤﺔ ﻭﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ
ﻳﺘﻢﺣﺴﺎﺏ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻋﻦ ﻃﺮﻳﻖ ﺍﻻﺳﺘﺒﺪﺍﻝﺏ 1-2 /ﻝﺃﻓﻲ ﺣﺎﻟﺔ ﻣﺎ ﺑﻌﺪ ﺍﻟﺤﺎﻟﺔ }ﺃ
>، {10ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ:
ﺏ 10> 1 - 2 /
ﺏ>22
ﻭﺑﺎﻟﺘﺎﻟﻲ ،ﻓﺈﻥ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟﺒﻴﺎﻥ ﺍﻟﻤﻬﻤﺔ ﻭﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﺍﻟﻤﺤﺪﺩ ﻫﻮ }ﺏ >.{22ﺗﺬﻛﺮ
ﺃﻥﺑﺪﻳﻬﻴﺔ ﺍﻟﺘﺨﺼﻴﺺ ﻣﻀﻤﻮﻧﺔ ﻟﺘﻜﻮﻥ ﺻﺤﻴﺤﺔ ﻓﻘﻂ ﻓﻲ ﺣﺎﻟﺔ ﻋﺪﻡ ﻭﺟﻮﺩ ﺁﺛﺎﺭ ﺟﺎﻧﺒﻴﺔ .ﺑﻴﺎﻥ
ﺍﻟﺘﺨﺼﻴﺺﻟﻪ ﺗﺄﺛﻴﺮ ﺟﺎﻧﺒﻲ ﺇﺫﺍ ﻗﺎﻡ ﺑﺘﻐﻴﻴﺮ ﻣﺘﻐﻴﺮ ﺁﺧﺮ ﻏﻴﺮ ﻫﺪﻓﻪ.
}ﺹ{ ﺹ }ﺱ{
ﺣﻴﺚ Pﻫﻲ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ Q ،ﻫﻲ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ،ﻭ Sﻫﻲ ﻧﻤﻮﺫﺝ ﺍﻟﺒﻴﺎﻥ .ﻓﻲ ﺣﺎﻟﺔ ﺑﻴﺎﻥ
ﺍﻟﺘﻨﺎﺯﻝ ،ﻳﻜﻮﻥ ﺍﻟﺘﺮﻣﻴﺰ
}ﺱxﺱﻩ{ﺱ = ﻩ }ﺱ{
151 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
ﻟﺬﺍ}ﺹ< {14ﻫﻮ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟﺒﻴﺎﻥ ﺍﻟﻤﻬﻤﺔ ﻭﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻫﺬﺍ.
ﻻﺣﻆﺃﻥ ﻣﻈﻬﺮ ﺍﻟﺠﺎﻧﺐ ﺍﻷﻳﺴﺮ ﻣﻦ ﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﻓﻲ ﺟﺎﻧﺒﻪ ﺍﻷﻳﻤﻦ ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ ﻋﻤﻠﻴﺔ
ﺣﺴﺎﺏﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻝ
ﺃﺿﻌﻒﺷﺮﻁ ﻣﺴﺒﻖ
ﺗﺬﻛﺮﺃﻥ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻗﺪ ﺗﻢ ﺗﻄﻮﻳﺮﻫﺎ ﻹﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ .ﻓﻲ ﺿﻮء ﺫﻟﻚ ،ﻣﻦ
ﺍﻟﻄﺒﻴﻌﻲﻓﻲ ﻫﺬﻩ ﺍﻟﻤﺮﺣﻠﺔ ﺃﻥ ﻧﺘﺴﺎءﻝ ﻛﻴﻒ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺪﻳﻬﻴﺔ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ
ﻹﺛﺒﺎﺕﺃﻱ ﺷﻲء .ﻭﺇﻟﻴﻚ ﺍﻟﻜﻴﻔﻴﺔ :ﻳﻤﻜﻦ ﺍﻋﺘﺒﺎﺭ ﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﻣﻊ ﻛﻞ ﻣﻦ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ
ﻭﺍﻟﺸﺮﻁﺍﻟﻼﺣﻖ ﺑﻴﺎﻧﺎً ﻣﻨﻄﻘﻴﺎً ﺃﻭ ﻧﻈﺮﻳﺔ .ﺇﺫﺍ ﻛﺎﻧﺖ ﺑﺪﻳﻬﻴﺔ ﺍﻟﺘﺨﺼﻴﺺ ،ﻋﻨﺪ ﺗﻄﺒﻴﻘﻬﺎ ﻋﻠﻰ
ﺍﻟﺸﺮﻁﺍﻟﻼﺣﻖ ﻭﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ،ﺗﻨﺘﺞ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺍﻟﻤﺤﺪﺩ ،ﻳﺘﻢ ﺇﺛﺒﺎﺕ ﺍﻟﻨﻈﺮﻳﺔ .ﻋﻠﻰ
ﺳﺒﻴﻞﺍﻟﻤﺜﺎﻝ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻨﻄﻘﻴﺔ
ﻳﻨﺘﺞﻋﻨﻪ }x< 3{ ،ﻭﻫﻮ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺍﻟﻤﺤﺪﺩ .ﻟﺬﻟﻚ ،ﻟﻘﺪ ﺃﺛﺒﺘﻨﺎ ﺍﻟﻤﺜﺎﻝ ﺍﻟﻤﻨﻄﻘﻲ ﻟﻠﺒﻴﺎﻥ.
ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ x< 5{ ،} ،ﻟﻴﺲ ﻫﻮ ﻧﻔﺲ ﺍﻟﺘﺄﻛﻴﺪ ﺍﻟﻨﺎﺗﺞ ﻋﻦ ﺍﻟﺒﺪﻳﻬﻴﺔ .ﻭﻣﻊ
ﺫﻟﻚ ،ﻓﻤﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ }{x< 5ﻳﺪﻝ }x< 3{.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 152
ﻻﺳﺘﺨﺪﺍﻡﻫﺬﺍ ﻓﻲ ﺇﺛﺒﺎﺕ ،ﻗﺎﻋﺪﺓ ﺍﺳﺘﻨﺘﺎﺝ ﺗﺴﻤﻰﺣﻜﻢ ﺍﻟﻌﺎﻗﺒﺔ ،ﻭﻫﻨﺎﻙ ﺣﺎﺟﺔ .ﺷﻜﻞ ﺣﻜﻢ
ﺍﻟﻌﺎﻗﺒﺔﻫﻮ
ﻳﻌﻨﻲﺍﻟﺮﻣﺰ =< "ﺿﻤﻨﻴﺎً" ،ﻭﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ Sﺃﻱ ﺑﻴﺎﻥ ﺑﺮﻧﺎﻣﺞ .ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﻘﺎﻋﺪﺓ ﻋﻠﻰ ﺍﻟﻨﺤﻮ
ﺍﻟﺘﺎﻟﻲ:ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻨﻄﻘﻴﺔ } S }Q{ {Pﺻﺤﻴﺤﺔ ،ﻓﺈﻥ ﺍﻟﺘﺄﻛﻴﺪ Pﻳﻌﻨﻲ ﺍﻟﺘﻮﻛﻴﺪ ، P
ﻭﺍﻟﺘﺄﻛﻴﺪ Qﻳﻌﻨﻲ ﺍﻟﺘﻮﻛﻴﺪ ، Qﻓﻴﻤﻜﻦ ﺍﺳﺘﻨﺘﺎﺝ ﺃﻥ } } S {Pﺱ{ .ﺑﻌﺒﺎﺭﺓ ﺃﺧﺮﻯ ،ﺗﻨﺺ ﻗﺎﻋﺪﺓ
ﺍﻟﻨﺘﻴﺠﺔﻋﻠﻰ ﺃﻧﻪ ﻳﻤﻜﻦ ﺩﺍﺉﻤﺎً ﺇﺿﻌﺎﻑ ﺣﺎﻟﺔ ﻣﺎ ﺑﻌﺪ ﺍﻟﺤﺎﻟﺔ ﻭﻳﻤﻜﻦ ﺩﺍﺉﻤﺎً ﺗﻌﺰﻳﺰ ﺷﺮﻁ ﻣﺴﺒﻖ.
ﻫﺬﺍﻣﻔﻴﺪ ﺟﺪﺍً ﻓﻲ ﺇﺛﺒﺎﺗﺎﺕ ﺍﻟﺒﺮﻧﺎﻣﺞ .ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﻳﺴﻤﺢ ﺑﺈﻛﻤﺎﻝ ﺇﺛﺒﺎﺕ ﺁﺧﺮ ﻣﺜﺎﻝ ﺑﻴﺎﻥ
ﻣﻨﻄﻘﻲﺃﻋﻼﻩ .ﺇﺫﺍ ﺗﺮﻛﻨﺎ Pﻳﻜﻮﻥ }x< 3{ ،ﺱ ﻭ ﺱx< 0{ ،.ﻭ Pﻳﻜﻮﻥ }x< 5{ ،ﻟﺪﻳﻨﺎ
(}x< 3{ x = x – 3 }x< 0{، )x< 5( =< }x< 3{، )x< 0( =< )x< 0
{}x< 5{ x = x – 3 }x< 0
3.5.3.4ﺍﻟﺘﺴﻠﺴﻼﺕ
ﻻﻳﻤﻜﻦ ﻭﺻﻒ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟﺴﻠﺴﻠﺔ ﻣﻦ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺑﺒﺪﻳﻬﻴﺔ ،ﻷﻥ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ
ﻳﻌﺘﻤﺪﻋﻠﻰ ﺃﻧﻮﺍﻉ ﻣﻌﻴﻨﺔ ﻣﻦ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺘﺴﻠﺴﻞ .ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ،ﻻ ﻳﻤﻜﻦ ﻭﺻﻒ ﺍﻟﺸﺮﻁ
ﺍﻟﻤﺴﺒﻖﺇﻻ ﺑﻘﺎﻋﺪﺓ ﺍﺳﺘﻨﺘﺎﺝ .ﻟﻨﻔﺘﺮﺽ ﺃﻥ S1ﻭ S2ﻋﺒﺎﺭﺓ ﻋﻦ ﺑﻴﺎﻧﺎﺕ ﺑﺮﻧﺎﻣﺞ ﻣﺘﺠﺎﻭﺭﺓ .ﺇﺫﺍ
ﻛﺎﻧﺖﺍﻟﻤﺤﻄﺎﺕ S1ﻭ S2ﺗﺤﺘﻮﻳﺎﻥ ﻋﻠﻰ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻤﺴﺒﻘﺔ ﻭﺍﻟﻼﺣﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ
{}P1{ S1 }P2
{}P2{ S2 }P3
ﻟﺬﻟﻚ ،ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ﻟﺪﻳﻨﺎ S1 {P1} ،؛ ﻳﺼﻒ { S2 }P3ﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻟﻠﺘﺴﻠﺴﻞ S1؛
.S2ﺗﻨﺺ ﻗﺎﻋﺪﺓ ﺍﻻﺳﺘﺪﻻﻝ ﻋﻠﻰ ﺃﻧﻪ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺷﺮﻁ ﺍﻟﺘﺴﻠﺴﻞ ﺍﻟﻤﺴﺒﻖ ،ﻳﺘﻢ ﺣﺴﺎﺏ
ﺍﻟﺸﺮﻁﺍﻟﻤﺴﺒﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻟﺜﺎﻧﻲ .ﺛﻢ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﺘﺄﻛﻴﺪ ﺍﻟﺠﺪﻳﺪ ﻛﺸﺮﻁ ﻻﺣﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻷﻭﻝ ،
ﻭﺍﻟﺬﻱﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﻌﺪ ﺫﻟﻚ ﻟﺤﺴﺎﺏ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻷﻭﻝ ،ﻭﻫﻮ ﺃﻳﻀﺎً ﺍﻟﺸﺮﻁ
ﺍﻟﻤﺴﺒﻖﻟﻠﺘﺴﻠﺴﻞ ﺑﺄﻛﻤﻠﻪ .ﺇﺫﺍ ﻛﺎﻧﺖ S1ﻭ S2ﻋﺒﺎﺭﺓ ﻋﻦ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ
153 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
x1 = E1
ﻭ
x2 = E2
ﺇﺫﻥﻟﺪﻳﻨﺎ
x2}P3ﺱﻩ { x2 = E2 }P3{2
})ﺹ x23ﺱﻩ x1(2ﺱﻩ x2{ x1 = E1 }P31ﺱﻩ {2
})x2P3 ﻟﺬﻟﻚ ،ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟﻠﺘﺴﻠﺴﻞ x1 = E1؛ x2 = E2ﻣﻊ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ P3ﻫﻮ
ﺱﻩ x1(2ﺱﻩ .{1
ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﺘﺴﻠﺴﻞ ﻭﺍﻟﻈﺮﻭﻑ ﺍﻟﻼﺣﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺹ >7
ﻭﺍﻟﺬﻱﻳﺴﺘﺨﺪﻡ ﻛﺸﺮﻁ ﻻﺣﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻷﻭﻝ .ﻳﻤﻜﻦ ﺍﻵﻥ ﺣﺴﺎﺏ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻟﺒﻴﺎﻥ
ﺍﻟﺘﺨﺼﻴﺺﺍﻷﻭﻝ:
3.5.3.5ﺍﻟﺘﺤﺪﻳﺪ
ﻧﻌﺘﺒﺮﺑﻌﺪ ﺫﻟﻚ ﻗﺎﻋﺪﺓ ﺍﻻﺳﺘﺪﻻﻝ ﻟﺒﻴﺎﻧﺎﺕ ﺍﻻﺧﺘﻴﺎﺭ ،ﻭﺍﻟﺸﻜﻞ ﺍﻟﻌﺎﻡ ﻟﻬﺎ ﻫﻮ
ﻟﻮﺏﺛﻢS1ﺁﺧﺮS2
ﺗﺸﻴﺮﻫﺬﻩ ﺍﻟﻘﺎﻋﺪﺓ ﺇﻟﻰ ﺃﻧﻪ ﻳﺠﺐ ﺇﺛﺒﺎﺕ ﻋﺒﺎﺭﺍﺕ ﺍﻻﺧﺘﻴﺎﺭ ﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ ﺗﻌﺒﻴﺮ ﺍﻟﺘﺤﻜﻢ ﺍﻟﻤﻨﻄﻘﻲ
ﺻﺤﻴﺤﺎًﻭﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ ﺧﺎﻃﺉﺎً .ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻷﻭﻟﻰ ﻓﻮﻕ ﺍﻟﺴﻄﺮ ﺗﻤﺜﻞﺛﻢﺑﻨﺪ؛ ﺍﻟﺜﺎﻧﻲ ﻳﻤﺜﻞ
ﺁﺧﺮ
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 154
ﺑﻨﺪ.ﻭﻓﻘﺎً ﻟﻘﺎﻋﺪﺓ ﺍﻻﺳﺘﺪﻻﻝ ،ﻧﺤﺘﺎﺝ ﺇﻟﻰ ﺷﺮﻁ ﻣﺴﺒﻖ Pﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻓﻲ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ
ﻟﻜﻠﻴﻬﻤﺎﺛﻢﻭﺁﺧﺮﺷﺮﻭﻁ.
ﺿﻊﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻟﺤﺴﺎﺏ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻗﺎﻋﺪﺓ ﺍﺳﺘﺪﻻﻝ
ﺍﻟﺘﺤﺪﻳﺪ.ﺑﻴﺎﻥ ﺍﺧﺘﻴﺎﺭ ﺍﻟﻤﺜﺎﻝ ﻫﻮ
ﻟﻮx< 0ﺛﻢ
ﺹ= ﺹ 1 -
ﺁﺧﺮ
ﺹ= ﺹ 1 +
ﻳﻨﺘﺞﻋﻦ ﻫﺬﺍ }ﺹ {0 <1 -ﺃﻭ }ﺹ< .{1ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻛﺠﺰء Pﻣﻦ ﻣﻠﻒ
ﺷﺮﻁﻣﺴﺒﻖ ﻝﺛﻢﺑﻨﺪ .ﺍﻵﻥ ﻧﻄﺒﻖ ﻧﻔﺲ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻋﻠﻰﺁﺧﺮﺑﻨﺪ
ﻣﻼﺣﻈﺔﺗﺎﺭﻳﺨﻴﺔ ﺫ
ﺗﻢﺇﻧﺠﺎﺯ ﻗﺪﺭ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﻌﻤﻞ ﻋﻠﻰ
ﺹ= ﺹ } 1 +ﺹ< {0
ﺇﻣﻜﺎﻧﻴﺔﺍﺳﺘﺨﺪﺍﻡ ﺃﻭﺻﺎﻑ ﺍﻟﻠﻐﺔ
ﺍﻟﻮﺻﻔﻴﺔﻟﺘﻮﻟﻴﺪﻫﺎ
ﺍﻟﺘﻲﺗﻨﺘﺞ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ }ﺹ {0 <1 +ﺃﻭ }ﺹ< .{1-ﻷﻥ }ﺹ< {y< -1} <= {1
،ﺗﺴﻤﺢ ﻟﻨﺎ ﻗﺎﻋﺪﺓ ﺍﻟﻨﺘﻴﺠﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ }ﺹ< {1ﻟﻠﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻟﺒﻴﺎﻥ ﺍﻻﺧﺘﻴﺎﺭ ﺍﻟﻤﺘﺮﺟﻤﻮﻥﺗﻠﻘﺎﺉﻴﺎً )ﺟﻮﻧﺰ 1980 ،؛
ﺑﺄﻛﻤﻠﻪ. ﻣﻴﻠﻮﺱﻭﺁﺧﺮﻭﻥ 1984 ،؛
.ﻭﻗﺪﺃﻇﻬﺮﺕ ﻫﺬﻩ ﺍﻟﺠﻬﻮﺩ ﺃﻥ ﺍﻟﻄﺮﻳﻘﺔ
ﻣﺠﺪﻳﺔ ،ﻟﻜﻦ ﺍﻟﻌﻤﻞ ﻟﻢ ﻳﺘﻘﺪﻡ ﺃﺑﺪﺍً ﺇﻟﻰ
3.5.3.6ﺍﻟﺤﻠﻘﺎﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﻤﺴﺒﻘﺔ
ﺍﻟﻨﻘﻄﺔﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻹﻧﺸﺎء
ﺍﻟﺒﻨﺎءﺍﻷﺳﺎﺳﻲ ﺍﻵﺧﺮ ﻟﻠﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﺤﺘﻤﻴﺔ ﻫﻮ ﺍﻻﺧﺘﺒﺎﺭ ﺍﻟﻤﻨﻄﻘﻲ ﺍﻟﻤﺴﺒﻖ ، ﻣﺠﻤﻌّﻴﻦﻣﻔﻴﺪﻳﻦ et al. ، 1982( ،
ﺃﻭﺑﻴﻨﻤﺎﺣﻠﻘﺔ .ﺣﺴﺎﺏ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟـﺑﻴﻨﻤﺎﺣﻠﻘﺔ ﺑﻄﺒﻴﻌﺘﻬﺎ ﺃﺻﻌﺐ ﻣﻦ Bodwin
ﺳﻠﺴﻠﺔ ،ﻷﻥ ﻋﺪﺩ ﺍﻟﺘﻜﺮﺍﺭﺍﺕ ﻻ ﻳﻤﻜﻦ ﺩﺍﺉﻤﺎً ﺗﺤﺪﻳﺪﻩ ﻣﺴﺒﻘﺎً .ﻓﻲ ﺣﺎﻟﺔ ﻣﻌﺮﻓﺔ
ﻋﺪﺩﺍﻟﺘﻜﺮﺍﺭﺍﺕ ،
ﺣﻴﺚﺃﻧﺎ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ .ﻳﺒﺪﻭ ﻫﺬﺍ ﺑﺴﻴﻄﺎً ،ﻟﻜﻨﻪ ﻟﻴﺲ ﻛﺬﻟﻚ .ﻳﻜﻤﻦ ﺍﻟﺘﻌﻘﻴﺪ ﻓﻲ ﺇﻳﺠﺎﺩ ﺣﻠﻘﺔ
ﺛﺎﺑﺘﺔﺛﺎﺑﺘﺔ.
155 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
}ﺹ{ﺑﻴﻨﻤﺎﺏﻳﻔﻌﻞﺱﻧﻬﺎﻳﺔ}ﺱ{
ﻳﺠﺐﺃﻥ ﻳﻔﻲ ﻣﺘﻐﻴﺮ ﺍﻟﺤﻠﻘﺔ ﺑﻌﺪﺩ ﻣﻦ ﺍﻟﻤﺘﻄﻠﺒﺎﺕ ﻟﻴﻜﻮﻥ ﻣﻔﻴﺪﺍً .ﺃﻭﻻ ً ،ﺃﺿﻌﻒ ﺷﺮﻁ
ﻣﺴﺒﻖﻟـﺑﻴﻨﻤﺎﻳﺠﺐ ﺃﻥ ﺗﻀﻤﻦ ﺍﻟﺤﻠﻘﺔ ﺣﻘﻴﻘﺔ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ .ﻓﻲ ﺍﻟﻤﻘﺎﺑﻞ ،ﻳﺠﺐ ﺃﻥ ﺗﻀﻤﻦ
ﺍﻟﺤﻠﻘﺔﺍﻟﺜﺎﺑﺘﺔ ﺣﻘﻴﻘﺔ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻋﻨﺪ ﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ .ﺗﻨﻘﻠﻨﺎ ﻫﺬﻩ ﺍﻟﻘﻴﻮﺩ ﻣﻦ ﻗﺎﻋﺪﺓ ﺍﻻﺳﺘﺪﻻﻝ
ﺇﻟﻰﺍﻟﻮﺻﻒ ﺍﻟﺒﺪﻳﻬﻲ .ﺃﺛﻨﺎء ﺗﻨﻔﻴﺬ ﺍﻟﺤﻠﻘﺔ ،ﻳﺠﺐ ﺃﻻ ﺗﺘﺄﺛﺮ ﺣﻘﻴﻘﺔ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ ﺑﺘﻘﻴﻴﻢ ﺍﻟﺘﻌﺒﻴﺮ
ﺍﻟﻤﻨﻄﻘﻲﺍﻟﺬﻱ ﻳﺘﺤﻜﻢ ﻓﻲ ﺍﻟﺤﻠﻘﺔ ﻭﻋﺒﺎﺭﺍﺕ ﺟﺴﻢ ﺍﻟﺤﻠﻘﺔ .ﻭﻣﻦ ﻫﻨﺎ ﺍﻻﺳﻢ ﺛﺎﺑﺖ.
ﻋﺎﻣﻞﻣﻌﻘﺪ ﺁﺧﺮ ﻝﺑﻴﻨﻤﺎﺍﻟﺤﻠﻘﺎﺕ ﻫﻲ ﻣﺴﺄﻟﺔ ﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ .ﺍﻟﺤﻠﻘﺔ ﺍﻟﺘﻲ ﻻ ﺗﻨﺘﻬﻲ ﻻ ﻳﻤﻜﻦ
ﺃﻥﺗﻜﻮﻥ ﺻﺤﻴﺤﺔ ،ﻭﻓﻲ ﺍﻟﺤﻘﻴﻘﺔ ﻻ ﺗﺤﺴﺐ ﺷﻴﺉﺎً .ﺇﺫﺍ ﻛﺎﻥ Qﻫﻮ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﺍﻟﺬﻱ ﻳﺘﻢ
ﺍﻻﺣﺘﻔﺎﻅﺑﻪ ﻓﻮﺭ ﺧﺮﻭﺝ ﺍﻟﺤﻠﻘﺔ ،ﻓﺈﻥ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ Pﻟﻠﺤﻠﻘﺔ ﻫﻮ ﺍﻟﺬﻱ ﻳﻀﻤﻦ Qﻋﻨﺪ ﺧﺮﻭﺝ
ﺍﻟﺤﻠﻘﺔﻭﻳﻀﻤﻦ ﺃﻳﻀﺎً ﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ.
ﻑ=< ﺃﻧﺎ
{}I and B{ S }I
ﺗﻨﺘﻬﻲﺍﻟﺤﻠﻘﺔ B(( =< Q
)I and )not
ﺇﺫﺍﻗﺎﻣﺖ ﺣﻠﻘﺔ ﺑﺤﺴﺎﺏ ﺳﻠﺴﻠﺔ ﻣﻦ ﺍﻟﻘﻴﻢ ﺍﻟﺮﻗﻤﻴﺔ ،ﻓﻘﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ
ﺣﻠﻘﺔﺛﺎﺑﺘﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻬﺞ ﻳﺴﺘﺨﺪﻡ ﻟﺘﺤﺪﻳﺪ ﺍﻟﻔﺮﺿﻴﺔ ﺍﻻﺳﺘﻘﺮﺍﺉﻴﺔ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺤﺚ
ﺍﻟﺮﻳﺎﺿﻲﻹﺛﺒﺎﺕ ﺑﻴﺎﻥ ﺣﻮﻝ ﺗﺴﻠﺴﻞ ﺭﻳﺎﺿﻲ .ﻳﺘﻢ ﺣﺴﺎﺏ ﺍﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻋﺪﺩ ﺍﻟﺘﻜﺮﺍﺭﺍﺕ ﻭﺍﻟﺸﺮﻁ
ﺍﻟﻤﺴﺒﻖﻟﺠﺴﻢ ﺍﻟﺤﻠﻘﺔ ﻟﻌﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺍﻟﺤﺎﻻﺕ ،ﻋﻠﻰ ﺃﻣﻞ ﻇﻬﻮﺭ ﻧﻤﻂ ﻳﻨﻄﺒﻖ ﻋﻠﻰ ﺍﻟﺤﺎﻟﺔ
ﺍﻟﻌﺎﻣﺔ.ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﻣﻌﺎﻟﺠﺔ ﻋﻤﻠﻴﺔ ﺇﻧﺘﺎﺝ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻛﻮﻇﻴﻔﺔ .wp ،ﻋﻠﻰ ﺍﻟﻌﻤﻮﻡ
ﺗﺬﻛﺮﺃﻧﻪ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻼﻣﺔ ﺍﻟﺘﺴﺎﻭﻱ ﻟﻐﺮﺿﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ ﻫﻨﺎ .ﻓﻲ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ ،ﻓﻬﺬﺍ ﻳﻌﻨﻲ
ﺍﻟﻤﺴﺎﻭﺍﺓﺍﻟﺮﻳﺎﺿﻴﺔ ؛ ﺍﻟﺘﺄﻛﻴﺪﺍﺕ ﺍﻟﺨﺎﺭﺟﻴﺔ ،ﻓﻬﺬﺍ ﻳﻌﻨﻲ ﻋﺎﻣﻞ ﺍﻟﺘﺨﺼﻴﺺ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 156
}ﺹ = ﺱ{
ﻟﺜﻼﺛﺔﺗﻜﺮﺍﺭﺍﺕ ،ﻫﻮ
) wpﺹ = ﺹ } ، 1 +ﺹ = ﺱ } = ({2 -ﺹ = 1 +ﺱ ، {2 -ﺃﻭ }ﺹ = ﺱ {3 -
ﻣﻦﺍﻟﻮﺍﺿﺢ ﺍﻵﻥ ﺃﻥ }ﺹ >ﺱ{ﻳﻜﻔﻲ ﻟﺤﺎﻻﺕ ﺗﻜﺮﺍﺭ ﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ .ﺩﻣﺞ ﻫﺬﺍ ﻣﻊ }ﺹ = ﺱ{
ﺑﺎﻟﻨﺴﺒﺔﻟﺤﺎﻟﺔ ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﺼﻔﺮﻳﺔ ،ﻧﺤﺼﻞ ﻋﻠﻰ }ﺹ >= ﺱ{ ،ﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﻠﺤﻠﻘﺔ
ﺍﻟﺜﺎﺑﺘﺔ.ﺷﺮﻁ ﻣﺴﺒﻖ ﻝﺑﻴﻨﻤﺎﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﺒﻴﺎﻥ ﻣﻦ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ .ﻓﻲ ﺍﻟﻮﺍﻗﻊ ،ﻳﻤﻜﻦ
ﺍﺳﺘﺨﺪﺍﻣﻲﻛﺸﺮﻁ ﻣﺴﺒﻖ .P ،
ﻳﺠﺐﺃﻥ ﻧﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﺧﺘﻴﺎﺭﻧﺎ ﻳﻔﻲ ﺑﺎﻟﻤﻌﺎﻳﻴﺮ ﺍﻷﺭﺑﻌﺔ ﻟـ Iﻟﺤﻠﻘﺔ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺨﺎﺻﺔ ﺑﻨﺎ .ﺃﻭﻻ ً،
ﻷﻥ .P = I ، P =< Iﺍﻟﻤﻄﻠﺐ ﺍﻟﺜﺎﻧﻲ ﻫﻮ ﺃﻧﻪ ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﺻﺤﻴﺤﺎً
ﻓﻲﻣﺜﺎﻟﻨﺎ ﻟﺪﻳﻨﺎ
ﻧﺤﻦﻧﺤﺼﻞ }ﺹ => 1 +ﺱ{ ،ﻭﻫﻮ ﻣﺎ ﻳﻌﺎﺩﻝ }ﺹ >ﺱ{ ،ﻭﻫﻮ ﻣﺎ ﻳﻌﻨﻴﻪ ﺿﻤﻨﻴﺎً }ﺹ >= ﺱﻭ
ﺹ>< ﺱ{.ﻟﺬﻟﻚ ،ﺗﻢ ﺇﺛﺒﺎﺕ ﺍﻟﺒﻴﺎﻥ ﺍﻟﺴﺎﺑﻖ.
ﺑﻌﺪﺫﻟﻚ ،ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻟﺪﻳﻨﺎ
ﻓﻲﻣﺜﺎﻟﻨﺎ ﻟﺪﻳﻨﺎ
})ﺹ >= ﺱ(ﻭ ﻻ )(y >< x({ =< }y = x{ })y >= xﻭ ){= x
y = x({ =< }y = x{ }y = x{ =< }y
ﻟﺬﺍ ،ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻫﺬﺍ ﺻﺤﻴﺢ .ﺑﻌﺪ ﺫﻟﻚ ،ﻳﺠﺐ ﺍﻟﻨﻈﺮ ﻓﻲ ﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ .ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ،
ﺍﻟﺴﺆﺍﻝﻫﻮ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺤﻠﻘﺔ
ﻳﻨﺘﻬﻲ.ﻣﺸﻴﺮﺍً ﺇﻟﻰ ﺫﻟﻚxﻭﺫﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺃﻥ ﺗﻜﻮﻥ ﻣﺘﻐﻴﺮﺍﺕ ﻋﺪﺩ ﺻﺤﻴﺢ ،ﻓﻤﻦ ﺍﻟﺴﻬﻞ ﺃﻥ
ﻧﺮﻯﺃﻥ ﻫﺬﻩ ﺍﻟﺤﻠﻘﺔ ﻻ ﺗﻨﺘﻬﻲ .ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻳﻀﻤﻦ ﺫﻟﻚﺫﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ﻟﻴﺲ ﺃﻛﺒﺮ ﻣﻦx.ﺯﻳﺎﺩﺍﺕ
ﺟﺴﻢﺍﻟﺤﻠﻘﺔﺫﻣﻊ ﻛﻞ ﺗﻜﺮﺍﺭ ،ﺣﺘﻰ
ﺫﻣﺴﺎﻭﻱ ﻝx.ﻣﻬﻤﺎ ﻛﺎﻥ ﺃﺻﻐﺮ ﺑﻜﺜﻴﺮﺫﻫﻮ ﻣﻦxﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ،ﺳﺘﺼﺒﺢ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﻣﺴﺎﻭﻳﺔ ﻟـx.
ﻟﺬﻟﻚﺳﺘﻨﺘﻬﻲ ﺍﻟﺤﻠﻘﺔ .ﻧﻈﺮﺍً ﻷﻥ ﺍﺧﺘﻴﺎﺭﻧﺎ ﻟـ Iﻳﻠﺒﻲ ﺟﻤﻴﻊ ﺍﻟﻤﻌﺎﻳﻴﺮ ﺍﻷﺭﺑﻌﺔ ،ﻓﻬﻮ ﺷﺮﻁ ﻣﺮُﺽ ٍ
ﻟﻠﺤﻠﻘﺔﺍﻟﺜﺎﺑﺘﺔ ﻭﺍﻟﺤﻠﻘﺔ.
ﺍﻟﻌﻤﻠﻴﺔﺍﻟﺴﺎﺑﻘﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﺤﺴﺎﺏ ﺍﻟﺜﺎﺑﺖ ﻟﻠﺤﻠﻘﺔ ﻻ ﺗﻨﺘﺞ ﺩﺍﺉﻤﺎً ﺗﺄﻛﻴﺪﺍً ﻫﻮ ﺃﺿﻌﻒ
ﺷﺮﻁﻣﺴﺒﻖ )ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻬﺎ ﺗﻔﻌﻞ ﺫﻟﻚ ﻓﻲ ﺍﻟﻤﺜﺎﻝ(.
ﻛﻤﺜﺎﻝﺁﺧﺮ ﻹﻳﺠﺎﺩ ﺣﻠﻘﺔ ﺛﺎﺑﺘﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻻﺳﺘﻘﺮﺍء ﺍﻟﺮﻳﺎﺿﻲ ،
ﺿﻊﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﻋﺒﺎﺭﺓ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﻛﻤﺎﻓﻲ ﺍﻟﺴﺎﺑﻖ ،ﻧﺴﺘﺨﺪﻡ ﺑﺪﻳﻬﻴﺔ ﺍﻟﺘﺨﺼﻴﺺ ﻟﻤﺤﺎﻭﻟﺔ ﺇﻳﺠﺎﺩ ﺣﻠﻘﺔ ﺛﺎﺑﺘﺔ ﻭﺷﺮﻁ ﻣﺴﺒﻖ
ﻟﻠﺤﻠﻘﺔ.ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺘﻜﺮﺍﺭ ﺍﻟﺼﻔﺮﻱ ،ﻳﻜﻮﻥ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺍﻷﺿﻌﻒ }ﻕ = .{1ﻟﺘﻜﺮﺍﺭ ﻭﺍﺣﺪ ،ﻫﻮ
ﻛﺬﻟﻚ
ﻟﺜﻼﺛﺔﺗﻜﺮﺍﺭﺍﺕ ،ﻫﻮ
ﻳﻤﻜﻦﺇﺛﺒﺎﺗﻪ ﺑﺴﻬﻮﻟﺔ ،ﻭﻫﺬﺍ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺃﻭﺳﻊ ﺑﻜﺜﻴﺮ ﻣﻦ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺤﺴﻮﺏ ﻣﺴﺒﻘﺎً .ﻳﺘﻢ
ﺍﺳﺘﻴﻔﺎءﺍﻟﺤﻠﻘﺔ ﻭﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻷﻱ ﻗﻴﻤﺔ ﻣﻮﺟﺒﺔ ﻟـﺱ،ﻟﻴﺲ ﻓﻘﻂ ﻗﻮﻯ ، 2ﻛﻤﺎ ﺗﺸﻴﺮ
ﺍﻟﻌﻤﻠﻴﺔ.ﺑﺴﺒﺐ ﻗﺎﻋﺪﺓ ﺍﻟﻌﻮﺍﻗﺐ ،ﻓﺈﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺷﺮﻁ ﻣﺴﺒﻖ ﺃﻗﻮﻯ ﻣﻦ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ
ﻻﻳﺒﻄﻞ ﺍﻟﺪﻟﻴﻞ.
ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺛﻮﺍﺑﺖ ﺍﻟﺤﻠﻘﺔ ﻟﻴﺲ ﺑﺎﻷﻣﺮ ﺍﻟﺴﻬﻞ ﺩﺍﺉﻤﺎً .ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﻓﻬﻢ ﻃﺒﻴﻌﺔ ﻫﺬﻩ
ﺍﻟﺜﻮﺍﺑﺖ.ﺃﻭﻻ ً ،ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ ﻫﻲ ﻧﺴﺨﺔ ﺿﻌﻴﻔﺔ ﻣﻦ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻟﻠﺤﻠﻘﺔ ﻭﺃﻳﻀﺎً ﺷﺮﻁ
ﻣﺴﺒﻖﻟﻠﺤﻠﻘﺔ .ﻟﺬﻟﻚ ،ﻳﺠﺐ ﺃﻥ ﺃﻛﻮﻥ ﺿﻌﻴﻔﺎً ﺑﻤﺎ ﻳﻜﻔﻲ ﻷﻛﻮﻥ ﺭﺍﺿﻴﺎً ﻗﺒﻞ ﺑﺪء ﺗﻨﻔﻴﺬ ﺍﻟﺤﻠﻘﺔ ،
ﻭﻟﻜﻦﻋﻨﺪ ﺩﻣﺠﻬﺎ ﻣﻊ ﺣﺎﻟﺔ ﺧﺮﻭﺝ ﺍﻟﺤﻠﻘﺔ ،ﻳﺠﺐ ﺃﻥ ﺗﻜﻮﻥ ﻗﻮﻳﺔ ﺑﻤﺎ ﻳﻜﻔﻲ ﻟﻔﺮﺽ ﺣﻘﻴﻘﺔ ﺍﻟﺤﺎﻟﺔ
ﺍﻟﻼﺣﻘﺔ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 158
ﻧﻈﺮﺍًﻟﺼﻌﻮﺑﺔ ﺇﺛﺒﺎﺕ ﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ ،ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻢ ﺗﺠﺎﻫﻞ ﻫﺬﺍ ﺍﻟﻤﻄﻠﺐ .ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ
ﺇﻇﻬﺎﺭﺇﻧﻬﺎء ﺍﻟﺤﻠﻘﺔ ،ﻓﺴﻴﺘﻢ ﺍﺳﺘﺪﻋﺎء ﺍﻟﻮﺻﻒ ﺍﻟﺒﺪﻳﻬﻲ ﻟﻠﺤﻠﻘﺔﺻﺤﺔ ﺗﺎﻣﺔ .ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ
ﺍﻟﻤﻤﻜﻦﺍﺳﺘﻴﻔﺎء ﺍﻟﺸﺮﻭﻁ ﺍﻷﺧﺮﻯ ﻭﻟﻜﻦ ﺍﻹﻧﻬﺎء ﻏﻴﺮ ﻣﻀﻤﻮﻥ ،ﻳﺘﻢ ﺍﺳﺘﺪﻋﺎﺅﻩﺻﻮﺍﺏ ﺟﺰﺉﻲ.
ﻓﻲﺍﻟﺤﻠﻘﺎﺕ ﺍﻷﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً ،ﻳﺘﻄﻠﺐ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﺣﻠﻘﺔ ﺛﺎﺑﺘﺔ ﺛﺎﺑﺘﺔ ،ﺣﺘﻰ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺼﺤﺔ
ﺍﻟﺠﺰﺉﻴﺔ ،ﻗﺪﺭﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺍﻟﺒﺮﺍﻋﺔ .ﻷﻥ ﺣﺴﺎﺏ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻟـﺑﻴﻨﻤﺎﺗﻌﺘﻤﺪ ﺍﻟﺤﻠﻘﺔ ﻋﻠﻰ ﺇﻳﺠﺎﺩ
ﺣﻠﻘﺔﺛﺎﺑﺘﺔ ﺗﺜﺒﺖ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺑﺎﺳﺘﺨﺪﺍﻡﺑﻴﻨﻤﺎﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺍﻟﺤﻠﻘﺎﺕ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﺩﻻﻻﺕ
ﺑﺪﻳﻬﻴﺔﺻﻌﺒﺔ.
3.5.3.7ﺑﺮﻫﺎﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ
ﻳﻮﻓﺮﻫﺬﺍ ﺍﻟﻘﺴﻢ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺑﺮﻧﺎﻣﺠﻴﻦ ﺑﺴﻴﻄﻴﻦ .ﺍﻟﻤﺜﺎﻝ ﺍﻷﻭﻝ ﻹﺛﺒﺎﺕ
ﺍﻟﺼﻮﺍﺏﻫﻮ ﺑﺮﻧﺎﻣﺞ ﻗﺼﻴﺮ ﺟﺪﺍً ،ﻳﺘﻜﻮﻥ ﻣﻦ ﺳﻠﺴﻠﺔ ﻣﻦ ﺛﻼﺙ ﻋﺒﺎﺭﺍﺕ ﻣﻬﻤﺔ ﺗﺘﺒﺎﺩﻝ ﻗﻴﻢ
ﻣﺘﻐﻴﺮﻳﻦ.
ﺱ= ﺹ ؛
ﺫ= ﺭ ؛
{}x = B AND y = A
ﺑﻌﺪﺫﻟﻚ ،ﻧﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﺍﻟﺠﺪﻳﺪ ﻛﺸﺮﻁ ﻻﺣﻖ ﻟﻠﺒﻴﺎﻥ ﺍﻷﻭﺳﻂ ﻭﻧﺤﺴﺐ
ﺷﺮﻃﻪﺍﻟﻤﺴﺒﻖ ،ﻭﻫﻮ
ﺑﻌﺪﺫﻟﻚ ،ﻧﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﺘﺄﻛﻴﺪ ﺍﻟﺠﺪﻳﺪ ﺑﺎﻋﺘﺒﺎﺭﻩ ﺍﻟﺸﺮﻁ ﺍﻟﻼﺣﻖ ﻓﻲ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻷﻭﻟﻰ ﻭﻧﻄﺒﻖ
ﺑﺪﻳﻬﻴﺔﺍﻹﺳﻨﺎﺩ ،ﻭﺍﻟﺘﻲ ﻳﻨﺘﺞ ﻋﻨﻬﺎ
}ﺹ = ﺏ ﻭ ﺱ = ﺃ{
ﺍﻟﻤﺜﺎﻝﺍﻟﺘﺎﻟﻲ ﻫﻮ ﺩﻟﻴﻞ ﻋﻠﻰ ﺻﺤﺔ ﺑﺮﻧﺎﻣﺞ ﺍﻟﻜﻮﺩ ﺍﻟﻜﺎﺫﺏ ﺍﻟﺬﻱ ﻳﺤﺴﺐ ﺩﺍﻟﺔ ﺍﻟﻌﻮﺍﻣﻞ.
159 3.5ﻭﺻﻒ ﻣﻌﺎﻧﻲ ﺍﻟﺒﺮﺍﻣﺞ :ﺩﻻﻻﺕ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ
}ﻥ< = {0
ﺍﻟﻌﺪ= ﻥ ؛
ﺣﻘﻴﻘﺔ= 1؛
ﺃﺛﻨﺎءﺍﻟﻌﺪ>< 0ﻓﻌﻞ
ﺣﻘﻴﻘﺔ= ﺣﻘﻴﻘﺔ * ﻋﺪﺩ ؛ ﺍﻟﻌﺪ =
ﺍﻟﻌﺪ 1 -؛
ﻧﻬﺎﻳﺔ
}ﺣﻘﻴﻘﺔ = ﻥ!{
ﺍﻟﻄﺮﻳﻘﺔﺍﻟﻤﻮﺻﻮﻓﺔ ﺳﺎﺑﻘﺎً ﻹﻳﺠﺎﺩ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺜﺎﺑﺘﺔ ﻻ ﺗﻌﻤﻞ ﻟﻠﺤﻠﻘﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ .ﻣﻄﻠﻮﺏ
ﺑﻌﺾﺍﻟﺒﺮﺍﻋﺔ ﻫﻨﺎ ،ﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﺴﺎﻋﺪ ﻣﻦ ﺧﻼﻝ ﺩﺭﺍﺳﺔ ﻣﻮﺟﺰﺓ ﻟﻠﻜﻮﺩ .ﺍﻟﺤﻠﻘﺔ ﺗﺤﺴﺐ ﺩﺍﻟﺔ
ﺍﻟﻤﻀﺮﻭﺏﺑﺘﺮﺗﻴﺐ ﺍﻟﻀﺮﺏ ﺍﻷﺧﻴﺮ ﺃﻭﻻ ً؛ ﺇﻧﻪ) ،ﻥ * (1 -ﻥﻳﺘﻢ ﺃﻭﻻ ً ،ﻋﻠﻰ ﺍﻓﺘﺮﺍﺽﻥ
ﻭﻟﻜﻦﻳﺠﺐ ﻋﻠﻴﻨﺎ ﺃﻳﻀﺎً ﺃﻥ ﻧﻀﻤﻦ ﺫﻟﻚﻋﺪﺩﺩﺍﺉﻤﺎً ﻏﻴﺮ ﺳﻠﺒﻲ ،ﻭﻫﻮ ﻣﺎ ﻳﻤﻜﻨﻨﺎ ﺍﻟﻘﻴﺎﻡ ﺑﻪ ﺑﺈﺿﺎﻓﺔ
ﺫﻟﻚﺇﻟﻰ ﺍﻟﺘﺄﻛﻴﺪ ﺃﻋﻼﻩ ،ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ
ﺑﻌﺪﺫﻟﻚ ،ﻳﺠﺐ ﺃﻥ ﻧﺆﻛﺪ ﺃﻥ ﻫﺬﺍ ﻳﻠﺒﻲ ﻣﺘﻄﻠﺒﺎﺕ ﺍﻟﺜﻮﺍﺑﺖ .ﻣﺮﺓ ﺃﺧﺮﻯ ،ﻧﺴﻤﺢ ﻟﻲ ﺃﻳﻀﺎً
ﺑﺎﺳﺘﺨﺪﺍﻡ ، Pﻟﺬﺍ ﻓﺈﻥ Pﺗﻌﻨﻲ ﺑﻮﺿﻮﺡ .Iﺍﻟﺴﺆﺍﻝ ﺍﻟﺘﺎﻟﻲ ﻫﻮ
ﺃﻧﺎﻭﺏ ﻫﻮ
ﻣﻤﺎﻳﻘﻠﻞ ﺇﻟﻰ
ﻓﻲﺣﺎﻟﺘﻨﺎ ،ﻳﺠﺐ ﺃﻥ ﻧﺤﺴﺐ ﺍﻟﺸﺮﻁ ﺍﻟﻤﺴﺒﻖ ﻟﺠﺴﻢ ﺍﻟﺤﻠﻘﺔ ،ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺜﺎﺑﺖ ﻟﻠﺸﺮﻁ
ﺍﻟﻼﺣﻖ.ﻝ
ﻧﺤﺴﺐ Pﻟﻴﻜﻮﻥ
ﻣﻦﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻫﺬﺍ ﺻﺤﻴﺢ ،ﺇﻟﻰ ﻣﺘﻰﺍﻟﻌﺪ = ، 0ﺍﻟﺠﺰء ﺍﻷﻭﻝ ﻫﻮ ﺑﺎﻟﻀﺒﻂ ﺗﻌﺮﻳﻒ ﻋﺎﻣﻠﻲ .ﻟﺬﺍ ،
ﻓﺈﻥﺍﺧﺘﻴﺎﺭﻧﺎ ﻟـ Iﻳﻠﺒﻲ ﻣﺘﻄﻠﺒﺎﺕ ﺣﻠﻘﺔ ﺛﺎﺑﺘﺔ .ﺍﻵﻥ ﻳﻤﻜﻨﻨﺎ ﺍﺳﺘﺨﺪﺍﻡ ) Pﻭﻫﻮ ﻧﻔﺲ (Iﻣﻦﺑﻴﻨﻤﺎ
ﻛﺸﺮﻁﻻﺣﻖ ﻟﻠﻤﻬﻤﺔ ﺍﻟﺜﺎﻧﻴﺔ ﻟﻠﺒﺮﻧﺎﻣﺞ
ﺍﻟﺬﻱﻳﻨﺘﺞ ﻋﻦ P
ﺗﻨﺘﺞﻝ P
3.5.3.8ﺍﻟﺘﻘﻴﻴﻢ
ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ،ﻟﺘﺤﺪﻳﺪ ﺩﻻﻻﺕ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻛﺎﻣﻠﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺒﺪﻳﻬﻴﺔ ،ﻳﺠﺐ ﺃﻥ
ﺗﻜﻮﻥﻫﻨﺎﻙ ﺑﺪﻳﻬﻴﺔ ﺃﻭ ﻗﺎﻋﺪﺓ ﺍﺳﺘﻨﺘﺎﺝ ﻟﻜﻞ ﻧﻮﻉ ﺑﻴﺎﻥ ﻓﻲ ﺍﻟﻠﻐﺔ .ﺗﺤﺪﻳﺪ ﺍﻟﺒﺪﻳﻬﻴﺎﺕ ﺃﻭ ﻗﻮﺍﻋﺪ
ﺍﻻﺳﺘﺪﻻﻝﻝ
161 ﻣﻼﺣﻈﺎﺕﺑﺒﻠﻴﻮﻏﺮﺍﻓﻴﺔ
ﺃﺛﺒﺘﺖﺑﻌﺾ ﻋﺒﺎﺭﺍﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺃﻧﻬﺎ ﻣﻬﻤﺔ ﺻﻌﺒﺔ .ﻳﺘﻤﺜﻞ ﺃﺣﺪ ﺍﻟﺤﻠﻮﻝ ﺍﻟﻮﺍﺿﺤﺔ ﻟﻬﺬﻩ
ﺍﻟﻤﺸﻜﻠﺔﻓﻲ ﺗﺼﻤﻴﻢ ﺍﻟﻠﻐﺔ ﻣﻊ ﻭﺿﻊ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺒﺪﻳﻬﻴﺔ ﻓﻲ ﺍﻻﻋﺘﺒﺎﺭ ،ﺑﺤﻴﺚ ﻳﺘﻢ ﺗﻀﻤﻴﻦ
ﺍﻟﻌﺒﺎﺭﺍﺕﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ ﺍﻟﺒﺪﻳﻬﻴﺎﺕ ﺃﻭ ﻗﻮﺍﻋﺪ ﺍﻻﺳﺘﺪﻻﻝ ﻣﻦ ﺃﺟﻠﻬﺎ .ﻟﺴﻮء ﺍﻟﺤﻆ ،ﻓﺈﻥ ﻣﺜﻞ
ﻫﺬﻩﺍﻟﻠﻐﺔ ﺳﺘﺘﺠﺎﻫﻞ ﺑﺎﻟﻀﺮﻭﺭﺓ ﺑﻌﺾ ﺍﻷﺟﺰﺍء ﺍﻟﻤﻔﻴﺪﺓ ﻭﺍﻟﻘﻮﻳﺔ.
ﺗﻌﺪﺩﻻﻻﺕ ﺃﻛﺴﻴﻮﻣﺎﺗﻴﻚ ﺃﺩﺍﺓ ﻗﻮﻳﺔ ﻟﻠﺒﺤﺚ ﻓﻲ ﺇﺛﺒﺎﺗﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ،ﻭﺗﻮﻓﺮ ﺇﻃﺎﺭﺍً
ﻣﻤﺘﺎﺯﺍًﻳﻤﻜﻦ ﻣﻦ ﺧﻼﻟﻪ ﺍﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺍﻟﺒﺮﺍﻣﺞ ،ﺳﻮﺍء ﺃﺛﻨﺎء ﺑﻨﺎﺉﻬﺎ ﺃﻭ ﻻﺣﻘﺎً .ﻭﻣﻊ ﺫﻟﻚ ،ﻓﺈﻥ
ﻓﺎﺉﺪﺗﻬﺎﻓﻲ ﻭﺻﻒ ﻣﻌﻨﻰ ﻟﻐﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﻟﻤﺴﺘﺨﺪﻣﻲ ﺍﻟﻠﻐﺔ ﻭﻛﺘﺎﺏ ﺍﻟﻤﺘﺮﺟﻤﻴﻦ ﻣﺤﺪﻭﺩﺓ
ﻟﻠﻐﺎﻳﺔ.
ﻣﻠﺨﺺ
ﻗﻮﺍﻋﺪﺍﻟﺴﻤﺔ ﻫﻲ ﺻﻴﻐﺔ ﻭﺻﻔﻴﺔ ﻳﻤﻜﻦ ﺃﻥ ﺗﺼﻒ ﻛﻼ ًﻣﻦ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﻭﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ
ﻟﻠﻐﺔ.ﻗﻮﺍﻋﺪ ﺍﻟﺴﻤﺔ ﺍﻟﻨﺤﻮﻳﺔ ﻫﻲ ﺍﻣﺘﺪﺍﺩﺍﺕ ﻟﻠﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ .ﺗﺘﻜﻮﻥ ﻗﻮﺍﻋﺪ
ﺍﻟﺴﻤﺔﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻭﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺴﻤﺎﺕ ﻭﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻭﻇﺎﺉﻒ ﺣﺴﺎﺏ ﺍﻟﺴﻤﺎﺕ
ﻭﻣﺠﻤﻮﻋﺔﻣﻦ ﺍﻟﻤﺴﻨﺪﺍﺕ ﺍﻟﺘﻲ ﺗﺼﻒ ﻣﻌﺎً ﻗﻮﺍﻋﺪ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺜﺎﺑﺘﺔ.
ﻳﻘﺪﻡﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻣﻘﺪﻣﺔ ﻣﻮﺟﺰﺓ ﻟﺜﻼﺙ ﻃﺮﻕ ﻟﻠﻮﺻﻒ ﺍﻟﺪﻻﻟﻲ :ﺍﻟﺘﺸﻐﻴﻠﻲ ،ﻭﺍﻟﺪﻻﻟﺔ ،
ﻭﺍﻟﺒﺪﻳﻬﻴﺔ.ﺩﻻﻻﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻫﻲ ﻃﺮﻳﻘﺔ ﻟﻮﺻﻒ ﻣﻌﻨﻰ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ ﻣﻦ ﺣﻴﺚ ﺗﺄﺛﻴﺮﻫﺎ ﻋﻠﻰ
ﺁﻟﺔﻣﺜﺎﻟﻴﺔ .ﻓﻲ ﺩﻻﻻﺕ ﺍﻟﺪﻻﻟﺔ ،ﺗﺴُﺘﺨﺪﻡ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ ﻟﺘﻤﺜﻴﻞ ﻣﻌﺎﻧﻲ ﺗﺮﺍﻛﻴﺐ ﺍﻟﻠﻐﺔ.
ﻳﺘﻢﺗﺤﻮﻳﻞ ﻛﻴﺎﻧﺎﺕ ﺍﻟﻠﻐﺔ ﺇﻟﻰ ﻫﺬﻩ ﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺮﻳﺎﺿﻴﺔ ﺫﺍﺕ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﻌﻮﺩﻳﺔ .ﺗﻢ ﺍﺑﺘﻜﺎﺭ
ﺩﻻﻻﺕﺃﻛﺴﻴﻮﻣﺎﺗﻴﻚ ،ﺍﻟﺘﻲ ﺗﻘﻮﻡ ﻋﻠﻰ ﺍﻟﻤﻨﻄﻖ ﺍﻟﺼﻮﺭﻱ ،ﻛﺄﺩﺍﺓ ﻹﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ.
ﺣﻮﺍﺷﻲﺑﺒﻠﻴﻮﻏﺮﺍﻓﻴﺔ
ﺗﻤﺖﻣﻨﺎﻗﺸﺔ ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﻟﻴﺔ ﻣﻦ ﺍﻟﺴﻴﺎﻕ ﻭ BNFﺑﺪﻗﺔ ﻓﻲ
Cleavelandﻭ (.Uzgalis )1976
ﺑﺪﺃﺍﻟﺒﺤﺚ ﻓﻲ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺒﺪﻳﻬﻴﺔ ﺑﻮﺍﺳﻄﺔ ( Floyd )1967ﻭﻃﻮﺭﻩ ( .Hoare )1969ﺗﻢ
ﻭﺻﻒﺩﻻﻻﺕ ﺟﺰء ﻛﺒﻴﺮ ﻣﻦ ﺑﺎﺳﻜﺎﻝ ﺑﻮﺍﺳﻄﺔ ( Hoare and Wirth )1973ﺑﺎﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ
ﺍﻟﻄﺮﻳﻘﺔ.ﺍﻷﺟﺰﺍء ﺍﻟﺘﻲ ﻟﻢ ﻳﻜﻤﻠﻮﻫﺎ ﺗﻀﻤﻨﺖ ﺁﺛﺎﺭﺍً ﺟﺎﻧﺒﻴﺔ ﻭﻇﻴﻔﻴﺔ ﻭﺑﻴﺎﻧﺎﺕ ﺍﻻﻧﺘﻘﺎﻝ .ﺗﻢ ﺍﻟﻌﺜﻮﺭ
ﻋﻠﻰﻫﺬﻩ ﻟﺘﻜﻮﻥ ﺍﻷﻛﺜﺮ ﺻﻌﻮﺑﺔ ﻓﻲ ﺍﻟﻮﺻﻒ.
ﺍﻟﻔﺼﻞ 3ﻭﺻﻒ ﺍﻟﻨﺤﻮ ﻭﻋﻠﻢ ﺍﻟﺪﻻﻟﺔ 162
ﺗﻢﻭﺻﻒ ﺗﻘﻨﻴﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻤﺴﺒﻘﺔ ﻭﺍﻟﺸﺮﻭﻁ ﺍﻟﻼﺣﻘﺔ ﺃﺛﻨﺎء ﺗﻄﻮﻳﺮ ﺍﻟﺒﺮﺍﻣﺞ ﻣﻦ
ﻗﺒﻞ ( Dijkstra )1976ﻭﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﺃﻳﻀﺎً ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ (.Gries )1981
ﻳﻤﻜﻦﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻣﻘﺪﻣﺎﺕ ﺟﻴﺪﺓ ﻟﻠﺪﻻﻻﺕ ﺍﻟﺪﻻﻟﻴﺔ ﻓﻲ ( Gordon )1979ﻭ (Stoy )1977
.ﻳﻤﻜﻦ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻣﻘﺪﻣﺎﺕ ﻟﺠﻤﻴﻊ ﻃﺮﻕ ﻭﺻﻒ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺘﻲ ﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻓﻲ ﻫﺬﺍ
ﺍﻟﻔﺼﻞﻓﻲ ( .Marcotty et al. )1976ﻣﺮﺟﻊ ﺟﻴﺪ ﺁﺧﺮ ﻟﻠﻜﺜﻴﺮ ﻣﻦ ﻣﻮﺍﺩ ﺍﻟﻔﺼﻞ ﻫﻮ ﺑﺎﻏﺎﻥ )
.(1981ﺷﻜﻞ ﺍﻟﺪﻭﺍﻝ ﺍﻟﺪﻻﻟﻴﺔ ﺍﻟﺪﻻﻟﻴﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻣﺸﺎﺑﻪ ﻟﺘﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﻣﺎﻳﺮ )(1990
.
ﺭﺍﺟﻊﺍﻷﺳﺉﻠﺔ
.1ﺗﻌﺮﻳﻒﺑﻨﺎء ﺍﻟﺠﻤﻠﺔﻭﺩﻻﻻﺕ.
.2ﻟﻤﻦ ﺗﻮﺻﻴﻒ ﺍﻟﻠﻐﺔ؟
.3ﻭﺻﻒ ﻋﻤﻠﻴﺔ ﻣﻨﺸﺊ ﺍﻟﻠﻐﺔ ﺍﻟﻌﺎﻡ.
.4ﻭﺻﻒ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻠﻐﺔ ﺍﻟﻌﺎﻣﺔ.
.5ﻣﺎ ﻫﻮ ﺍﻟﻔﺮﻕ ﺑﻴﻦ ﺍﻟﺠﻤﻠﺔ ﻭﺍﻟﺼﻴﻐﺔ ﺍﻟﺠﺰﺉﻴﺔ؟
.6ﺗﺤﺪﻳﺪ ﻗﺎﻋﺪﺓ ﺍﻟﻨﺤﻮ ﺍﻟﻌﻮﺩﻱ ﺍﻷﻳﺴﺮ.
.7ﻣﺎ ﻫﻲ ﺍﻻﻣﺘﺪﺍﺩﺍﺕ ﺍﻟﺜﻼﺛﺔ ﺍﻟﻤﺸﺘﺮﻛﺔ ﻟﻤﻌﻈﻢ EBNFs؟
.8ﻳﻤﻴﺰ ﺑﻴﻦ ﺍﻟﺪﻻﻻﺕ ﺍﻟﺴﺎﻛﻨﺔ ﻭﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ.
.9ﻣﺎ ﺍﻟﻐﺮﺽ ﺍﻟﺬﻱ ﻳﺨﺪﻣﻪ ﺍﻟﻤﺴﻨﺪ ﻓﻲ ﻗﻮﺍﻋﺪ ﺍﻟﻨﺤﻮ ﺍﻟﺼﻔﻴﺔ؟
.10ﻣﺎ ﻫﻮ ﺍﻟﻔﺮﻕ ﺑﻴﻦ ﺍﻟﺴﻤﺔ ﺍﻟﻤﺮﻛﺒﺔ ﻭﺍﻟﻤﻮﺭﻭﺛﺔ؟
.11ﻛﻴﻒ ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﺗﺮﺗﻴﺐ ﺗﻘﻴﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻟﻸﺷﺠﺎﺭ ﻓﻲ ﻗﻮﺍﻋﺪ ﻧﺤﻮﻳﺔ ﻟﺨﺎﺻﻴﺔ ﻣﻌﻴﻨﺔ؟
.26ﺍﺷﺮﺡ ﻣﺎ ﺗﻌﻨﻴﻪ ﺍﻟﺸﺮﻭﻁ ﺍﻟﻤﺴﺒﻘﺔ ﻭﺍﻟﺸﺮﻭﻁ ﺍﻟﻼﺣﻘﺔ ﻟﺒﻴﺎﻥ ﻣﻌﻴﻦ ﻓﻲ ﺩﻻﻻﺕ ﺑﺪﻳﻬﻴﺔ.
ﺗﻢﺿﺒﻂ ﺍﻟﻤﺸﻜﻠﺔ
.1ﺍﻟﻨﻤﻮﺫﺟﺎﻥ ﺍﻟﺮﻳﺎﺿﻴﺎﻥ ﻟﻮﺻﻒ ﺍﻟﻠﻐﺔ ﻫﻤﺎ ﺍﻟﺘﻮﻟﻴﺪ ﻭﺍﻻﻋﺘﺮﺍﻑ .ﺻﻒ ﻛﻴﻒ ﻳﻤﻜﻦ ﻟﻜﻞ ﻣﻨﻬﺎ
ﺗﺤﺪﻳﺪﺑﻨﺎء ﺟﻤﻠﺔ ﻟﻐﺔ ﺍﻟﺒﺮﻣﺠﺔ.
ﺃ.ﺑﺎﺏ
ﺏbbbab.
ﺝ.ﺑﻌﺎﺍﺍﺍ
ﺩ.ﺑﺎﺑﺎﺏ
.12ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﺘﺎﻟﻴﺔ→<S> :ﺃ
> <Sﺝ > | <B< | >Aﺏ >→<Aﺝ
> | <Aﺝ
<→>Bﺩ | ><A
ﺃﻱﻣﻦ ﺍﻟﺠﻤﻞ ﺍﻟﺘﺎﻟﻴﺔ ﻣﻜﺘﻮﺑﺔ ﺑﺎﻟﻠﻐﺔ ﺍﻟﻨﺎﺗﺠﺔ ﻋﻦ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ؟
ﺃ.ﺍ ﺏ ﺕ ﺙ
ﺏacccbd.
ﺝacccbcc.
ﺩACD.
ﻩaccc.
.13ﺍﻛﺘﺐ ﻗﻮﺍﻋﺪ ﺍﻟﻠﻐﺔ ﺗﺘﻜﻮﻥ ﻣﻦ ﺳﻼﺳﻞ ﻟﻬﺎﻥ ﻧﺴﺦ ﻣﻦ ﺍﻟﺤﺮﻑ ﺃ ﻣﺘﺒﻮﻋﺎً ﺑﻨﻔﺲ ﻋﺪﺩ ﻧﺴﺦ
ﺍﻟﺤﺮﻑﺏ ،ﺣﻴﺚﻥ< .0ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ،ﺍﻟﺴﻼﺳﻞ ، abﻭ ، aaaabbbbﻭ
aaaaaaaabbbbbbbbﻫﻲ ﻓﻲ ﺍﻟﻠﻐﺔ ﻭﻟﻜﻦ ﻻ ﺗﻮﺟﺪ ﺣﺮﻭﻑ ، aﻭ ، abbﻭ ، baﻭ
.aaabb
.14ﺍﺭﺳﻢ ﺷﺠﺮﺍﺕ ﺗﺤﻠﻴﻞ ﻟﻠﺠﻤﻞ aabbﻭ ، aaaabbbbﻛﻤﺎ ﻫﻲ ﻣﺸﺘﻘﺔ ﻣﻦ ﻗﻮﺍﻋﺪ
ﺍﻟﻤﺴﺄﻟﺔ.13
165 ﺗﻢﺿﺒﻂ ﺍﻟﻤﺸﻜﻠﺔ
ﺃ→ﺃ ]ﺏ[ ﺃ
.18ﻣﺎ ﻫﻮ ﺍﻟﻔﺮﻕ ﺑﻴﻦ ﺍﻟﺴﻤﺔ ﺍﻟﺠﻮﻫﺮﻳﺔ ﻭﺍﻟﺴﻤﺔ ﺍﻟﻤﺮﻛﺒﺔ ﻏﻴﺮ ﺍﻟﺪﺍﺧﻠﻴﺔ؟
.19ﺍﻛﺘﺐ ﻗﺎﻋﺪﺓ ﻧﺤﻮﻳﺔ ﻟﻠﺨﺎﺻﻴﺔ ﻳﻜﻮﻥ ﺃﺳﺎﺳﻬﺎ BNFﻫﻮ ﺍﻟﻤﺜﺎﻝ 3.6ﻓﻲ ﺍﻟﻘﺴﻢ 3.4.5ﻭﻟﻜﻦ
ﻗﻮﺍﻋﺪﺍﻟﻠﻐﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻪ ﻫﻲ ﻛﻤﺎ ﻳﻠﻲ :ﻻ ﻳﻤﻜﻦ ﺧﻠﻂ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ،ﻭﻟﻜﻦ
ﻻﻳﻠﺰﻡ ﺃﻥ ﺗﺤﺘﻮﻱ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺺ ﻋﻠﻰ ﻧﻔﺲ ﺍﻷﻧﻮﺍﻉ ﻋﻠﻰ ﺟﺎﻧﺒﻲ ﺍﻟﻤﻬﻤﺔ ﺍﻟﻤﺸﻐﻞ ﺃﻭ
ﺍﻟﻌﺎﻣﻞ.
.20ﺍﻛﺘﺐ ﻗﻮﺍﻋﺪ ﻗﻮﺍﻋﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺠﺪﻭﻟﻴﺔ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﺃﺳﺎﺳﻬﺎ BNFﻫﻮ ﺍﻟﻤﺜﺎﻝ 3.2ﻭﻗﻮﺍﻋﺪ
ﺍﻟﻨﻮﻉﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ ﻫﻲ ﻧﻔﺴﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻣﺜﺎﻝ ﺑﻴﺎﻥ ﺍﻟﺘﺨﺼﻴﺺ ﻓﻲ ﺍﻟﻘﺴﻢ .3.4.5
ﺃ.ﺁﺩﺍﻝ
ﺏ.ﺟﺎﻓﺎﺍﻓﻌﻞ ﺍﺛﻨﺎء
ﺝ.ﺗﻌﺒﻴﺮﺍﺕ ﺟﺎﻓﺎ ﺍﻟﻤﻨﻄﻘﻴﺔ
ﺩ.ﺟﺎﻓﺎﻝ
ﻩ.ﺝﻳﺤُﻮﻝّ
-23ﺍﺣﺴﺐ ﺃﺿﻌﻒ ﺷﺮﻁ ﻣﺴﺒﻖ ﻟﻜﻞ ﻣﻦ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﺨﺼﻴﺺ ﻭﺍﻟﺸﺮﻭﻁ ﺍﻟﻼﺣﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺃ.ﻟﻮ)ﺃ == ﺏ(
ﺏ= * 2ﺃ 1 +
ﺁﺧﺮ
ﺏ= * 2ﺃ ؛
}ﺏ< {1
ﺏ.ﻟﻮ)ﺱ >ﺹ(
ﺱ= ﺱ 1 +
ﺁﺧﺮ
ﺱ= * 3ﺱ
}ﺱ >{0
ﺝ.ﻟﻮ)ﺱ< ﺹ(
ﺹ= * 2ﺱ 1 +
ﺁﺧﺮ
ﺹ= * 3ﺱ 1 -؛
}ﺹ< {3
.26ﺍﺷﺮﺡ ﺍﻟﻤﻌﺎﻳﻴﺮ ﺍﻷﺭﺑﻌﺔ ﻹﺛﺒﺎﺕ ﺻﺤﺔ ﺑﻨﺎء ﺍﻟﺤﻠﻘﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﺴﺎﺑﻘﺔ ﻟﻠﻨﻤﻮﺫﺝﺑﻴﻨﻤﺎﺏ
ﻳﻔﻌﻞﺱﻧﻬﺎﻳﺔ
.27ﺇﺛﺒﺎﺕ ﺃﻥ )ﻥ * (1 +ﺝ *ﻥ = 1
.28ﺇﺛﺒﺎﺕ ﺻﺤﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ:
}ﻥ< {0
ﺍﻟﻌﺪ= ﻥ ؛
ﺍﻟﻤﺠﻤﻮﻉ= 0؛
ﺑﻴﻨﻤﺎﺍﻟﻌﺪ >< 0ﻳﻔﻌﻞ
ﺍﻟﻤﺠﻤﻮﻉ= ﺍﻟﻤﺠﻤﻮﻉ +ﺍﻟﻌﺪ ؛
ﺍﻟﻌﺪ= ﺍﻟﻌﺪ 1 -؛ ﻧﻬﺎﻳﺔ