ANTLR4 java版代码生成指令参数详解

来源:互联网 发布:数据采集器的工作原理 编辑:程序博客网 时间:2024/06/07 06:54

代码生成的指令参数

此处,我的环境是windows。Linux下相似。

C:\Users\Jeremy>java -jar c:\Javalib\antlr-4.7-complete.jarANTLR 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<option>=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。

原创粉丝点击