我整理了:
grammar Hello; // Define a grammar called Hello
r : 'hello' ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines, \r (Windows)r
生成类文件的命令(注意我使用 -package hellogrammer 创建它):
java -jar antlr-4.9.2-complete.jar -package hellogrammer -o c:\Dev\my\java\ANTLR\test_project\core\src\main\java\hellogrammer c:\Dev\my\java\ANTLR\test_project\core\src\main\java\Hello.g4
它创建了很好的文件,然后我编译这些文件,它看起来像这样:
c:\Dev\my\java\ANTLR\test_project\core\target\classes\hellogrammer>ls -1
HelloBaseListener.class
HelloLexer.class
HelloListener.class
'HelloParser$RContext.class'
HelloParser.class
现在,当我尝试执行 TestRig 命令时,我没有从命令行得到任何响应:
c:\Dev\my\java\ANTLR\test_project\core\target\classes>java -cp ".;C:/Dev/my/java/ANTLR/antlr-4.9.2-complete.jar" org.antlr.v4.gui.TestRig hellogrammer.Hello -tree
它只是堆叠,没有错误或任何响应...
TestRig 需要两个单独的参数,第一个是语法名称和启动规则名称。然后,此 TestRig 开始解析来自输入流的输入,因此,您可以键入输入(使用 Ctrl-D 表示信号 EOF),也可以使用
<
将输入重定向到 stdin
尝试:
c:\Dev\my\java\ANTLR\test_project\core\target\classes>java -cp ".;C:/Dev/my/java/ANTLR/antlr-4.9.2-complete.jar" org.antlr.v4.gui.TestRig hellogrammar.Hello r -tree < “your input file”