タグ / tdp4r

記事
tdp4rでXMLのtop-down parsing/transduction [2006/07/23 09:11]
TDP4RでXMLをパース/変形するためのパーサのセットを用意してみた。 これで、top-downにパースしたり変形するものについては対応できる。 例えば、a,bのタグが連続で現れるものをabというタグに変形し、他のものは大文字に変形するものは次のような変形ルールを記述すればよい。 (サンプルsample_xml.rbから引用) g.xml = element("a"){ element("b"){ g.xml..
ポーランド記法<->逆ポーランド記法 [2006/07/22 15:22]
http://jp.rubyist.net/magazine/?0015-EditorsNote injectを使った実装と、tdp4rを使ったものを並べてみた。この程度なら構文解析使うと面倒になる。injectを使うとこうなる。 def postfix2prefix(expr) expr.split(/\s+/).inject([]){|acc,x| p acc case x when "+", "-", "*", "/" ..
TDP4R 1.4.0: 自動最適化 [2006/07/22 03:25]
TDP4Rについて A B | A C とあるものを可能であれば A (B | C) と自動的に変形するようにしてみた。テストはまだ不十分かもしれない。
TDP4R: Packrat Parsing [2006/07/20 10:17]
TDP4Rの高速化に関連して、Packrat Parsingの論文を少し眺めてみた。やりたいことは、バックトラッキングの抑止で、その手段として、lazy evaluationとmemoizationという新しい道具を使ったという感じだ。関数で再帰下降式に実装する場合を考えると、各パース関数は(statelessであれば)文字を一つ入力すれば、後続するパース関数が一意に定まる。よって、その後続するパース関数をメモできるというもの。のように見えた。 結局、A->B C D1..
TDP4RでXMLの変換(2) [2006/07/19 07:24]
少しサンプル(sample_xml.rb)を改良して、パースしながらDOMを構成するようにしてみた。 文法部分は以下の通り。XMLParserというモジュールにXML用のパーサとしてelementやconstructというものを定義している。まだ未完成で悩ましいところは多々あるが、完成すれば、XSLTやテンプレートなどとは違ったXMLの変換ができる。 translator = TDParser.define{|g| extend XMLParser ..
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。