langsmith:207
From: dan <dan dgames.jp>
Date: Sat, 16 Apr 2005 10:50:28 +0900
Subject: [langsmith:207] Re: 参加させてください
だんです。 machida,tatsuhiko wrote: > さっそくですが、よろしかったら作成された言語の事を教えてください。 > 文法の複雑さと実装コストという側面から、Rubyで3日で実装した言語は、 > 自分にとってとても興味深いです。 > > 正規表現を使った、アセンブラ...ということでしょうか? その自作した言語のソースを Ruby で書いたコンパイラに渡すと アセンブリソースが出力されます。 コンパイラは 500 行ほどの Ruby スクリプトです。 たとえばこんなソースをコンパイルできます。 def foo(arg1, arg2) if(arg == arg2) return arg1 end a = 5 a += arg2 a += $g return a end def main $g = 0 foo(1, 5) end コンパイラは大変いい加減なもので、ソースを頭から一行ずつ 読み込んでは正規表現を使ってその行をアセンブリソースに 置換します。関数定義の中であるとか、 if 文の中である などの簡単な状態は記憶しながら読み進めています。 # それでもそれなりに処理が複雑になってしまい、もう機能を # つけたしなくないといういや実装になってしまいました。 ローカル変数もグローバル変数もそれぞれがメモリを 固定で占有する非効率的なものです。 それでも、実行速度やメモリがシビアでない状況であれば、 十分に有用なものでした。(アセンブリ言語を書くのに比べれば) それと自分も言語設計者な気分が味わえてとても楽しく、 貴重な体験をすることができました。 -- ML: langsmith quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
205 2005-04-16 10:13 [dan dgames.jp ] 参加させてください 206 2005-04-16 10:24 ┗[t.machida.unicom jco] -> 207 2005-04-16 10:50 ┗[dan dgames.jp ] 208 2005-04-16 11:11 ┗[t.machida.unicom jco]