json parserつくった

字句解析とかパーサーとかO’Reilly Japan - Go言語でつくるインタプリタでつくったけど、すっかり書き方忘れたのでJSONのパーサーを書いた。
実装の参考にした記事はこちら
RustでJSONパーサーをフルスクラッチで実装する #Rust - Qiita



Goのjsonパッケージみたいに構造体にUnmarshalするところまでやるのはめんどくさいので、any型にmapとかで変換したデータを返すようにした。Lexerが文字列でなくio.Readerを受け取って逐次パースするので、ファイルでもなんでもストリームで扱える。その他はだらだらロジック書いてるだけなので、ベンチ書いてないけどとても遅いと思われ。

テキストをなにかしらのデータ構造としてパースするコードが書けると、ツールとか作るときに幅が広がる気がするので勉強になる。JSONのパーサーのコードは全部で500行くらいなので、新しい言語勉強するときによさげ。

年末年始はZigやりたい。