تفاوت اصلی بین تجزیه از بالا به پایین و پایین به بالا این است که تجزیه از بالا به پایین تجزیه را از نماد خیره به رشته ورودی انجام می دهد در حالی که تجزیه پایین به پایین تجزیه را از رشته ورودی به نماد شروع انجام می دهد. علاوه بر این، یکی دیگر از تفاوت های مهم بین تجزیه از بالا به پایین و پایین به بالا این است که تجزیه از بالا به پایین از بیشترین مشتق گیری از چپ استفاده می کند و تجزیه پایین به پایین از بیشترین مشتق گیری از راست استفاده می کند.
زبان های سطح بالا به نوشتن برنامه های کامپیوتری کمک می کنند. درک آنها توسط برنامه نویس آسان تر است اما توسط کامپیوتر نه. بنابراین، برنامه سطح بالا به کد ماشین تبدیل می شود.وظیفه کامپایلر تبدیل کد منبع قابل خواندن توسط انسان به کد ماشین قابل خواندن است. یک برنامه چندین مرحله را برای تبدیل به کد ماشین طی می کند. کل این فرآیند سیستم پردازش زبان نامیده می شود. یکی از آنها تدوین است. تجزیه و تحلیل نحو یا تجزیه کننده در کامپایلر است و وظیفه تجزیه را انجام می دهد.
تجزیه بالا به پایین چیست؟
هر زبان برنامه نویسی مجموعه ای از قوانین برای نمایش زبان دارد. تحلیلگر نحو یا تجزیه کننده رشته ورودی را می گیرد و بررسی می کند که آیا مطابق با تولیدات دستوری است یا خیر. به عبارت دیگر، گرامر باید آن رشته را با استفاده از درخت تجزیه تولید کند.
در تجزیه از بالا به پایین، تجزیه از نماد شروع انجام می شود و به رشته ورودی داده شده می رسد. قوانین تولید دستور زبان زیر را در نظر بگیرید. رشته ورودی (w) cad است.
S -> cAd
A -> ab /a
درخت تجزیه پس از انجام تجزیه بالا به پایین به شرح زیر است.
شکل 01: تجزیه درخت 1 با تجزیه از بالا به پایین
S c A d را تولید می کند و A یک b را تولید می کند. رشته cabd است. رشته مورد نیاز نیست. بنابراین، لازم است عقبگرد انجام شود، یعنی استفاده از گزینه های دیگر.
به طور مشابه، S c A d را تولید می کند. با اعمال گزینه دیگر برای A، a به دست می آید. حالا رشته مورد نیاز را می دهد. بنابراین تجزیه کننده این رشته ورودی را می پذیرد. درخت تجزیه پس از انجام تجزیه از بالا به پایین به شرح زیر است.
شکل 02: تجزیه درخت 2 با تجزیه از بالا به پایین
وقتی رشته ورودی (w) abbcde است
قوانین تولید دستور زبان زیر را در نظر بگیرید.
S -> aAbe
A -> Abc/b
B -> d
در تجزیه از بالا به پایین،
S -> aABe (جایگزین A -> Abc)
S -> aAbcBe (جایگزین A -> b)
S -> abbcBe (جایگزین B ->d)
S -> abbcde
جایگزینی ابتدا با بیشترین متغیر سمت چپ شروع می شود و سپس به سمت راست بعدی و به همین ترتیب. بنابراین، از روش اشتقاق سمت چپ پیروی می کند. علاوه بر این، مهم است که تصمیم بگیرید وقتی یک متغیر وجود دارد، چه قانون تولید را انتخاب کنید.
تجزیه از پایین به بالا چیست؟
تجزیه از پایین به بالا به روش دیگری اتفاق می افتد. تجزیه از رشته ورودی تا نماد شروع اتفاق می افتد. قوانین تولید دستور زبان زیر را در نظر بگیرید و اجازه دهید رشته ورودی w ɛ cad باشد
S -> cAd
A -> ab /a
درخت تجزیه پس از انجام تجزیه از پایین به بالا به شرح زیر است.
شکل 03: تجزیه درخت با تجزیه از پایین به بالا
رشته داده شده cad است. a توسط A تولید می شود. c، A و d ترکیب می شوند تا نماد شروع S را به دست آورند.
وقتی رشته ورودی (w) abbcde است
قوانین تولید دستور زبان زیر را در نظر بگیرید.
S -> aAbe
A -> Abc/b
B -> d
در تجزیه از پایین به بالا،
S -> aABe (جایگزین B ->d)
S -> aAde (جایگزین A -> Abc)
S -> aAbcde (جایگزینی A -> b)
S -> abbcde
تعویض ابتدا با بیشترین متغیر سمت راست شروع می شود و سپس به موقعیت چپ بعدی و غیره می رود. بنابراین، از روش اشتقاق حرکت چپ پیروی می کند.
تفاوت بین تجزیه از بالا به پایین و پایین به بالا چیست؟
تجزیه از بالا به پایین یک استراتژی تجزیه است که ابتدا به بالاترین سطح درخت تجزیه نگاه می کند و با استفاده از قوانین یک دستور زبان رسمی، درخت تجزیه را پایین می آورد. تجزیه از پایین به بالا یک استراتژی تجزیه است که ابتدا به پایین ترین سطح درخت تجزیه نگاه می کند و درخت تجزیه را با استفاده از قوانین دستور زبان رسمی کار می کند.تجزیه از نماد شروع به رشته ورودی، در تجزیه بالا به پایین انجام می شود. از سوی دیگر، تجزیه از رشته ورودی تا نماد شروع، در تجزیه پایین به بالا انجام میشود.
بعلاوه، تصمیم اصلی در تجزیه از بالا به پایین این است که انتخاب کنید از چه قانون تولید برای ساخت رشته استفاده شود، در حالی که تصمیم اصلی در تجزیه پایین به پایین این است که انتخاب کنید چه زمانی از یک قانون تولید برای کاهش رشته استفاده شود. نماد شروع را دریافت کنید. علاوه بر این، تجزیه از بالا به پایین از بیشترین اشتقاق چپ استفاده می کند و تجزیه پایین به پایین از بیشترین اشتقاق راست استفاده می کند.
خلاصه - تجزیه از بالا به پایین در مقابل پایین به بالا
تفاوت بین تجزیه از بالا به پایین و پایین به بالا در این است که تجزیه از بالا به پایین تجزیه را از نماد خیره به رشته ورودی انجام می دهد در حالی که تجزیه پایین به پایین تجزیه را از رشته ورودی به نماد شروع انجام می دهد.