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

محتوای حذف‌شده محتوای افزوده‌شده
Ebrambot (بحث | مشارکت‌ها)
جز حذف پیوند به وبگاه هرزنگاری iranictnews.ir
AliBot (بحث | مشارکت‌ها)
جز ربات:اصلاح فاصلهٔ مجازی
خط ۱:
== تعریف ==
 
یک درخت تجزیه [[درخت (ساختار داده)|درختی]] است که نشان دهندهٔ ساختار دستوری(نحوی) یک رشته است. معمولامعمولاً این نمایش با توجه به دستور زبان هایزبان‌های رسمی است. دریک درخت تجزیه گره‌های داخلی، نقش هاینقش‌های دستوری و برگ هابرگ‌ها یا همان گره‌های خارجی کلمات مربوط به آن نقش هستند.
== کاربرد هاکاربردها و مثال هامثال‌ها ==
 
[[پرونده:parseTree.svg|thumb|شکل 1.یک درخت تجزیهٔ ساده برای جملات روزمره]]
خط ۸:
[[پرونده:Parse_Tree.jpg|thumb| شکل 2.مثالی از درخت تجزیه برای زبان های کامپیوتری.]]
 
یکی از نیازمندیهای اساسی که در تولید برنامه­ها نیاز است، این است که بایستی از لحاظ دستوری، درستی برنامه­های نوشته شده تائید گردند. اغلب غیر ممکن است که یک برنامهٔ نوشته شده با زبان هایزبان‌های کامپیوتری را به شکل اولیه نوشته شده توسط برنامه ­نویس؛ اجرا کنیم، زیرا اولاً برنامه نوشته شده به احتمال زیاد با خطاهای دستوری کاربر همراه است و ثانیاً اینکه فرم اولیه برنامه ­ها سطح بالا بوده و قابل تبدیل به کد، در همان شکل اولیه ­اش نیست. بنابراین برنامه بایستی در ابتدا به یک شکل بهتری تبدیل شود. بنابراین کامپایلرها سعی می­ کنند که برنامه نوشته شده را به یک فرم یکنوا و ساده­ تر که درخته‌ای تجزیه نام­ دارند، تبدیل کنند.
درخت تجزیه با بحث [[کامپایلر|''کامپایلرها(همگردان)'']] مرتبط است.برنامه‌ای که این چنین درخت هایی را تولید می‌کنند؛ تجزیه کننده (Parser ) نامیده می‌شوند. درخت های تجزیه ممکن است برای جملات و عبارات زبان های روزمره مورد استفاده قرار بگیرند و یا در پردازش زبان های کامپیوتری ( [[زبان برنامه نویسی|زبان های برنامه نویسی]] ) مثل: [[زبان برنامه نویسی C|C]]، [[زبان برنامه نویسی جاوا|جاوا]]، [[زبان برنامه نویسی دلفی|دلفی]] و ... بکار گرفته شوند. کارکرد این درخت بدین صورت است که با
یک درخت تجزیه مثل دیگر [[درخت (ساختار داده)|درخت ها]] از یال و گره تشکیل شده است.
 
در زیر مثال هایی از این نوع درخت را می بینید. البته شکل 1، یک حالت از درخت تجزیهٔ این جمله است، که البته حالت هایحالت‌های دیگری را نیز می‌توان متصور بود. درخت تجزیه یک ساختار کامل است که با جمله شروع می‌شود و به نقش هاینقش‌های دستوری در برگ هایبرگ‌های انتهایی، پایان می‌یابد. البته این در صورتی درست است که که عبارتی مورد بررسی یک عبارت یا جمله از جملات روزمره باشد.
 
 
 
در مورد زبان هایزبان‌های کامپیوتری شکل شمارهٔ 2 مثال خوبی است. در این مثال یکی از حالت هایحالت‌های تجزیهٔ عبارت ''' (x/y+(10+32))-(3*(Pow(x,y)))''' را می بینید. البته در اینجا هم همان قواعد به گونه‌ای دیگر صادق است. با توجه به قواعد توافقی و همچنین نیاز می‌توان حالت هایحالت‌های دیگری از تجزیه را به دست آورد.
با شروع از پایین به بالا و قرار دادن پدر هر یک از گره‌ها به عنوان عملوند ان دو گره؛ عبارت مورد نظر به دست می‌آید.
 
 
 
همانطور که در شکل فوق نیز می­ بینید، تمام عملگرها و توابعی که پارامتر به عنوان ورودی دریافت می ­کنند در ریشه زیردرختها قرار می­ گیرند و متغیرها، ثابتها، و توابعی که پارامتر به عنوان ورودی دریافت نمی­ کنند، در برگ هابرگ‌ها قرار داده می­ شوند. گره­ های‌های ریشه که به هیچ چیز دیگری بستگی ندارند و فرزند نیز ندارند، اصطلاحاً پایانه(Terminals) نامیده می­ شوند.
 
 
== پیوند هایپیوندهای درونی ==
* [[زبان شناسیزبان‌شناسی محاسباتی]]
* [[تحلیل‌گر نحوی]]
 
 
== پیوند هایپیوندهای بیرونی ==
* [http://courses.soleimanpour.com/web/gpparse.htm درخت تجزیه]