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 ステップワゴン タグ ホンダ ポーランド記法 携帯 構文解析 納車
タグ / ruby
記事
RubyにおけるDSLとAnnotation(アノテーション) [2006/12/12 02:14]
今年始めから半ばに書いたものだが、
「アノテーション(メタデータ)」
「メタDSLとメタデータ」
ということを考えた時期があった。
このあたりのプロトタイプと現在の考え、さらに、Martin FowlerのRubyAnnotations(あまり多くは書いてないけど)などを参考に考えと実装(時間があれば)を洗練させてみようかと思った。
もう一つ考えたいのは、ruby-dl, rjb, ruby-python などの共通フレームワークの話。両方とも本当に実装でき..
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
..