کامپایلر کلاسهای C++ به Structure های Ansi C

مدتی پیش این برنامه کوچک را نوشتم که اگر بتوان آن را یک کامپایلر نامید، در رده کامپایلرهای زبانهای سطح بالا به سطح بالا قرار خواهد گرفت.
این کامپایلر، کلاسهای ساخته شده در C++ را طی چند Pass به ساختارهای معادل آنها (شامل متدها، سازنده‌ها، مخربها و …) در C تبدیل مینماید. Pass های اجرایی در این کامپایلر به عبارت زیر هستند:

1- پیش پردازش Preprocess:
قالب برنامه ورودی را به شکلی مناسب اصلاح مینماید. مثلا حذف فاصله‌های اضافی و خطوط خالی و قرار دادن هر دستور در یک خط مجزا.

2- تجزیه Parse:
با برسی برنامه، Token ها را تشخیص داده و جدول نمادها (Symbol Table) را تشکیل میدهد. همچنین انواع داده‌ای جدید معرفی شده در برنامه، به Data type های پیشفرض، جهت استفاده، اضافه میگردند.

3- ترجمه Translate:
با استفاده از جدول نمادها، برنامه را خط به خط ترجمه مینماید.

بدیهیست که این برنامه، فقط یک نمونه آموزشی و آزمایشی بوده و توانایی ترجمه انواع دستورات، اعلانها و سرآیندهای متفاوت موجود در Cpp را ندارد.

cpp compiler to ansi c

هدف از این تجربه، آشنایی بیشتر با نحوه کار کامپایلرها، نحوه Parse ورودیها و بدست آوردن Tokenها، تشکیل جدول نمادها (Symbol Table) و … بوده است.

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


6 × 4 =