Chiba.rb の皆様
最近の平日は、市内のふっるーい喫茶店でノマドっていることが多い高梨です。
きょう日アーケードゲーム機が置いてある店なんてなかなかなく、店内もいい感じ
に小汚くて気に入っています。w
さて、表題の件ですが、少しずつ進めております。字句解析はRexical(旧Rex?)、構
文解析はRacc を使うことにしました。最初は難解ですが、分かり始めると結構ハマ
りますw 「Rubyを256倍使うための本 無道編」なんて古書を引っ張りだして教科書
にしています。
今のところ、LLVM IR で頻出する
%i = alloca i32, align 4
や、
store i32 %11, i32* %i, align 4
のような代入・命令文が通るようになりました。関数定義のdefine文など、ブロック
を伴うものはまだ対応してません。(構文エラーになる)
カッコが多重になる関数呼び出し(call 文)も未対応です。
ところで、この手のツールが使えるようになるといろいろ応用が効きそうな気がして
いて、例えば私は仕事でPHPを扱うことが多いんですが、
・既存システムのリファクタリング用解析ツール
システム内で定義されているクラス・関数の数、またその行数、ループの深さ
などを統計的に数え上げ、複雑度を計測。
・WordPress テーマコンバータ
WP用に作られたテーマを他のシステム向けに移植。(MovableType, RoR, その他CMS)
などもいけるかもしれませんし、アセンブラっぽい構文に慣れてしまえば、gas2nasm
のような変換ツールも書ける、のかもしれません。
処理系ハックは、いわゆる「日銭を稼ぐためにやるプログラミング」とはまた違った
「俺スゲー感」が味わえますね。w 今回はLLVM IRを処理することを当面の課題に
したわけですが、ちょっとした処理系をササッとでっち上げられたらカッコイイかも。
--
(有)高梨IT製作所 高梨 忍 (たかなし しのぶ)
〒299-5503 千葉県鴨川市天津1538-3
Tel.04-7094-2051 / 090-4743-8675
URL:
http://www.takanashi-it-factory.com
Email:
si...@takanashi-it-factory.com
Mobile:
sino...@gmail.com
Twitter: @sinobbish