JavaCC没有检测到令牌

时间:2017-03-23 17:33:38

标签: javacc

我有此令牌来检测无效发票:

TOKEN : {
    < #invalid : <number><client>(<mail> | <mailCom>)<wrongDoc><text><retorn> > 
}

这是我的while循环:

while (ok) {

    token = app.getNextToken();
    switch (token.kind) {
        case TextoConstants.client:
            System.out.println(token.image);
            break;
        case TextoConstants.mailCom:
            System.out.println(token.image);
            break;
        case TextoConstants.text:
            System.out.println(token.image);
            break;
        case TextoConstants.invalid:
            System.out.println("There is something wrong");
            break;
    ok = token.kind != TextoConstants.EOF;
}

问题是,当我尝试分析某个文本块时,它会打印client /(mailCom)?/ text令牌,但不会打印invalid一个。< / p>

这是输入:

Number 30003
Client MyName,Lastname
Mail myname@mail.com
DocId 346774
Text
some text block here.
END

输出应有错误,而是打印其他令牌。

感谢。

1 个答案:

答案 0 :(得分:1)

由于#invalid#开头,因此它不是真正的令牌类型。它实际上只是一个可用于定义其他令牌的宏。