100% Guaranteed Results


Exercises – Solved
$ 20.99
Category:

Description

5/5 – (1 vote)

به نام خدا
فاز دوم پروژه کامپایلرها و زبانهای برنامهنویسی

پاییز 99
مهلت تحویل: 9 آذر

در فاز قبل، تحلیلگر لغوی و نحوی را برای زبان Sophia پیادهسازی کردید. در این فاز شما باید اطلاعات مربوط به کلاسها ،توابع هریک از آنها ،scopeهای برنامه و متغیرهای آنها را جمعآوری کرده و در جدول علائم ذخیره کنید. برای این کار شما باید درخت AST مربوط به برنامه را در این فاز تشکیل دهید. به منظور سادگی کار شما، یک شمای کلی از جدول علائم در اختیارتان قرار گرفته که بایستی آن را به نحو مناسب استفاده و پر نمایید. همچنین آیتم های درخت AST در اختیار شما قرار گرفته که باید با توجه به آنها با تعریف action های مناسب در گرامرتان، درخت را بسازید .
در این فاز باید موارد زیر را بررسی کرده و در صورت خطا، پیام مناسب را به فرمتی که برای هرخطا گفته شده پرینت کنید و به بررسی کد تا انتهای فایل ادامه دهید. فرمت کلی هر یک از خطاهایی که باید نمایش دهید به شکل زیر است:
Line:<LineNumber>:<ErrorItemMessage>
مثال:
Line:22:Redefinition of class A :برای هر یک از موارد زیر تعریف میشود ErrorItemMessage که
1. عدم وجود دو کلاس با نام یکسان در برنامه
در صورت خطا در این قسمت باید خطای مربوطه اعلام گردد و یک نام موقت برای کلاس کنونی در نظر گرفته شود. برای اسم دادن دوباره به کلاس، از الگویی استفاده کنید که برخوردی با نام کلاس از پیش موجود در برنامه نداشته باشد. در ادامهی مراحل کامپایل کد، نام آن کلاس نام جدید خواهد بود.
ErrorItemMessage: Redefinition of class <ClassName>
2. عدم وجود دو فیلد با نام یکسان در یک کلاس
دقت شود که با توجه به اینکه variable overloading نداریم، این خطا شامل فیلدهای کلاسی که از کلاس دیگر ارثبری میکند نیز میشود.
ErrorItemMessage: Redefinition of field <FieldName>

3. عدم وجود دو متد با نام یکسان در یک کلاس
دقت شود که با توجه به اینکه method overloading نداریم، این خطا شامل متدهای کلاسی که از کلاس دیگر ارثبری میکند نیز میشود. توجه کنید که با constructorها نیز باید همانند متدها برخورد شود.
ErrorItemMessage: Redefinition of method <MethodName>

4. عدم وجود دو متغیر با نام یکسان در یک تابع
ErrorItemMessage: Redefinition of local variable <VariableName>

5. عدم وجود یک فیلد و یک متد همنام در یک کلاس
توجه داشته باشید که در این حالت برای متد خطا گرفته میشود.
ErrorItemMessage: Name of method <MethodName> conflicts with a field’s name

6. وراثت حلقوی )امتیازی(
توجه داشته باشید برای تمام کلاسهای حاضر در یک حلقه وراثت باید خطا گرفته شود.
ErrorItemMessage: Class <ClassName> is in an inheritance cycleهمچنین در حالتی که پس از پیمایش کامل کد ورودی هیچ خطایی نداشته باشد، شما باید پیمایش pre-order درخت AST را در خروجی چاپ کنید. به ازای هر نود، شماره خط آن و خروجی تابع toString آن را در یک خط خروجی به صورت زیر چاپ کنید:
Line:<LineNumber>:<ASTNodeMessage> :مثال
Line:22:PrintStmt

نکات مهم:
 در این فاز شما باید کدهای داده شده را تکمیل کنید. کلیه فایل ها را به صورت یک فایل P2_<studentID1>_<studentID2>.zip آپلود کنید )کدهای جدول علائم و گرامر و AST را هم در آن قرار دهید(. توجه شود که تنها یک نفر از هرگروه باید پروژه را آپلود کند. در صورت عدم رعایت این موارد از شما نمره کسر خواهد شد.
 در صورت کشف هر گونه تقلب، نمره 100- لحاظ میشود.
 دقت کنید که خروجیهای شما به صورت خودکار تست میشوند؛ پس نحوه چاپ خروجی شما باید عیناعیناً مطابق موارد ذکر شده در بالا باشد. تنها موارد خواسته شده را در فایل خروجی نمایش دهید و از قرار دادن خطهای خالی و فاصله و … نیز خودداری کنید.
 بهتر است سوالات خود را در فروم درس مطرح نمایید تا دوستانتان نیز از آنها استفاده کنند؛ در غیر این صورت به مسئولان پروژه ایمیل بزنید:
amir.pma1378@gmail.com امیر پورمحمدعلی shbmobina@gmail.com مبینا شاهبنده

Reviews

There are no reviews yet.

Be the first to review “Exercises – Solved”

Your email address will not be published. Required fields are marked *

Related products