json parserつくった
Categories:
字句解析とかパーサーとかO’Reilly Japan - Go言語でつくるインタプリタでつくったけど、すっかり書き方忘れたのでJSONのパーサーを書いた。
実装の参考にした記事はこちら
⇢ RustでJSONパーサーをフルスクラッチで実装する #Rust - Qiita
Goのjsonパッケージみたいに構造体にUnmarshalするところまでやるのはめんどくさいので、any型にmapとかで変換したデータを返すようにした。Lexerが文字列でなくio.Readerを受け取って逐次パースするので、ファイルでもなんでもストリームで扱える。その他はだらだらロジック書いてるだけなので、ベンチ書いてないけどとても遅いと思われ。
テキストをなにかしらのデータ構造としてパースするコードが書けると、ツールとか作るときに幅が広がる気がするので勉強になる。JSONのパーサーのコードは全部で500行くらいなので、新しい言語勉強するときによさげ。
年末年始はZigやりたい。