بسیاری از زبان های برنامه نویسی وجود دارند که ویژگی های منحصر به فرد خود را دارند. اما برای اینکه یک برنامه نوشته شده در هر کدام از آنها کار کند ، باید آن را پخش کنید. بعضی اوقات زبان های برنامه نویسی برای نیازهای خود (مثلاً پشتیبانی از اتوماسیون در برنامه های بزرگ) ایجاد می شوند و نوشتن مترجم ضروری می شود.
ضروری
- - دستور زبان طبیعی یا BNF زبان مبدا.
- - ابزار توسعه
دستورالعمل ها
مرحله 1
داده ها را برای تجزیه و تحلیل واژگانی متن به زبان مبدا آماده کنید. همه نشانه ها را در زبان لیست کنید. آنها را به دسته ها تقسیم کنید (کلمات کلیدی ، حرفهای عددی و رشته ای ، شناسه ها ، فضای خالی ، علائم نگارشی و غیره).
گام 2
یک ماژول یا زبان خوان را پیاده سازی کنید. در ورودی ، باید یک جریان داده "خام" دریافت کند ، و در خروجی لیستی از عناصر حاوی نشانه ها و شناسه های نوع آنها به ترتیب توالی در متن منبع وجود دارد. برنامه تجزیه می تواند بسیار ساده باشد " اسکنر تک سطح. اجرای بازیابی خطا منطقی نیست. با نویسه های نامعتبر باید به عنوان خطا رفتار شود.
مرحله 3
داده ها را برای تجزیه آماده کنید. براساس دستور زبان طبیعی یا BNF زبان مبدا ، دستور زبان LL1 آن را بنویسید. بر اساس این نوع دستور زبان ، یک طرح تجزیه از نظر دسته بندی نشانه های معتبر و سازه های معنایی زبان تهیه کنید.
مرحله 4
یک ماژول یا تجزیه کننده را پیاده سازی کنید. در ورودی ، باید لیستی از علائم تهیه شده در مرحله تجزیه واژگان دریافت کند. با استفاده از برنامه ای که در مرحله سه ایجاد کرده اید ، الگوریتم های بررسی نحو بازگشتی را ایجاد کنید. در صورت لزوم ، مکانیزم های بازیابی خطا را پیاده سازی کنید و برای ساختن درخت برای محاسبه توابع ، روش های کلاس ، قابلیت هایی را به الگوریتم های تجزیه اضافه کنید. با ساختار صحیح الگوریتم های تجزیه ، این قابلیت را می توان بدون هیچ مشکلی پیاده سازی کرد. با این کار نیازی به پیاده سازی آن به عنوان یک ماژول جداگانه نیست. ساختارهای داده ایجاد شده باید حاوی لیستی از دستورالعمل ها به صورت توالی "مسطح" باشد (عبارات حسابی به فرم پسوند اصلاح شده مناسب برای محاسبه در دستگاه پشته ، حلقه هایی که به ترکیبی از توالی دستورالعمل های محاسباتی و جهش های مشروط یا غیرشرطی و غیره تبدیل می شوند).
مرحله 5
در صورت نیاز یک ماژول بهینه سازی ایجاد کنید. باید ساختار داده های تهیه شده در مرحله قبل را پردازش و تبدیل کند. الگوریتم ها و روش های بهینه سازی بسیار متنوع هستند.
مرحله 6
یک مولد کد ایجاد کنید. هنگام پردازش ساختارهای آماده شده در مرحله چهارم یا پنجم ، باید به سادگی توالی دستورالعمل های انتزاعی را به دستورالعمل های اجرا در یک سیستم عامل خاص تبدیل کند.
مرحله 7
در صورت نیاز یک برنامه اتصال دهنده (پیوند دهنده) ایجاد کنید. این باید با انتخاب مکان بخش های کد ، محاسبه آدرس برچسب ها و غیره ، ماژول اجرایی حاصل را تشکیل دهد.