有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

解析简单的ANTLR项目测试java类挂起

您好,我已经学习了Scott Stanchfield的教程ANTLR 3.x Creating and Executing a Grammar in Eclipse。然而,当我尝试运行测试类时,main方法在挂起第22行之前只到达第21行

测试等级:

public class Test {

public static void main(String[] args) throws RecognitionException {
    System.out.println("start!");
    CharStream charStream =  new ANTLRStringStream("once upon a time");
    XLLexer lexer = new XLLexer(charStream);
    TokenStream tokenStream = new LegacyCommonTokenStream(lexer);

    XLParser parser = new XLParser(tokenStream);
    System.out.println("in progress!");
    parser.rule();
    System.out.println("done!");

    }

}

以及输出:

start!
in progress!

因此,XLParser类中的规则方法似乎挂起

这是我的语法文件:

grammar XL;

options {
    language = Java;
}

@header {
    package com.slmyers.ANTLR;

}

rule: IDENT+;

IDENT : 'a'..'z'+;
WS : ' '+ {$channel = HIDDEN;};

我运行了解释器,它似乎产生了正确的输出:

interpreter output

我不确定问题出在哪里,如果能提供帮助,我将不胜感激。我没有提供生成的文件,但如果有帮助,我会提供


共 (1) 个答案

  1. # 1 楼答案

    发现的问题:

    TokenStream tokenStream = new LegacyCommonTokenStream(lexer);

    应该是:

    TokenStream tokenStream = new CommonTokenStream(lexer);

    德普