antlr配置

antlr4环境配置


基本认识

高级语言的编译过程可以分为词法分析,语法分析,语义分析等几步。编译的第一步就是词法分析,而antlr4便是一个可用于生成词法分析器的工具。支持Java, Python等语言平台,这里选用Java。

词法分析的目的是由源程序(字符流)生成对应的记号流(tokens),也就是


antlr4生成的词法分析器也不例外,同时,它可以将分析结果直接以语法树的形式表现出来。

配置过程

  • Java配置:安装好JDK&JRE,添加对应的bin目录路径到环境变量中即可。
  • 安装Eclipse Mars,以备将来需要
  • antlr4的jar包下载后,既可以直接放入JRE的ext目录作为一个第三方扩展包使用,也可以直接添加jar包的路径到CLASSPATH,只要让java运行时可以查找到就好了。
  • 配置完后,为了方便使用,windows下通过创建.bat的方式,linux/maxos下可直接用alias来达到给命令起“别名”的效果,之后输入antlr xxx.g4即可代替输入java org.antlr.v4.Tool Expr.g4这一串内容:
    • windows: 创建antlr4.bat,内容java org.antlr.v4.Tool Expr.g4,并把antlr4.bat的路径加入环境变量。
    • linux/maxos: 直接把alias antlr4="java org.antlr.v4.Tool Expr.g4"加入~/.bashrc即可。
    • P.S. windows下的git-bash是一个简单的bash环境,在其下配置别名时也可以使用linux/macos的方法。另外,某些linux发行版默认不加载~/.bashrc而只加载~/.bash_profile,此时对应地把alias加入~/.bash_profile即可。
  • 类似地,给java org.antlr.v4.gui.TestRig也创建别名grun
    • windows: 创建grun.bat,内容java org.antlr.v4.gui.TestRig
    • linux/macos: 把alias grun="java org.antlr.v4.gui.TestRig"加入~/.bashrc

测试

一个带四则运算的计算器文法

vim Expr.g4

grammar Expr;
prog:   (expr NEWLINE)*;
expr:   expr ('*'|'/') expr | expr ('+'|'-') expr | INT | '(' expr ')' ;
NEWLINE :   [\t\r\n]+ ;
INT     :   [0-9]+ ;

编译

antlr4 Expr.g4

javac Expr*.java

运行

vim Expression.txt

100+2*34

grun Expr prog -gui Expression.txt

截图1


版权声明:本文为bit_Line原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。