gpt4 book ai didi

antlr - 权威的 ANTLR 引用 - 第一个程序不起作用

转载 作者:行者123 更新时间:2023-12-04 18:48:15 25 4
gpt4 key购买 nike

我最近购买了 The Definitive ANTLR Reference我很高兴开始使用 ANTLR。
在第一章中,展示了这个语法:

grammar T;

options {
language = Java;
}

r : 'call' ID ';' {System.out.println("invoke " + $ID.text);} ;
ID : 'a'..'z'+ ;
WS : (' '|'\n'|'\r')+ {$channel=HIDDEN;} ;

我将这个语法复制到一个文件中,(.g 扩展名),生成了词法分析器和解析器,并创建了一个主类,如下所示:
import org.antlr.runtime.*;

public final class Test {
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRInputStream(System.in);
TLexer lexer = new TLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
TParser parser = new TParser(tokens);

parser.r();
}
}

没有真正的错误,但是当我运行主类并输入时:
call foo;

没发生什么事。 “invoke foo”应该被输出到屏幕上,但没有任何 react 。我不想在没有完成任何一个练习的情况下继续读这本书。如果重要的话,我在 Eclipse 中使用 ANTLR 3.4。对不起,如果这似乎是一个简单的问题,但我是 ANTLR 的新手。

谢谢,
欧玛

最佳答案

您需要输入 EOF 字符。

对于基于 UNIX 的系统,它是 Ctrl-D .

对于基于 Windows 的系统,它是 Ctrl-Z .

编辑

由于您通过控制台输入输入,并且 ANTLR 将数据作为流读取,因此它需要 EOF。在本书的后面,您将通过文件输入数据,文件的 EOF 将结束流。您还可以将输入保存到文件中,然后将文件中的输入通过管道传输到命令中。

关于antlr - 权威的 ANTLR 引用 - 第一个程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com