0
我在詞法兩個令牌類型這樣定義:如何解決ANTLR 2中數字和日期之間的詞彙歧義?
NUMBERVALUE
: ('0' .. '9')+ ('.' ('0' .. '9')+)?
;
DATEVALUE
: ('0' .. '9') ('0' .. '9') ('0' .. '9') ('0' .. '9') '-'
('0' .. '9') ('0' .. '9') '-'
('0' .. '9') ('0' .. '9')
| ('0' .. '9') ('0' .. '9') '-'
('0' .. '9') ('0' .. '9') '-'
('0' .. '9') ('0' .. '9')
;
我本來認爲,由於日期必須包含前五個字符中的連字符,然後設置K = 5詞法分析器選項只要詞法分析器能夠將兩者分開就足夠了。但是,當我運行antlr時,出現此警告:
warning:lexical nondeterminism between rules NUMBERVALUE and DATEVALUE upon
k==1:'0'..'9'
k==2:'0'..'9'
k==3:'0'..'9'
k==4:'0'..'9'
k==5:'0'..'9'
並且解析器無法識別其中包含多於四位數字的數字。我如何解決詞彙歧義?