LoginSignup
0
1

More than 1 year has passed since last update.

Visual Studio2022+Antlr4Templates+Antlr4BuildTasksでANTLR4を使ったC#プログラム開発

Last updated at Posted at 2022-06-19

はじめに

経緯

Visual StudioでANTLR4の開発の手助けをするANTLR Language SupportがVisual Studio2017で対応を止めているため、代替手段を模索。
このstackoverflowの記事Antlr4TemplatesAntlr4BuildTasksを知ったため試してみた。

前提

Visual Studio2022インストール済

準備

環境構築

1.テンプレートそのままの内容をVisualStudioでビルドできるところまで実施

src/sol1フォルダにANTLR4開発プロジェクトFooを登録。
テンプレートから作成されたg4ファイルから自動的にparser/lexerが生成される。
またビルドが通るところまで実施。

1.1.テンプレートからプロジェクト作成

cd src/sol1
mkdir Foo
cd Foo
dotnet new csharp-combine

補足: 他にC#向けのテンプレートとしてparser/lexerが分かれているantlr4cs-splitが有る。

1.2.Visual Studioで開く

  1. 作成されたcsprojファイルをVisual Studioで開く。
    この時点でVisual Studioからビルドできる。
    しかしg4ファイルからのparser/lexerのC#プログラムの自動生成はされない、
  2. Visual Studioのファイル > Foo.sln の保存 を選択し、ソリューションを保存

1.3.Visual StudioプロジェクトにAntlr4BuildTasks導入

  1. パッケージマネージャー・コンソールから導入
    Install-Package Antlr4BuildTasks

1.4 終わり

ここまでで、g4ファイルから自動的にparser/lexerのC#プログラムが自動生成される。
また、ビルドも通る。

2. 自作のg4ファイルをVisualStudioでビルドできるようにする

src/sol1フォルダにANTLR4開発プロジェクトWooを登録。
自作のg4ファイルから自動的にparser/lexerが生成される。
またビルドが通るところまで実施。

2.1.テンプレートからプロジェクト作成

cd src/sol1
mkdir Woo
cd Woo
dotnet new csharp-combine

2.2.g4ファイルを置き換える

テンプレートから作成されたArithmetic.g4を削除し、自作のg4ファイルを配置。
ここでは、WooFoo.g4

WooFoo.g4
grammar WooFoo;

woofoo : expression (SEMI expression)* EOF;
略

2.3.Program.cs編集

static void Try(string input)

Program.cs
            var lexer = new ArithmeticLexer(str);
            var parser = new ArithmeticParser(tokens);

Program.cs
            var lexer = new WooFooLexer(str);
            var parser = new WooFooParser(tokens);
Program.cs
            var tree = parser.file();

Program.cs
            var tree = parser.woofoo();

2.3.csproj編集

Woo.csproj
    <Antlr4 Include="Arithmetic.g4">

Woo.csproj
    <Antlr4 Include="WooFoo.g4">

2.4.Visual Studioで開く

  1. 作成されたcsprojファイルをVisual Studioで開く。
  2. Visual Studioのファイル > Foo.sln の保存 を選択し、ソリューションを保存

2.5.Visual StudioプロジェクトにAntlr4BuildTasks導入

  1. パッケージマネージャー・コンソールから導入
    Install-Package Antlr4BuildTasks

2.6 終わり

ここまでで、g4ファイルから自動的にparser/lexerのC#プログラムが自動生成される。
また、ビルドも通る。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1