我建立以下語法:ANTLR的預測-LL(*)解析機制
Letter : 'a'..'z'|'A'..'Z' ;
Number : '0'..'9' ;
Float
: Number+ '.' Number+
;
a5
@init
{
int n = 1;
}
: ({n<=5}?=>(Letter|Number){n++;})+
;
它沒有成功解析字符串「CD923IJK」,因爲我需要被消費「CD923」,而不是「CDIJK 「就像如果浮子評論問題消失和消費發生
‘CD923’像我想要
顯然需要一種先進的分析,因爲這個語法LL(K),我設定先行深度
options
{
k=5;
}
但是沒有解決任何問題。任何想法?
UPDATE
響應於建議500 - Internal Server Error 添加以下規則
public test :a5 Float ;
我需要匹配CD9231.23其中CD923是字母數字和1.23的浮子。但見解析樹:
這是你真正的語法和輸入?這是我沒有看到'浮動'規則如何匹配任何輸入,因爲你沒有一個點。 – 2014-12-03 20:11:41
@ 500-InternalServerError這是我的語法片段。問題是爲什麼發生這種情況。爲什麼「123」被跳過並在鏈條後面的3個字母中消耗? – Cyberguille 2014-12-05 14:11:25
我的建議是將語法縮減爲您可以在此處完整發布的內容以及失敗的輸入。 – 2014-12-05 14:26:52