Jintrick.netagenda2004年06月アーカイブ → 2004年06月19日

RELAX NG Compact Syntaxのパーサ探し(未遂)

The parser is not complete. なんだかもう、城に到達できないKみたいな状況になってきた。

rnc2rng の作成の難しさは私の予想を上回るものでしたが、その中に教訓があるように思います。あとでご覧になるようにRELAX NGの短縮構文は非常に読みやすい一方、インスタンス間でトークンの配置がかなりばらついているので、パーサーの作成がキーになりました。これでよかったのかどうかは別として、私は PLY の lex モジュールを使ってスキーマをトークン化し、解析に yacc を使うのはあきらめました。その代わりトークン・ストリームに関してアプリケーション固有のメッセージングを行うことにしました。たいていは、命令コードを調整しながら進めるデバッグよりも、宣言文法のデバッグのほうがむずかしいものです。私はことあるごとにXMLのとっつきにくさにわだかまりを感じますが、それでもXML構文のスキーマを解析する作業のほうがはるかに簡単だったでしょう。私のその作業のほとんどにSAXやDOMのようなフレームワークを使うことができたからです。

dW : XML : XMLの論考: RELAX NGによる逆襲: 第3回より引用。

David Mertz博士が挫折?したことをやってのけているのか、それとも実は甚だ不完全なものなのか。ASTNodeをRELAX NGのXML構文に変換する部分を自分で正確に書けない限り確かめようがない。危険な投資だよなあ。


webmaster@jintrick.net
公開: 2004年06月19日
カテゴリ: Python ,スキーマ