Parser Grammar Engine که در اصل Parrot Grammar Engine یا به اختصار PGE نام دارد یک کامپایلر و زمان اجرا برای قوانین Perl 6 برای ماشین مجازی Parrot است.
PGE از این قوانین برای تبدیل دستور زبان تجزیه کننده به Bytecode Parrot استفاده می کند . بنابراین ، برخلاف اکثر ماشین های مجازی و ماشین های زمان اجرا ، قوانین را در یک برنامه جمع می کند که عبارات منظم را در قالب داخلی ثانویه ذخیره می کند و سپس در زمان اجرا توسط یک موتور بیان منظم تفسیر می شود. قالب قوانین استفاده شده توسط PGE می تواند هر بیان منظم و رسمی گرامرها را بیان کند و به همین ترتیب اولین حلقه در زنجیره کامپایلر برای تمام زبانهای جلوی Parrot است.
هنگام اجرای ، کد بایت تولید شده توسط PGE متن را همانطور که در قوانین ورودی شرح داده شده تجزیه می کند و یک درخت تجزیه ایجاد می کند. درخت تجزیه می تواند به طور مستقیم دستکاری شود ، یا به مرحله بعد از ابزار کامپایلر Parrot منتقل شود تا AST ایجاد کند که از آن کد تولید شود (اگر گرامر یک زبان برنامه نویسی را توصیف کند).
فرایند تجزیه را می توان به تجزیه واژگانی و تجزیه نحوی تقسیم کرد. تجزیه کننده واژگانی برای تقسیم SQL به علائم اتمی غیر قابل تقسیم ، به عنوان مثال ، استفاده می شود. با توجه به فرهنگ لغت ارائه شده توسط گویش پایگاه داده های مختلف ، آن را به کلمات کلیدی ، عبارت ، مقدار واقعی و عملگر طبقه بندی شده است. سپس SQL توسط تجزیه کننده نحوی به درخت نحوی انتزاعی تبدیل می شود.
اگرچه PGE کدی را بیرون می آورد که دستور زبان توصیف شده توسط یک قانون را تجزیه می کند و می تواند در زمان اجرا برای مدیریت دستور زبان های ساده و عبارات منظم موجود در کد استفاده شود ، اما هدف اصلی آن تجزیه زبان های سطح بالا است .
ابزار کامپایلر Parrot به چندین قسمت تقسیم شده است که PGE اولین قسمت آن است. PGE کد منبع را به تجزیه درختان تبدیل می کند . سپس درخت گرامر (TGE) این موارد را به درختان نحوی انتزاعی (AST) تبدیل می کند. پس از آن یک گذرگاه دوم (TGE) یک (PAST) را به (POST) تبدیل می کند که می تواند مستقیماً به بایت کد اجرایی تبدیل شود.