View Full Version : سوال: کامپایلر cup برای جاوا { مشکله Error : *** More conflicts encountered than expected }
Kevin_Anderson
یک شنبه 06 تیر 1395, 18:59 عصر
سلام بچه ها:لبخندساده:
دارم با ابزار cup کار میکنم که برای جاواست
یه گرامر دارم به شکل زیر
bool ::= NOT bool
| bool AND bool
| bool OR bool
| expr relop expr
| LEFT_PAREN bool RIGHT_PAREN
| ;
وخطا از حالت bool AND bool
و حالت bool OR bool
ناشی میشه
دوستان راه حلی سراغ دارید؟چطور گرامر رو تغییر بدم؟
:متفکر:
Kevin_Anderson
یک شنبه 27 تیر 1395, 16:44 عصر
بچه ها
کسی با ابزار jflex و cup کار کرده؟
vahid-p
یک شنبه 27 تیر 1395, 18:05 عصر
با این ابزار کار نکردم ولی مشابهش ابزارهای دیگه ای مثل Antlr بر پایه جاوا وجود داره
به هر حال. مشکل از گرامر شماست که گرامر مبهمه.
مثلا bool OR bool OR bool میشه به دو طریق براش درخت اشتقاق رسم کرد.
دو مسئله ابهام و چپ گردی در گرامرها رو حتما مطالعه کن.
خب بعضی از ابزارها چپ گردی رو خودشون اتوماتیک حل میکنند و فقط ابهام نباید داشته باشه. برای چنین ابزاری گرامر به صورت زیر ابهام نداره ولی چپ گردی داره که مشکلی ایجاد نمیکنه:
A ::= A or B | B
B ::= B and C | C
C ::= true | false
اگر ابزار مورد استفادت چپ گردی رو اتوماتیک حل نمیکنه، پس میشه:
A ::= B AX
AX ::= or B AX | λ
B ::= C BX
BX ::= and C BX | λ
C ::= true | false
منظور از λ رشته بدون طول هست. ببینید تو ابزارتون به جاش چی مینویسن.
اگر به جز استفادش لازمه بدونید چطور بدست میاد، left-recursion و ambiguity (از مباحث نظریه زبان های برنامه سازی) رو در اینترنت سرچ کنید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.