PDA

View Full Version : نوشتن یک کامپایلر ساده برای دستور شرطی if



InfiniteLoop
پنج شنبه 14 اردیبهشت 1391, 15:46 عصر
درود
قصد نوشتن یک کامپایلر ساده با زبان c++ رو دارم که بیاد تحلیل های بخش جلویی کامپایلر رو برای دستو شرطی if پیاده سازی کنه.
مثلا وقتی کاربر تو برنامه اجرا شده if رو fi نوشت error مناسبو بده(تحلیلگر لغوی)
یا مثلا کاربر قسمت شرط رو خالی گذاشت error مناسبو بده(تحلیلگر ساختاری)
یا مثلا کاربر بیاد یه رشته رو بخواد با یه عدد جمع بزنه که سیستم بترکه بعدش(تحلیلگر معنایی)

قابلیت ویرایش رو هم بعد نوشتن کاربر داشته باشه

به نظر شما از کجا باید شروع کرد برا اینکار؟چه مقاله هایی رو باید خوند؟

one hacker alone
پنج شنبه 14 اردیبهشت 1391, 18:10 عصر
ببینید اینجا چیزی که مبهم هست اینه که شما دیگه کامپایلر ساده برای ++c نمینویسی درواقع میخوای کامپایلری برای زبان بنویسی که تنها یک دستور شرطی داره

مگه اینکه بخوای یه کامپایلر برای ++C بنویسی که کار راحتی نیست و بهتره بیخیال بشین چون هرجور فکرشو بکنین منطقی نیست

حالا اینجا یه بحث دیگه میمونه اونم طراحی IDE هست که این کار خیلی بهتره
روند کار:
1- شما یه برنامه مینویسین که یه textbox داره و کاره ویرایشگر رو میکنه
2- یه کامپایلر خط فرمان برای ++C گیر میارین و در کنار برنامه قرار میدین
3- کاربر وقتی توی برنامه شما کدی رو نوشت و کامپایل رو زد برنامه شما فایل رو ذخیره کنه و بده به کامپایلر برای کامپایل و اگه خطا داد همون خطا ها رو به کاربر شما نشون بدین
* نکته اینه که شما در برنامه زمانی که کاربر کامپایل رو میزنه خودتون یه بار کد رو پیمایش کنین اگه if رو یه جور دیگه نوشته بود شما بیاید پیغام مناسب رو چاپ کنید براش و وقتی اصلاح کرد بفرستید واسه کامپایلر

تا اینجای قضیه یه بحث و مورد دیگه هم اینه که شما اینارو بدونید و دنبال الگوریتمی برای شناسایی دستورات باشید مثلا شاید من اومدم تو برنامه یه متغیر به اسم fi تعریف کردم اونوقت شما نباید به من گیر بدین که دستور if رو اشتباه نوشتی
موضوع بالا هم یه بحث دیگه هست
حالا نمیدونم منظور شما چیه
البته به نظر من طراحی IDE خیلی منطقی تر وجالب تر میتونه باشه که در توسعه برنامه میتونید حتی به کاربر راهکار یا الگوریتمی رو پیشنهاد بدین

InfiniteLoop
جمعه 15 اردیبهشت 1391, 00:36 صبح
عزیز من, من نگفتم میخوام برای C++‎‎ کامپایلر بنویسم گفتم می خوام با C++‎‎ کامپایلر ساده بنویسم که فقط بیاد دستور if رو بررسی کنه
بعدشم قرار نیست اصلا visual کار کنم, قصد کار تحت داس و توربوست
سوما اینجوری نیست که اگر مثلا fi نوشتی بگه if و درست بنویس , مثلا میگه undeclared identyfier البته اگر اول خط بیاد, بعد از نوع که بیاد خوب میشه متغیر تعریفش کرد
mer30

one hacker alone
جمعه 15 اردیبهشت 1391, 01:56 صبح
بله دوست عزیز حق با شما بود من در نگاه اول اشتباه متوجه شدم
خوب شاید بهترین کار و شروع و مثال مناسب فصل 18 کتاب جعفرنژاد قمی باشه که در مورد طراحی مفسر زبان های برنامه سازی گفته و یه مفسر برای زبان بیسیک نوشته و اگه دوست داشتی عمیق تر کار کنی کتاب طراحی کامپایلر ها رو بخون و البته قبل از اون باید کتاب نظریه زبان صراف زاده رو بخونی اما چیزی که شما میخوای با توجه به اینکه یه زبان ناقص هست پس میتونی با همون کتاب جعفرنژاد کارت رو راه بندازی و البته PDF این کتاب هم تو اینترنت هست

InfiniteLoop
جمعه 15 اردیبهشت 1391, 22:20 عصر
مرسی
میرم دنبال اینا
اگه سوال دیگه ای بود دوباره پست میزارم