# فناوری جاوا > برنامه‌نویسی جاوا > بحث و گفتگو در مورد فناوری های مرتبط با جاوا > سوال: کامپایلر cup برای جاوا { مشکله Error : *** More conflicts encountered than expected }

## Kevin_Anderson

سلام بچه ها :لبخند: 
دارم با ابزار 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

بچه ها 
کسی با ابزار jflex و cup کار کرده؟

----------


## vahid-p

با این ابزار کار نکردم ولی مشابهش ابزارهای دیگه ای مثل 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 (از مباحث نظریه زبان های برنامه سازی) رو در اینترنت سرچ کنید.

----------

