我試圖解決一個非常簡單的語法問題(我剛開始學習使用ANTLR
開發語法;我有點新,所以只是忍受着我),這是定義一個簽名的偶數使用ANTLR
。ANTLR 3偶數
A '+' or '-'
開始令牌是可選的,並且該號碼可以是1或更多數字,但最後一位數字必須是偶數(例如,+4394
將是有效的帶符號偶數)。
最好的語法我至今如下:
grammar SignedEvenNumber;
DIGIT : '0'..'9';
EVEN_DIGIT : '0' | '2' | '4' | '6' | '8';
signedEvenNumber : ('+' | '-' |) NUMBER+ EVEN_NUMBER;
我的問題是,迫使ANTLR
檢查以偶數作爲最後一位數字的方式定義數字;即它總是將最後一個數字看作DIGIT
,不管它是偶數還是奇數(因爲在最後的任何數字都可以)。可能有一個非常簡單的解決方案,我只是沒有得到任何幫助,將不勝感激。
第二種解決方案奏效。例如,改變優先級的問題使得它將'567'解釋爲一個有效的語法(當它不應該)時。謝謝您的幫助。 – bgd53 2014-09-20 04:13:25