.. 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>