词法分析只给出一个输出?

时间:2013-11-07 09:18:12

标签: java lexer java-compiler-api

我测试了this example(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;
        }
    }

Isdie是主要方法:

System.out.println(lexeObject.nextToken());

输出是:

  

IDENT

为什么呢?但是textfile包含多个关键字?有谁知道这是什么问题?

2 个答案:

答案 0 :(得分:2)

如果您只拨打nextToken()一次,您将只获得一个令牌。我不明白为什么这是一个如此神秘的事。尝试循环。

答案 1 :(得分:1)

很抱歉这么说,但问题似乎是你的阅读能力。以下是您链接到的示例的第一条评论的一部分(我强调添加):

  

Lexer生成从任意Reader中获取的令牌流   提供给构造函数,以响应重复调用   Lexer的nextToken例程。