[前][次][番号順一覧][スレッド一覧][生データ]

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]