簡體   English   中英

我在 Antlr 3 中的語法有什么問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM