زمان کنونی: ۲۴ آبان ۱۴۰۳, ۰۸:۵۴ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

کشف خطا در کامپایلر

ارسال:
  

sepid پرسیده:

کشف خطا در کامپایلر

سلام
این خطاها در کدام قسمت کامپایلر کشف میشه؟
۱/ int A[10.5]
۲/int A[10.5]=5
به نظر خودم اولی که واضح توسط پارسر هست.
دومی هم به نظرم باید پارسر باشه ولی تو کتاب فک کنم پوران بود نوشته در قسمت معنایی کشف میشه.
مگر تو قسمت معنایی فقط خطاهای نوع کشف نمیشه؟
نظر شما چیه؟
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

۵۴m4n3h پاسخ داده:

RE: کشف خطا در کامپایلر

اتفاقاً من هم نظر شما رو داشتم، سر کلاس دکتر کارگهی بحث شد، ایشون گفتن که امکانش هست کاری کنیم که خطای دوم رو هم پارسر بگیره اما معمولش این هست که این نوع خطا در سطح معنایی بررسی میشه، دلیلشون هم این بود که این که اندیس آرایه یه عدد ثابت هست این جا، یه حالت خاص از حالتِ کلی ای هست که اندیس آرایه میتونه یک عبارت باشه و ارزیابی عبارت باید در بخش معنایی انجام بشه پس چون کلاً وقتی ما گرامر یک زبان رو مینویسیم اندیس آرایه رو یک expression قرار میدیم، این قسمت در تحلیل معنایی چک میشه
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

sepid پاسخ داده:

کشف خطا در کامپایلر

با این تحلیل که اولی هم میتونه توسط تحلیلگر معنایی کشف بشه چرا اون را با اطمینان میگه پارسر؟
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

۵۴m4n3h پاسخ داده:

RE: کشف خطا در کامپایلر

نه!
اون اولی declaration هست و توی declaration همیشه عدد داخل براکت باید یه const int باشه، هیچ وقت نمیشه توی تعریف یه آرایه، یه عبارت یا یه متغیر رو به عنوان سایز آرایه مشخص کرد! پس اولی رو همیشه پارسر میتونه چک کنه.
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

samanium پاسخ داده:

کشف خطا در کامپایلر

خوب توی قسمت declaration هم ما میتونیم به ارایه مقدار بدیم‌، هم جاوا هم سی وهم .....
به این دلیل قسمت دوم رو هم پارسر میتونه گیر بندازه !!!
البته ایراد قسمت ۲ اینه که به یه ارایه یه انتصاب غلط دادیم وهمچنین اندیس غلط
که تو غلط اول معنی ذرگیر میشه(انتصاب دارای معنی درستی نیست)
و دومی نحو (وقتی ما به جای اندیس توی گرامر از لفظ عبارت استفاده کنیم فقط طول مراحل پارس رو بیشتر میکنیم و همچنان ایراد اندیس برقراره چون اندیس مثلا نمی تونه عددی حقیقی باشه و ایراد رو پارسر پیدا میکنه)
تازه sepid توی تحلیل معنایی انتصاب های نادرست مثلا انتصاب مقدار ثابت به اسم یه تابع و این دست انتصاب‌ها کشف میشه و...
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

sepid پاسخ داده:

کشف خطا در کامپایلر

مرسی samanium.
من هم بیشتر موافقم که به خاطر همون انتساب اشتباه باید تحلیلگر معنایی Error بگیره.
یعنی همونطور که خودت گفتی هم پارسر باید ایراد بگیره و هم در قسمت معنایی.
وفکر نکنم اصولا بتونیم کاری کنیم که پارسر خطای انتساب دستور ۲ رو بگیره چون پارسر که نوع عناصر را تشخیص نمیده.
اون حالتی که خطای دوم را پارسر هم بتونه بگیره برای وقتی هست که int نداشته باشه یعنی Declaration نباشه که در اون حالت خطای نوعی اتفاق نیفتاده.
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  چگونه این خطا را موقع اجرای sql server 2014 رفع کنم ؟ farahnaz ۲ ۳,۰۴۲ ۱۹ مهر ۱۳۹۹ ۰۲:۱۸ ق.ظ
آخرین ارسال: farahnaz
  زمین شناسی از بهترین رشته ها: کشف پوکه fardinamiri ۰ ۱,۷۲۰ ۲۶ شهریور ۱۳۹۹ ۰۵:۱۸ ب.ظ
آخرین ارسال: fardinamiri
Sad سوال ۱۰۷ کامپایلر ۹۸ zohre.notash ۰ ۱,۶۳۴ ۱۵ مرداد ۱۳۹۹ ۰۲:۳۶ ق.ظ
آخرین ارسال: zohre.notash
  ۱۲ کد شگفت‌انگیز موبایل خود را کشف کنید elecomco ۰ ۲,۶۳۸ ۰۴ خرداد ۱۳۹۹ ۰۸:۳۵ ب.ظ
آخرین ارسال: elecomco
  [دانلود] خلاصه درس کامپایلر و مهندسی نرم افزار baran.r ۵ ۱۰,۷۳۷ ۲۱ مهر ۱۳۹۸ ۱۱:۰۸ ب.ظ
آخرین ارسال: rray
  تشخیص خطا در تحلیلگر لغوی یا نحوی zahra2012 ۵ ۸,۲۶۱ ۲۶ مرداد ۱۳۹۷ ۰۴:۲۹ ب.ظ
آخرین ارسال: tohid.salmani
  استاد کامپایلر mahsa.byt ۲ ۳,۴۸۱ ۱۲ مرداد ۱۳۹۷ ۰۹:۰۸ ب.ظ
آخرین ارسال: Soldier's life
  خطا در نصب پرستاشاپ fas ۰ ۲,۱۴۷ ۰۶ مرداد ۱۳۹۷ ۱۱:۴۳ ق.ظ
آخرین ارسال: fas
  سوال کامپایلر از کنکور ۹۳ shaqayeqmzn1 ۲ ۲,۶۰۶ ۲۳ فروردین ۱۳۹۷ ۰۸:۰۹ ق.ظ
آخرین ارسال: shaqayeqmzn1
  سوال کامپایلر از کنکور ۹۰ کامپیوتر hadi_91 ۱ ۲,۶۳۵ ۲۱ اسفند ۱۳۹۶ ۰۱:۵۴ ب.ظ
آخرین ارسال: دختر مهربان

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close