書籍 言語実装パターン のサンプルコードを Maven 化し、 現代的な IDE にインポートできるようにするためのスクリプトです。
オリジナルのコードは Apache Ant でプロジェクト構成されていますが、 2022 年現在もはやメジャーなツールではないためコードをビルドするハードルが上がってしまっています。
このコードサンプルを Maven プロジェクトとして取り扱えるようにすることで、上記の問題を解消します。
ページ |
ディレクトリ |
p.29 |
parsing/lexer |
p.35 |
parsing/recursive-descent |
p.39 |
parsing/multi |
p.56 |
parsing/memoize |
p.74 |
parsing/antlr |
p.83 |
IR/Homo |
p.85 |
IR/Normalized |
p.87 |
IR/Hetero |
p.99 |
walking/embedded |
p.101 |
walking/visitor |
p.105 |
walking/tree-grammar |
p.109 |
walking/patterns |
p.125 |
symtab/monolithic |
p.130 |
symtab/nested |
p.143 |
symtab/aggr |
p.152 |
symtab/class |
p.162 |
semantics/types |
p.171 |
semantics/promote |
p.176 |
semantics/safety |
p.183 |
semantics/oo |
p.199 |
interp/syntax |
p.204 |
interp/tree |
p.226 |
interp/asm |
p.231 |
interp/stack |
p.240 |
interp/reg |
p.260 |
trans/make |
p.265 |
trans/wiki |
p.274 |
trans/intro |
p.278 |
trans/web |
p.280 |
trans/ast |
p.283 |
trans/ast-st |
p.290 |
trans/sql |
ソースコードには antlr-3.2.jar
が同梱されていますが、どうやら Java7 までにしか対応していないようです。
Java17 で実行すると次のようなエラーが出ました。
internal error: Can't get property indirectDelegates using method get/isIndirectDelegates from org.antlr.tool.Grammar instance : java.lang.NullPointerException
検索してみると、このバージョンは Java7 までにしか対応していないようです。
公式サイトから最新版(これを書いた時点では 3.5.3
でした)をダウンロードしてそれを利用する必要があります。
ちなみにコマンドラインでの実行方法はこちらに説明があります。
理由がわからないので Stack Overflow で質問しています。