パスワードを忘れた? アカウント作成
15042904 journal
Java

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は正規表現使ってるぽい?
スクリプト系の次はこんぱいら?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by nnnhhh (47970) on 2021年01月05日 12時08分 (#3953199) 日記

    ABNFって構文としては結構いいと思うんですけど、
    あんまこれっていうパーサがないんですよねぇ

    自分で書いたこともありますけど
    HOGE= LWSP aaa LWSP
    MOGE = HOGE HOGE
    とかの時、aaaの間にSPがたっぷりあるデータが来るとLWSP中のSPを前に入れるか後に入れるかとかで発散しちゃったりしてどうすりゃいいのか
    ホスト名とかも定義通りに書いちゃうと必ず手戻りが発生してうざかったりした覚えが

    速さを求めるならABNFのコンパイル時に片寄せするとかの最適化段を入れないといけないのかなぁ

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...