
okomeの日記: ABNFパーサ 1
日記 by
okome
RFC読んでてRESTからJSONつついてみようとしたところ、JavaでJSON系パーサと下地のABNFエンジンまでを作ってしまい、これが解析系なのかと面倒くさい。よくあるJSON-Javaマッピング(OMAP? JSON-B?)的なところまでさくっとできたので次は暗号系へ。
ABNFの方にRFC 5322のメールとかABNFそのまま読ませてパースすると壮絶でRFC 7230 HTTPは少し拡張が必要だったりでふらっと対応してみるのに苦労した。
JavaのXMLパーサでよくあるStream系とDOM系ならDOM系になるんだろか1パスとか2パスというようなのは古いのか。JSON-Pにも似たようなのがあるらしいが
世の中にはJSON用にJacksonとかあるらしいけど似たものっぽいらしいしまだ使ってない。JSON-Pっぽい方をかぶせておくところまで済。
寄り道してHTMLやXMLパーサを作ろうとしてみるのでEBNF引き算を作らないといけないのか調査中。
なんとなくできそうだけども。
何でも作れるABNFパーサとJSONどっちに価値があるのかな。謎。vs正規表現なABNFは強そうなのだけどEBNFは正規表現使ってるぽい?
スクリプト系の次はこんぱいら?
ABNFパーサ (スコア:2)
ABNFって構文としては結構いいと思うんですけど、
あんまこれっていうパーサがないんですよねぇ
自分で書いたこともありますけど
HOGE= LWSP aaa LWSP
MOGE = HOGE HOGE
とかの時、aaaの間にSPがたっぷりあるデータが来るとLWSP中のSPを前に入れるか後に入れるかとかで発散しちゃったりしてどうすりゃいいのか
ホスト名とかも定義通りに書いちゃうと必ず手戻りが発生してうざかったりした覚えが
速さを求めるならABNFのコンパイル時に片寄せするとかの最適化段を入れないといけないのかなぁ