Open2
RFC 5234 ABNF のJava実装とか
正規表現に置き換えるのが嫌なので作ったのかも
Parser作るところからか
入力をメモリとかInputStreamとかいろいろあるのでPacketにまとめて継ぎ接ぎが楽な状態にまとめて先頭からちぎって読み込んでいく。
BNFのベースになる機能をまとめておく。
文字とバイトでは機能が違ってきたりするので分けてみたりする。ABNFでもASCIIベースなのかUnicodeベースなのかよくわからないときがあるので変換ルールも多様。文字はcharではなくintにしておくという選択もあり。
ループの展開が困るので最長一致とか判定するのが困難な場合でもなんとかする。ABNFの順序的な書き換えが必要な場面もあり。
ABNFのハードコーディングができればABNFが読めるようになる。動きが同じならパーサーまわりも成功。
ABNFがあると何ができるのか
- インタプリタ、コンパイラなどのParse部分が簡単に作れるよ
- JSONなどもABNFで作られているのでまるっとコピーすれば読めたりするよ
- メール、URLなんかもABNFで書かれているので正確にパースできる
- RFC系はいろいろできる
- XMLは正規表現使っているので苦手