-
سه شنبه 11 بهمن 1390, 22:55 عصر
#8
کاربر دائمی
نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید
سلام
تحلیلگر لغوی اینجا تموم شد؟
من ویژوال بیسیک رو خیلی کم بلدم(در حد کار با بسکام) بنابراین نمی تونم اینجا اظهار نظری بکنم. اما قبلا قسمت ثابتهای عددی رو با سی نوشتم.
کدش حدود 700 خط شد.
دقت کنید فقط ثابتهای عددی. حتی ثابتهای رشته ای رو هم ننوشتم فقط ثابت های عددی.
پیش بینی من برای کل تحلیلگر لغوی البته در زبان سی چیزی حدود 2000 خط کده.
که البته با ترتیبی که بنده نوشتم باقی کار فقط اضافه کردن کیس های بیشتره.
اما یه چیزی اینجا مشکل زا میشه و اونم شبیه بودن بعضی ساختارهاست. که باید شروط داخل هر case از پس تشخیصشون بربیاد.
مثال واضحش تشخیص یک شناسه از مثلا کلمه کلیدیه while هستش. یا مثلا پیمایش دیاگرامهایی که بزرگتر هستن.
اینا نکاتیه که جدا در پیاده سازی اذیت می کنه. شاید برای یک کیس که محل تقاطع چنتا دیاگرام هست 6 تا 7 شرط بررسی شباهت برای تعیین شروع از دیاگرام درست باشه.
خروجی این مرحله باتوجه به منابعی که دیدم به این شکله:
یک جدول که دارای یک فیلد id و یک فیلد برای خود شناسه و یک فیلد برای نوع شناسهو یک فیلد دیگه برای محتوای اونه. فیلد دیگه ای هم تعبیه میشه تا تعیین کنه این شناسه از کلمات کلیدیه زبانه یانه.
وقتی این جدول که به اصطلاح symbol table می نامنش پر شد. از روی اون توکن ها رو می سازن. توکن مثلا برای عملگر = به این صورته:
<OP,=>
و برای یک شناسه مثل x25 که در ردیف مثلا هشتم ذخیره شده به این شکل:
<id8,x25>
و برای یک رشته ورودی شروع می کنن شناسه ها و کلمات کلیدی رو از جدول تطبیق می دن(درصورت موجود نبودن اضافه می کنن) و بصورت توکنها نمایش می دن.
از روی توکن ها میشه یه درخت تجزیه ابتدایی رسم کرد.
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت