読者です 読者をやめる 読者になる 読者になる

最速でANTLR4を試す

ANTLR4がすごい良いです。

「The Definitive ANTLR4Reference」という電子書籍を買って最初のほう読んでますが、

節々から漂う著者の「もう25年も開発しているぜぇ(ドヤァ」がたまりません。


というわけで早速最速でANTLR4を試してみます。


まずいつものようにIntelliJを使います。

IntelliJ 持っていないという人は サムライズム で購入するとちょっとだけ安く買えるかと思います。


f:id:tan_go238:20130625000841p:plain

そのまま Finish
f:id:tan_go238:20130625000913p:plain




build.gradleをプロジェクト直下に追加しましょう

build.gradle

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'idea'

ext {
    antlr4Version = '4.0'
    antlr4Artifacts = [ 'antlr4', 'antlr4-runtime' ]
}

configurations {
    antlr4
}

repositories {
    mavenCentral()
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.6'
}

dependencies {
    antlr4Artifacts.each { artifact ->
        antlr4  group: 'org.antlr', name: artifact, version: antlr4Version
    }
    compile     group: 'org.antlr', name: 'antlr4-runtime', version: antlr4Version
}

task antlr4(type: JavaExec) {
    main = 'org.antlr.v4.Tool'
    args = ['Hello.g4', '-o', 'src/main/hoge', '-no-listener', '-visitor']
    classpath =  configurations.antlr4
}

コマンドプロンプトを起動して作ったプロジェクト直下まで移動、以下のコマンドを実行します。

gradle idea

IntelliJに戻ると「リロードしてください」といわれるのでそのままOKします。

f:id:tan_go238:20130625001208p:plain


次にまたプロジェクト直下に Hello.g4 ファイルを作成します。

Hello.g4

grammar Hello;

@header {
package hoge;
}

r  : 'hello' ID ;
ID : 'a-z'+ ;
WS : [ \t\r\n]+ -> skip ;

作成したらJetGradleを開き(開きかたは以前のブログを参考)、build.gradleを追加します。

f:id:tan_go238:20130625001511p:plain


antlrタスクを実行します。

f:id:tan_go238:20130625001525p:plain


上記手順で以下のファイルをANTLRが生成すると思います。

f:id:tan_go238:20130625001758p:plain