تالار گفتمان مانشت

نسخه‌ی کامل: تشخیص خطا در تحلیلگر لغوی یا نحوی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
این سوال مربوط به آزمون پارسه هست و گفته شده که تحلیل گر نحوی این خطا رو تشخیص میده چرا تحلیلگر لغوی نمی تونه تشخیصش بده؟؟
float X;
X=1..6;
تحلیل گر لغوی میاد مثلا x=1...2 رو به این تبدیل میکنه
id , Op, sub_range
و عملا هیچ دیدی نداره که باید توی متغیر x از نوع float باشه، درواقع فکر کنم این کار مربوط به تحلیل گر معنوی هستش که میاد توی زمان کامپایل این کار رو واسه ما چک میکنه و خطا میده.
(14 بهمن 1392 10:03 ب.ظ)Riemann نوشته شده توسط: [ -> ]تحلیل گر لغوی میاد مثلا x=1...2 رو به این تبدیل میکنه
id , Op, sub_range
و عملا هیچ دیدی نداره که باید توی متغیر x از نوع float باشه، درواقع فکر کنم این کار مربوط به تحلیل گر معنوی هستش که میاد توی زمان کامپایل این کار رو واسه ما چک میکنه و خطا میده.

جوابش گفته که تحلیل گر لغوی این جوری تفسیرش می کنه
متغیر x عملگر مساوی عدد اعشاری (.1) عدد اعشاری (6.)
سپس تحلی گر نحوی چون همچین ساختاری در زبان وجود ندارد این خطا رو تشخیص میده تا اینجاش درست
موضوع اینه که مگه عدد اعشاری به صورت 1.0 نیست پس چرا تحلیل گر لغوی نمیتونه این رو تشخیص بده؟ چون بعد از . باید عدد بیاد که نیومده Exclamation
(14 بهمن 1392 10:03 ب.ظ)Riemann نوشته شده توسط: [ -> ]تحلیل گر لغوی میاد مثلا x=1...2 رو به این تبدیل میکنه
id , Op, sub_range
و عملا هیچ دیدی نداره که باید توی متغیر x از نوع float باشه، درواقع فکر کنم این کار مربوط به تحلیل گر معنوی هستش که میاد توی زمان کامپایل این کار رو واسه ما چک میکنه و خطا میده.

آقای ریمن جوابی که داده بودین نیست میشه دوباره بزارینش لطف می کنید Shy
آقای ریمن جوابی که داده بودین نیست میشه دوباره بزارینش لطف می کنید Shy


خودمم هم یادم نیست چی گفتم!
آهان الان یادم اومد! واسه اعداد اعشاری یک عبارت منظم به این فرم هست: [tex][0-9]^ .[0-9]^{\ast}[/tex] که این میگه که بعد از نقطه میتونه عدد بیاد یا نه! و به عبارت دیگر 1. یک عدد اعشاری معتبر هست.
(14 بهمن 1392 09:52 ب.ظ)zahra2012 نوشته شده توسط: [ -> ]این سوال مربوط به آزمون پارسه هست و گفته شده که تحلیل گر نحوی این خطا رو تشخیص میده چرا تحلیلگر لغوی نمی تونه تشخیصش بده؟؟
float X;
X=1..6;

خب اگه قرار باشه برای این گرامر مستقل از متن نوشته بشه برای . حتما باید( .|ترمینال|لاندا) نوشته و اینکه دیگه بازگشتی نباشه به همون سطر(بازگشتی از چپ)
تحلیل گر نحوی هم طی این فرایند دیگه میاد یه نقظه میخونه و برای دومی میگه این اشتباهه
لینک مرجع