antlr4_init

假期打算利用 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 %*

重启重启输入 antlr4antlr4 -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

评论列表