ب ن م خددا ودندد جاند و خردد دس نظرهیز ی زباناه و طراحید کامدپایلراه زمان تحویلدپوژه ۶بهدمن استاد دس دکتدر ایدز ی در این پروژه شما باید یه مفسر 1برای زبان stCalcطراحی کنید .این زبان ،یک زبان ساده برای کار با رشتهاها است. اکنون به بررسی مختصر ویژگیاهای این زبان میپردازیم: یاهای کلی زبان: الف – ویژگ – 1ثوابت: ثوابت در این زبان میوتوانند از نوع رشته و یا اعداد صحیح نامنفی باشند .برای نشان داده یک ثابت از نوع رشته ،آن رشته را در بین عملمتاهای ” قرار میداهیم. – ۲متغی راها: متغیراها در زبان ،stCalcنتها اطلعات از نوع رشته را نگهداری میکنند .برای وتعریف یک متغیر با نام xباید به شکل زیر عمل کنیم: ;Var x بعد از وتعریف این متغیر ،مقدار آن برابر با رشته وتهی ) “” ( خوااهد بود .در صورت نیاز میوتوانیم در زمان وتعریف متغیر ،به آن مقدارداهی کنیم: ;”Var x = “abc سپل س است. یپل قوانین وتعیین نام برای متغیراها در این زبان ،دقیقا مشابه قوانین نامداهی به متغییراها در زبان س 1 interpreter لگ راها – ۳عم در این زبان میوتوانیم از عملگراهای ^ ، - ،+و = بر روی رشتهاها استفاده کنیم: .i عملگر + با گرفتن دو رشته ،حاصل الحاق دو رشته را باز میگرداند .به عنوان مثال حاصل ” “ ab” +“ cdبرابر خوااهد بود. ” “ abcd .iiعملگر - با گرفتن دو رشته ،رشتهای را باز میگرداند که از حذف بزرگترین پسوند مشترک دو رشته از رشته اول به دست میآید .به عنوان مثال حاصل ” “ abcde ” – “ xydeبرابر با ” “ abcخوااهد بود. .iiiعملگر ^ با گرفتن یک رشته و یک عدد صحیح ،kرشتهای را باز میگرداند که از k-1بار الحاق رشته اول با خودش به دست میآید .به عنوان مثال حاصل ab ^ 3برابر با ” “ abababخوااهد بود .در صوروتی که عدد kبرابر صفر باشد، رشته وتهی بازگردانده خوااهد شد. .ivعملگر = از این عملگر نیز برای ذخیره یک رشته در یک متغیر استفاده میکنیم. اولویت اجرای عملگر اها به صورت زیر است: ^ اهمچنین میوتوانیم از پرانتز گذاری برای وتغییر وتروتیب اجرای عملگراها استفاده کنیم. < +, - < = – ۴وتوابع: در این زبان وتنها چهار وتابع اصلی وتعریف شدهاند و قابل استفاده اهستند: .iوتابع این وتابع یک خط را از ورودی استاندارد میخواند و رشته خوانده شده را بازمیگرداند) .کاراکتر اوتمام خط را به عنوان بخشی از رشته در نظر نمیگیریم(. ) (ReadLine .iiوتابع این وتابع رشته sرا به صورت یک خط در خروجی چاپ میکند. دقت کنید که وتنها این وتابع ،خروجی ندارد. )WriteLine( s .iiiوتابع این وتابع با گرفتن رشته ،sرشته معکو س آن را باز میگرداند) .خروجی این وتابع یک رشته است(. )Reverse( s .ivوتابع این وتابع رشتهای را باز میگرداند که از وتغییر اهمه زیررشتهاهای برابر aدر ،sبه رشته bبه دست میآید. )Replace( s , a , b ب – ساختار کلی یک برنامه: اهر برنامه در زبان ، stCalcاز وتعدادی دستور وتشکیل میشود که به وتروتیب اجرا میشوند .اهر دستور میوتواند یکی از ۳نوع زیر را داشته باشد: .iعملیات انتساب .iiوتعریف متغیر یشود(. .iiiفراخوانی وتابع ) WriteLineوتنها وتابعی که خروجی ندارد و به وتنهایی یک دستور محسوب م بعد از اهر دستور باید از کاراکتر ; استفاده کنیم. در زیر ،یک برنامهی نمونه آمدهاست: ;)(Var x = ReadLine ;Var y ;)(y = ReadLine ;”Var a = “a ;Var z ;)x = Replace(x, “a”, z ;)”“ y = Replace(y, a, ;)) WriteLine(reverse( x + y پ – شیو هی اجرای مفسر: مفسر شما باید با گرفتن یک برنامه با زبان stCalcبه شکل یک فایل متنی ،آن را اجرا کند .برای اجرای برنامه ،باید دستورات درون فایل به وتروتیب اجرا شوند )در صورت رسیدن به وتوابع ReadLineیا WriteLineنیز ورودی گرفته شود و یا خروجی چاپ شود(. در صورت مواجه شدن با اهرگونه خطای احتمالی ) Lexical Error, Syntax Errorو یا استفاده از متغیراهای وتعریف نشده درون برنامه( در زمان اجرای یک خط نیز ،برنامه مفسر باید عبارت خطای مفهوم داری را چاپ کند و به اجرای برنامه خاوتمه داهد. موارد وتحویلی: • گرامر LL1برای این زبان • لاهای Firstو Follow جدو • جدول پار س LL1 • برنامهی مفسر
© Copyright 2025 Paperzz