Hatena::Groupnadesiko

なでしこ開発日記 このページをアンテナに追加 RSSフィード

 | 

2009-06-30

なでしこ2のために考えていること 11:59 なでしこ2のために考えていること - なでしこ開発日記 を含むブックマーク はてなブックマーク - なでしこ2のために考えていること - なでしこ開発日記 なでしこ2のために考えていること - なでしこ開発日記 のブックマークコメント

なでしこ2を作ると言い出して、ずいぶん時が経っています。心の中で決まっているのは、なでしこ2は、スクリプト言語で実装して、移植性を高くすることです。の布石もあり、Lua をなでしこに実装したのです。

Lua は何もかもシンプルです、しかも、実行ファイルのサイズも小さいのが魅力です。

もしLua でなでしこを書き直せば、現行なでしこの配布ファイルがでかい、Windowsでしか動かないいう制約から解放されることになります。

ただ、知り合いにこの構想を話したら、Lua より、Ruby/Python で書いた方が良いのではという意見も出ましたが、やはり、配布サイズ、組み込みやすさ、改造のしやすさ、実行速度では、Lua にかないません。場合によっては、なでしこ用に、Lua 自身を改良することになるかもしない点も視野に入れてみると、Lua の選択肢が妥当な気がするのです。

少しずつ開発 11:59  少しずつ開発 - なでしこ開発日記 を含むブックマーク はてなブックマーク -  少しずつ開発 - なでしこ開発日記  少しずつ開発 - なでしこ開発日記 のブックマークコメント

んな訳で、基礎ライブラリ作りはじめていこうと思っています。

なでしこ2でやることは、日本語プログラミング言語のソースコードを、Lua のソースコードに直すことです。これは、単純なようで実は難しいものなのです。

「こんにちは」と表示。 → print("こんにちは")

このためには、まず、引数と命令に単語を分割するところから考える必要あります

  • 「こんにちは」と
  • 表示

表示」が print に翻訳されることを認識していなくてはならず、順番を入れ替えて

  • print
  • "こんにちは"

とやります。以下のものはどうでしょうか?

「abc」を大文字変換して表示。

大文字変換を見つけたところで、

を作っておいて、次の「表示」を見つけて、

と組み合わせるのです。

制御構造など、なでしこと Lua はずいぶん違うので、ちょっと悩むところです。

手順としては、

  • (1)トークンで区切る
  • (2)構文木に変換する
  • (3)Luaのソースを吐く (ここが一番難しい)
  • (4)Luaのインタプリタで実行

いう感じになります。Luaのソースを吐くよりは、Luaのバイトコードを吐く方が簡単かもしないので、こは、慎重に考えたいところです。

kyuuzyuu9yenkyuuzyuu9yen2009/06/30 22:27Luaのソースを吐く仕様なら、JavaScriptや他のスクリプト言語への移植は容易ですね。

kujirahandkujirahand2009/07/02 03:03構文などは簡単かもしれませんが、他の言語にするとライブラリの置き換えが大変かもしれませんね。
逆に、Luaを捨てて、JavaScriptに変換するというのは現実的な選択かも?!

 |