.. back to home
Antlr4 基础介绍
antlr 安装
下载 jar 包,因为生成工具是用java写的,要保证安装了java,11版本以适应最新版安装
有大量 java C# 的案例代码
github 地址: https://github.com/antlr/antlr4
基础文档: getting-started-with-antlr-v4
1$ cd /usr/local/lib
2$ curl -O https://www.antlr.org/download/antlr-4.9-complete.jar
3# 后面的写到 .bashrc 中
4$ export CLASSPATH=".:/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH"
5$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
6$ alias grun='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig'
编译案例
1# 编译
2antlr4 -lib ./ HiveParser.g4 -o csharp -Dlanguage=CSharp -visitor -package Hive.V3
C# 项目中增加 build 工具
添加工具包
1# Antlr4BuildTasks
2<Project Sdk="Microsoft.NET.Sdk">
3 <PropertyGroup>
4 <OutputType>Exe</OutputType>
5 <TargetFramework>net6.0</TargetFramework>
6 <ImplicitUsings>enable</ImplicitUsings>
7 <Nullable>enable</Nullable>
8 </PropertyGroup>
9 <ItemGroup>
10 <Content Include="input">
11 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
12 </Content>
13 </ItemGroup>
14 <ItemGroup>
15 <PackageReference Include="Antlr4.Runtime.Standard" Version="4.10.1" />
16 <PackageReference Include="Antlr4BuildTasks" Version="10.7" />
17 </ItemGroup>
18 <ItemGroup>
19 <Antlr4 Include="Hello.g4" />
20 </ItemGroup>
21</Project>
方法二: 项目文件增加构建规则
1<Project Sdk="Microsoft.NET.Sdk">
2 <PropertyGroup>
3 <OutputType>Exe</OutputType>
4 <TargetFramework>net6.0</TargetFramework>
5 <ImplicitUsings>enable</ImplicitUsings>
6 <Nullable>enable</Nullable>
7 </PropertyGroup>
8 <ItemGroup>
9 <Content Include="input">
10 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
11 </Content>
12 </ItemGroup>
13 <ItemGroup>
14 <PackageReference Include="Antlr4.Runtime.Standard" Version="4.10.1" />
15 </ItemGroup>
16 <Target Name="tool">
17 <Exec Command="java -jar ../antlr4-4.10.1-complete.jar -Dlanguage=CSharp *.g4"/>
18 </Target>
19 <PropertyGroup>
20 <BuildDependsOn>
21 tool;
22 $(BuildDependsOn)
23 </BuildDependsOn>
24 </PropertyGroup>
25 <PropertyGroup>
26 <CoreCompileDependsOn>
27 tool;
28 $(CoreCompileDependsOn)
29 </CoreCompileDependsOn>
30 </PropertyGroup>
31 <ItemGroup>
32 <Compile Include="Program.cs;HelloBaseListener.cs;HelloLexer.cs;HelloListener.cs;HelloParser.cs"/>
33 <CompileDesignTime Include="Program.cs;HelloBaseListener.cs;HelloLexer.cs;HelloListener.cs;HelloParser.cs"/>
34 </ItemGroup>
35 <PropertyGroup>
36 <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
37 </PropertyGroup>
38 <PropertyGroup>
39 <NoWarn>3021;1701;1702</NoWarn>
40 </PropertyGroup>
41</Project>