はじめに
ある日、なんとなくRustのイテレータ(特にPeekableの扱い)やパーサーを書く練習をしたくなりました。
なので、実際にRust・標準ライブラリしか使わない縛りでJSONパーサーを書いてみました。
普通の文法だとあんまり面白くないので、オブジェクトと配列の最後はコンマを書かないといけないと言う独自文法です。
開発
土曜日の午後6時ごろから始めて、リテラルのパーサーを書き終えたあたりにご飯を食べてアニメを見て、再度開発を始めて完成は10時になりました。
完成品はこちらです。
テストコードはAIに書かせましたが、本体は全部自分が書きました。
Reactでフロントエンドを作るよりは比較にならないほど頭を使うので、楽しかったです。
独自文法について
「作ったみた」というのはどうでもよくて、 本題の独自文法についてです。
TypeScriptエコシステムでは、ライブラリ・フレームワークの設定をJSONで書くのが一般的です。(他の言語でもJSONの使用率は高いかと思います。)
JSONの設定ファイルをいじった時も、もちろんgitでcommitをするときに自分の変更を確認しますよね。
git diffを見るわけですが、現存の文法だと....
{
- "configSomething": "A"
+ "configSomething": "A",
+ "additionalConfig": "B"
}
となって、変更してない行もコンマが増えているので変更した判定になってしまいます。
今回作ったパーサーの文法だと....
{
"configSomething": "A",
+ "additionalConfig": "B",
}
追加した部分しか変更する必要がないので、こんなふうになって大変見やすいです。
最後にコンマ強制を強制することにデメリットはなくメリットしかないと思うんですがどうでしょうか。
以上、「最後にコンマ必須文法」の宣伝でした。
補足
Q: そもそも、コンマなくてよくね(?)
A: yamlを使ってください。