ANTLR4のgolangでvisitorパターンで実装するサンプルが無かったので試しに作ってみました。

以下、golangで実装する場合の備忘録

 

これに従ってantlr4をインストール

goのruntimeをインストール

grammerファイルからパーサを生成(今回はformulaというpackage名で作ります)

コマンドを実行するとこんな感じなファイルが生成される↓

visitorを使うのでformula_base_visitor.goに定義されているBaseformulaVisitorを埋め込む形で構造体を作っていく。

書き方は他のターゲットと同じくctxに対してルールのメソッドを呼び出してAcceptしていきます。配列の場合は引数にインデックスを入れるか、Allのprefixがついたメソッドを呼ぶと配列が返ってくるのでそれを使います。終端ノードはGetText()でトークンの文字列を取得できます。

あとは定義した構造体をこういう感じで使っていけばOK。