代码生成的指令参数
此处,我的环境是windows。Linux下相似。
C:\Users\Jeremy>java -jar c:\Javalib\antlr-4.7-complete.jar
ANTLR Parser Generator Version 4.7
-o ___ specify output directory where all output is generated(指定生成代码的
存放目录)
-lib ___ specify location of grammars, tokens files
-atn generate rule augmented transition network diagrams
-encoding ___ specify grammar file encoding; e.g., euc-jp
-message-format ___ specify output style for messages in antlr, gnu, vs2005
-long-messages show exception details when available for errors and warnings
-listener generate parse tree listener (default)
-no-listener don't generate parse tree listener
-visitor generate parse tree visitor(指定要生成
用于遍历parse tree的visitor相关类方法)
-no-visitor don't generate parse tree visitor (default)
-package ___ specify a package/namespace for the generated code(为生存的代码
指定package名和命名空间)
-depend generate file dependencies
-D=value set/override a grammar-level option
-Werror treat warnings as errors
-XdbgST launch StringTemplate visualizer on generated code
-XdbgSTWait wait for STViz to close before continuing
-Xforce-atn use the ATN simulator for all predictions
-Xlog dump lots of logging info to antlr-timestamp.log
针对前面博文中的Hello.g4实例,运行如下命令(我这是在Windows下的MINGW终端下运行的。antlr-4.7-complete.jar放在C盘的Javalib目录下。)
//根据grammar文件生成相应的ANTLR API 代码.java文件
$ java -jar /c/Javalib/antlr-4.7-complete.jar -visitor Hello.g4
//编译java代码
$ javac Hello*.java
此时,得到最终的Hello可执行程序。
这里我加上”-visitor”参数,即代表了要生成用于遍历parse tree的visitor相关类方法。
示例测试
方法一:
通过文本显示结果。
$ java org.antlr.v4.gui.TestRig Hello r -tree
(输入) hello username
^D
(r hello username)
(That ^D means EOF on unix; it’s ^Z in Windows.) The -tree option prints the parse tree in LISP notation.
方法二:
通过可视化UI来显示 parse trees 可能更加直观。命令如下:
$ java org.antlr.v4.gui.TestRig Hello r -gui
(输入) hello username
^D
随后便弹出一个对话框来显示规则r:在关键字hello后面跟了一个username。