A500 AirH" android Annotation cvs cygwin DSL Eclipse Flash flex git Gizmo HTC Desire Huawei ICONIA java javascript Linux metadata moonse NOKIA OpenLaszlo packrat RK1 rockchip ruby RubyKaigi RubyOnRails S11HT Seesaa sourceforge superfroyo SVN tdp4j tdp4js tdp4r thunderbird vaniljeclair vodafone W-ZERO3 Windows X02HT X06HT x11 xml ステップワゴン タグ ホンダ ポーランド記法 携帯 構文解析 納車
タグ / 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
..