我有此令牌来检测无效发票:
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
输出应有错误,而是打印其他令牌。
感谢。
答案 0 :(得分:1)
由于#invalid
以#
开头,因此它不是真正的令牌类型。它实际上只是一个可用于定义其他令牌的宏。