ساختار درختی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Tanhabot (بحث | مشارکت‌ها)
جز ربات: اصلاح فاصله مجازی: ها
Tanhabot (بحث | مشارکت‌ها)
جز ربات: اصلاح حمزهٔ بعد از "ه"
خط ۱:
== تعریف ==
 
یک درخت تجزیه [[درخت_(ساختار_داده)|درختی]] است که نشان دهنده یدهندهٔ ساختار دستوری(نحوی) یک رشته است. معمولا این نمایش با توجه به دستور زبان های رسمی است. دریک درخت تجزیه گره‌های داخلی، نقش های دستوری و برگ ها یا همان گره‌های خارجی کلمات مربوط به آن نقش هستند.
== کاربرد ها و مثال ها==
 
[[Image:parseTree.svg|thumb|شکل 1.یک درخت تجزیه یتجزیهٔ ساده برای جملات روزمره]]
 
[[Image:Parse_Tree.jpg|thumb| شکل 2.مثالی از درخت تجزیه برای زبان های کامپیوتری.]]
 
یکی از نیازمندیهای اساسی که در تولید برنامه­ها نیاز است، این است که بایستی از لحاظ دستوری، درستی برنامه­های نوشته شده تائید گردند. اغلب غیر ممکن است که یک برنامه یبرنامهٔ نوشته شده با زبان های کامپیوتری را به شکل اولیه نوشته شده توسط برنامه ­نویس؛ اجرا کنیم، زیرا اولاً برنامه نوشته شده به احتمال زیاد با خطاهای دستوری کاربر همراه است و ثانیاً اینکه فرم اولیه برنامه ­ها سطح بالا بوده و قابل تبدیل به کد، در همان شکل اولیه ­اش نیست. بنابراین برنامه بایستی در ابتدا به یک شکل بهتری تبدیل شود. بنابراین کامپایلرها سعی می­ کنند که برنامه نوشته شده را به یک فرم یکنوا و ساده­ تر که درخته‌ای تجزیه نام­ دارند، تبدیل کنند.
درخت تجزیه با بحث [[کامپایلر|''کامپایلرها(همگردان)'']] مرتبط است.برنامه‌ای که این چنین درخت هایی را تولید می کنند؛ تجزیه کننده (Parser ) نامیده می شوند. درخت های تجزیه ممکن است برای جملات و عبارات زبان های روزمره مورد استفاده قرار بگیرند و یا در پردازش زبان های کامپیوتری ( [[ زبان_برنامه_نویسی | زبان های برنامه نویسی ]] ) مثل:[[ زبان_برنامه_نویسی_C | C]]، [[ زبان_برنامه_نویسی_جاوا| جاوا]]، [[ زبان_برنامه_نویسی_دلفی| دلفی ]] و ... بکار گرفته شوند. کارکرد این درخت بدین صورت است که با
یک درخت تجزیه مثل دیگر [[درخت_(ساختار_داده)|درخت ها]] از یال و گره تشکیل شده است.
 
در زیر مثال هایی از این نوع درخت را می بینید. البته شکل 1، یک حالت از درخت تجزیه یتجزیهٔ این جمله است، که البته حالت های دیگری را نیز می توان متصور بود. درخت تجزیه یک ساختار کامل است که با جمله شروع می شود و به نقش های دستوری در برگ های انتهایی، پایان می یابد. البته این در صورتی درست است که که عبارتی مورد بررسی یک عبارت یا جمله از جملات روزمره باشد.
 
 
 
در مورد زبان های کامپیوتری شکل شماره یشمارهٔ 2 مثال خوبی است. در این مثال یکی از حالت های تجزیه یتجزیهٔ عبارت ''' (x/y+(10+32))-(3*(Pow(x,y)))''' را می بینید. البته در اینجا هم همان قواعد به گونه‌ای دیگر صادق است. با توجه به قواعد توافقی و همچنین نیاز می توان حالت های دیگری از تجزیه را به دست آورد.
با شروع از پایین به بالا و قرار دادن پدر هر یک از گره‌ها به عنوان عملوند ان دو گره؛ عبارت مورد نظر به دست می آید.