PDA

View Full Version : سوال: میشه با عبارات منظم ، دستور if را تشخیص داد؟



mdssoft
شنبه 21 اردیبهشت 1387, 09:16 صبح
سلام به دوستان .
یه سوالی برام پیش اومده.
می خواستم بدونم که میشه با عبارات منظم دستوراتی مثل دستور if تو زبان ++C را تشخیص داد و اگر اشتباه املایی تو دستور بود اعلام کرد یا نه؟

اگر جوابتون بله هست ، میشه یه نمونه Pattern هم بزارید .

ممنون از همگی

amin joon
شنبه 21 اردیبهشت 1387, 17:22 عصر
جاي اين سوال داخل اين تالار نييييييييسسسسسسسسسسسستتتت تتتتتت.

بله ميشه با عبارت منظم پيادش كرد.

گرامر زير شرط سي رو بصورت ساده پياده ميكنه . البته اين گرامر منظم نيست ولي به راحتي ميشه اون رو منظم كرد.



S-> if (S1)
S1-> S2 && S1 / S2 || S1 / S2
S2-> T<T / T<=T / T==T / T>T / T>=T
T-> Variable / Number

با اين گرامر ميشه شرط هاي زير رو بدست اورد


if(a<b)
if(a>=b)
if (a<12 && a>b || a==0)
و ...

mdssoft
شنبه 21 اردیبهشت 1387, 17:39 عصر
جاي اين سوال داخل اين تالار نييييييييسسسسسسسسسسسستتتت تتتتتت.
چرا نیست ، تو #C هم ما خیلی از عبارات منظم استفاده میکنیم. کلاس Regex برای همین هست دیگه.

با گرامر بله ، اما من فکر نمی کنم با عبارت منظم بشه ، مثلا پرانتز های تو در تو رو چطور می خواهید با عبارت منظم تشخیص بدید .
اگر فکر می کنید میشه ، لطفا یه نمونه Pattern قرار بدید تا من هم تستش کنم .

محمدامین شریفی
شنبه 21 اردیبهشت 1387, 21:40 عصر
اتفاقا جاش فقط اینجاست.
یه کمی واژه های انگلیسی به کار ببر و کاری که می خوای بکنی را توضیح بده:تشویق:

اَرژنگ
یک شنبه 22 اردیبهشت 1387, 17:32 عصر
چرا نیست ، تو #C هم ما خیلی از عبارات منظم استفاده میکنیم. کلاس Regex برای همین هست دیگه.

با گرامر بله ، اما من فکر نمی کنم با عبارت منظم بشه ، مثلا پرانتز های تو در تو رو چطور می خواهید با عبارت منظم تشخیص بدید .
اگر فکر می کنید میشه ، لطفا یه نمونه Pattern قرار بدید تا من هم تستش کنم .

نشدن اینکار با عبارات منظم یک تمرین در تئوری هست. این متنبها را مطالعه کنید:
Regular Expressions, Context Free Grammer, Turing Machines

اَرژنگ
یک شنبه 22 اردیبهشت 1387, 17:34 عصر
اتفاقا جاش فقط اینجاست.
یه کمی واژه های انگلیسی به کار ببر و کاری که می خوای بکنی را توضیح بده:تشویق:

این موضوع به سی شارپ چه ربطی دارد؟ جایه درستش در انجمن الگریم است.

محمدامین شریفی
یک شنبه 22 اردیبهشت 1387, 22:55 عصر
این موضوع به سی شارپ چه ربطی دارد؟ جایه درستش در انجمن الگریم است.
:افسرده:
من کی باشم که رو حرف استاد آرژنگ چیزی بگم.
آقا آرژنگ بخاطر تقابل زبان های دات نت من اینو گفتم.یا بخاطر اینکه من از c++ deitel با sharp c آشنا شدم.
لطفا در این مورد توضیح دهید تا ما شاگردان متوجه شویم

اَرژنگ
دوشنبه 23 اردیبهشت 1387, 00:45 صبح
:افسرده:
من کی باشم که رو حرف استاد آرژنگ چیزی بگم.
آقا آرژنگ بخاطر تقابل زبان های دات نت من اینو گفتم.یا بخاطر اینکه من از c++ deitel با sharp c آشنا شدم.
لطفا در این مورد توضیح دهید تا ما شاگردان متوجه شویم
(استاد؟) ارژنگ مخلص است:خجالت:
وقتی که در مورد گرامر و عبارتهایه منظم حرف زده میشه من به نظرم آمد این سوال بیشتر به theory computing ربط‌ دارد تا سی شارپ.
اگر در دایتل (کتاب سی شارپ) این موضوع را دیدید صفحه و یا موضوع را بیشتر نقل کنید، چونکه شاید اصلا سوال چیز دیگریست.
و همیشه هم اگر چیزی به نظرتان درست نمیاد ، یک چیزی بگید، چیزی به اسم رو حرف کسی حرف زدن وجود ندارد ، بدانه دلیل و مدرک حرف خالی مفت نمیارزد.
مخلصیم

mdssoft
دوشنبه 23 اردیبهشت 1387, 02:17 صبح
خوب ، بالاخره جواب چی شد؟
میشه یا نه !!!

محمدامین شریفی
یک شنبه 29 اردیبهشت 1387, 18:27 عصر
در هیچ کدام از 2 کتاب دیتل این موضوع بحث نشده بود . اگه اشتباه نکنم تو می خوای با syntax , syntax را بررسی کنی به دنبال theory computing که استاد گفت برو.

mdssoft
یک شنبه 29 اردیبهشت 1387, 22:30 عصر
در هیچ کدام از 2 کتاب دیتل این موضوع بحث نشده بود . اگه اشتباه نکنم تو می خوای با syntax , syntax را بررسی کنی به دنبال theory computing که استاد گفت برو.


نفهمیدم منظورتون چی بود !!!

alireza.alavian
یک شنبه 29 اردیبهشت 1387, 22:55 عصر
با اجازه جمع:


خوب ، بالاخره جواب چی شد؟
میشه یا نه !!!


اصولاً این جور گرامرها با عبارات منظم قابل پیاده سازی نیستند و حتماً باید از روی قواعدی که برای آنها تعریف کرده ایم تجزیه نحوی را صورت دهیم.
برای درک بهتر می توانید به کتبی که در مورد طراحی کامپایلرها یا نظریه زبانها و ماشینها نوشته شده اند مراجعه کنید.