我建立以下语法: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