[英]What's wrong with my grammar in Antlr 3?
grammar even_numbers;
NUMBER : '0'..'9';
EVEN_NUMBER : '2' | '4' | '6' | '8';
signedEvenNumber : ('+' | '-' | ) NUMBER? EVEN_NUMBER;
錯誤是:
錯誤(208)::4:1:永遠無法匹配以下標記定義,因為先前的標記匹配相同的輸入:EVEN_NUMBER
如果您仔細閱讀,錯誤非常明顯: EVEN_NUMBER
無法匹配,因為NUMBER
將匹配EVEN_NUMBER
也匹配的內容。 並且NUMBER
獲得優先權,因為它是在EVEN_NUMBER
之前EVEN_NUMBER
。
你可以做的是:
signedEvenNumber : ('+' | '-' | ) number? EVEN_NUMBER;
number : ZERO | ODD_NUMBER | EVEN_NUMBER;
ZERO : '0';
ODD_NUMBER : '1' | '3' | '5' | '7' | '9';
EVEN_NUMBER : '2' | '4' | '6' | '8';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.