ANTLR4项目不会在Eclipse中显示任何内容

时间:2014-10-04 13:09:34

标签: java eclipse antlr4 lexer parser-generator

在“The Definitive ANTLR 4 Reference”一书中,我试图在Eclipse中运行 ArrayInit.g4 示例。我已设法生成必要的java文件和其他文件,但是当我运行示例并在控制台中输入值并按Enter键时,没有任何反应(第29和30页)

ArrayInit.g4

/** Grammars always start with a grammar header. This grammar is called
* ArrayInit and must match the filename: ArrayInit.g4
*/
grammar ArrayInit;

@header
{
    package com.foo.bar;
}

/** A rule called init that matches comma-separated values between {...}. */
init : '{' value (',' value)* '}' ; // must match at least one value
/** A value can be either a nested array/struct or a simple integer (INT) */
value : init
| INT
;
// parser rules start with lowercase letters, lexer rules with uppercase
INT : [0-9]+ ; // Define token INT as one or more digits
WS : [ \t\r\n]+ -> skip ;

Main.java

package com.foo.bar;

import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;

public class Main 
{
    public static void main(String[] args) throws Exception
    {
        // create a CharStream that reads from standard input
        ANTLRInputStream input = new ANTLRInputStream(System.in);
        // create a lexer that feeds off of input CharStream
        ArrayInitLexer lexer = new ArrayInitLexer(input);
        // create a buffer of tokens pulled from the lexer
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        // create a parser that feeds off the tokens buffer
        ArrayInitParser parser = new ArrayInitParser(tokens);
        ParseTree tree = parser.init(); // begin parsing at init rule

        // Create a generic parse tree walker that can trigger callbacks
        ParseTreeWalker walker = new ParseTreeWalker();
        // Walk the tree created during the parse, trigger callbacks
        walker.walk(new ShortToUnicodeString(), tree);
        System.out.println(); // print a \n after translation
    }
}

进入控制台: {99,3,451}

预期输出 “\ u0063 \ U0003 \ u01c3”

1 个答案:

答案 0 :(得分:1)

输入{99,3,451}后按Enter键进行换行,然后按 ctrl + Z (至少在Windows上)表示您已完成输入,而不是工作。 最后,在本书中,您将获得“10.1使用语法操作构建计算器”和副标题“构建交互式计算器”,在那里您将找到一些提供键盘输入的更好方法。