我测试了这个例子(lexe.java),但它只给了我一个输出。
我作为读者给出了这段文字:
public class LexeTest{ private int a = 14; }
nextToken() 函数是:
public Category nextToken () {
if (inp.findWithinHorizon (tokenPat, 0) == null)
return Category.EOF;
else {
lastLexeme = inp.match ().group (0);
if (inp.match ().start (1) != -1)
return nextToken ();
else if (inp.match ().start (2) != -1)
return Category.IDENT;
else if (inp.match ().start (3) != -1)
return Category.NUMERAL;
Category result = tokenMap.get (lastLexeme);
if (result == null)
return Category.ERROR;
else
return result;
}
}
伊斯迪的主要方法:
System.out.println(lexeObject.nextToken());
输出为 :
识别
为什么?但是文本文件包含多个关键字?有人知道问题出在哪里吗?
如果您只调用nextToken()
一次,则只会获得一个令牌。我不明白为什么这是一个谜。尝试循环。
很抱歉这么说,但问题似乎在于您的阅读能力。这是您链接到的示例的第一条评论的一部分(我添加了重点):
词法分析器生成从任意读取器获取的令牌流 提供给构造函数,以响应对 Lexer 的 nextToken 例程。