antlr4_init
coding
假期打算利用 antlr4
快速入门自制编程语言。采用 antlr4
是因为是参考了gscript
,同时其可以较实现语法解析的部分。
因为要使用antlr4
所以要了解两点,第一点是 antlr4
能做什么,第二点是antlr4
是如何用。
是什么
首先关于antlr4
能做什么 ,官网描述
ANTLR(语言识别的其他工具)是一个 强大的解析器生成器,用于读取、处理、执行或 翻译结构化文本或二进制文件。它被广泛用于构建 语言、工具和框架。从语法中,ANTLR 生成一个 可以构建和遍历解析树的解析器。
同时 antlr4
还定义了语法规则。我们可以编写对应的解析规则,生成各种语言的代码,然后对符合解析规则的字符串进行解析。
例如网上常见的四则运算
grammar Hello;
// Tokens
MUL: '*';
DIV: '/';
ADD: '+';
SUB: '-';
NUMBER: [0-9]+;
WHITESPACE: [ \r\n\t]+ -> skip;
// Rules
start : expression EOF;
expression
: expression op=('*'|'/') expression # MulDiv
| expression op=('+'|'-') expression # AddSub
| NUMBER # Number
;
定义了解析规则。可以通过对应的命令生成对应语言的解析代码,用于分析字符串。但是分析后要实现的逻辑还需开发自己自行实现。
怎么用
首先是安装。由于种种原因,我并没有按照官网的 pip
方式安装。(依赖较多)。主要是参考官网的 jar
的安装方式。
我的mac上默认配置的 java8
, java11
是自行安装在其他目录的 。只需要配置相应的别名 java11 -jar xxxx xxx.jar
就可以运行了。
windows 上是采用的bat
调用的。最近好些时间没有使用pwsh
了,其实应该用pwsh
进行配置的。
将自定义的 bin 目录设置到windows环境变量。
antlr4.bat
java -Xmx500M -cp "D:\Program\bin\antlr-4.11.1-complete.jar" org.antlr.v4.Tool %*
grun.bat
java -Xmx500M -cp "D:\Program\bin\antlr-4.11.1-complete.jar" org.antlr.v4.gui.TestRig %*
重启重启输入 antlr4
和 antlr4 -h
(第二条命令是无效命令,仅仅是验证是否可以接收参数)
> antlr4
C:\Users\xxx\Desktop\blog>java -Xmx500M -cp "D:\Program\bin\antlr-4.11.1-complete.jar" org.antlr.v4.Tool
ANTLR Parser Generator Version 4.11.1
-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
-no-visitor don't generate parse tree visitor (default)
-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
-Xexact-output-dir all output goes into -o dir regardless of paths/package
> antlr4 -h
C:\Users\xxx\Desktop\blog>java -Xmx500M -cp "D:\Program\bin\antlr-4.11.1-complete.jar" org.antlr.v4.Tool -h
error(2): unknown command-line option -h
01
评论列表