1.创建maven项目
-
创建maven项目
首先创建一个maven项目,可以使用maven-archetype-quickstart类型创建。并新增一些文件目录。如下图所示。
-
修改pom文件
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4</artifactId>
<version>4.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.7</version>
<executions>
<execution>
<id>antlr</id>
<goals>
<goal>antlr4</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<!--指定导入语法和标记文件的位置。-->
<libDirectory>src/main/antlr4/imports</libDirectory>
<!--ANTLR语法文件(*.g4)所在的目录。-->
<sourceDirectory>src/main/antlr4</sourceDirectory>
<!--指定生成Java文件的输出目录。-->
<outputDirectory>src/main/java</outputDirectory>
<!--生成解析树侦听器接口和基类。-->
<listener>true</listener>
<!--生成解析树访问者接口和基类。-->
<visitor>true</visitor>
<treatWarningsAsErrors>true</treatWarningsAsErrors>
</configuration>
</plugin>
</plugins>
</build>
更多的antlr4-maven-plugin组件修改可以参考官网的介绍。
2.创建g4文件编译文件
然后我们在src/main/antlr4目录下创建G4文件。文件目录结构会对应后面编译生成的java文件的类文件(如果这句不理解,可以在下面执行mvn编译命令之后在回来看)。下面是expr的G4文件代码。文件名称必须和grammar Expr名称一致。
grammar Expr;
/** 起始规则,语法分析的起点 */
prog
: stat+ ;
stat
: exprStat
| assignStat
;
exprStat
: expr SEMI
;
assignStat
: ID EQ expr SEMI
;
expr
: expr op = (MUL | DIV ) expr # MulDivExpr
| expr op = ( ADD | SUB ) expr # AddSubExpr
| INT # IntExpr
| ID # IdExpr
| LPAREN expr RPAREN # ParenExpr
;
MUL : '*' ;
DIV : '/' ;
ADD : '+' ;
SUB : '-' ;
LPAREN : '(' ;
RPAREN : ')' ;
ID : LETTER (LETTER | DIGIT)* ; // 匹配标识符
INT : [0-9]+ ; // 匹配整数
EQ : '=' ;
SEMI : ';' ;
COMMENT : '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN);
WS : [ \r\n\t]+ -> channel(HIDDEN);
fragment
LETTER : [a-zA-Z] ;
fragment
DIGIT : [0-9] ;
3.执行编译demo
上面的项目结构和G4文件已经准备好了。下面可以直接执行:mvn clean package命令进行编译,编译之后的maven目录结构如下图。
以上便是这次的所有内容,你可以在此基础上开发更多的内容。