2006-03-01から1ヶ月間の記事一覧

どうでもいいが

(())な「脚注記法」は pre 中でも有効なのか。そういうもんか?

lstring

lstring は文字列を取り扱っている。まずヘッダファイルを見てみる。たとえば次の定義は文字列の長さを計算するものであるようだ。 #define sizestring(l) (cast(lu_mem, sizeof(union TString))+ \ (cast(lu_mem, l)+1)*sizeof(char))cast というのはマクロ…

lobject

まず、 lobject.h を見ると、ここにはたくさんの型定義が書かれている。 lua のデータオブジェクトを表現するのは次の型宣言。 typedef struct lua_TObject { int tt; Value value; } TObject; TObject は「タグつきオブジェクト」の意。 tt がタグ、 Value …

lua のファイル

さて、言語の詳細をあんまり詳しく解説することは目的ではないので次に進む。lua の実装にはどれくらいのプログラムが関わっているかというと次のようになっている(このほかに lua コマンド実装の lua/* と luac コマンド実装の luac/*、各種ライブラリの li…

コルーチン

ところで Lua の言語的な特徴は「なんでもテーブル」ということかと思ったら、あとコルーチンもあることを知る。コルーチンを作るのには、 関数を用意し、 coroutine.create でコルーチン化し、 coroutine.resume で実行、 コルーチン内では coroutine.yield…

ローカルスコープについて

luaの挙動の話は前回でおしまいの予定だったが、補足が2件ほどあった。ひとつめがローカルスコープと関数の扱い。local 宣言について先週は「そこで新たにローカルスコープを作る」というタイプの表現をしたが、どちらかというと、「ある種の操作では自動的…

Lua の wiki

2ch の Lua スレを見ていたら、 Lua など、C言語に組み込んで使うタイプのスクリプト言語の wiki が立ち上がった。 http://wikiwiki.jp/lua/っていってもまだ何もないみたい。この文章は2週目にして飽き気味。三日坊主は避けたい。

変数のスコープ

レキシカルスコープ a = 1 function f(x, y) return(x+a, y+a) end print(f(1, 2)) # => 2, 3 a = 2 print(f(1, 2)) # => 3, 4 また、 local 宣言でローカルスコープを積むことができる。ただしローカルスコープの終端が決定できないので、積むときには do l…

制御構文

while ループ。 while 条件 do ブロック end until ループ repeat ブロック until 条件; for ループ for i = 0, 10, 2 do print(i); end 0が初期値、10が終端値、2がステップ。ステップを省略すると1。テーブルにアクセスする場合には、 for i, v in ary do …

関数

関数は function () 〜 end で定義する。 function (a, b) return a + b end 具体的な関数定義は、 function f(a, b) return a + b end のように名前を書くが、これは f = function (a, b) return a + b end と同じこと。関数呼出しはC言語と同じような感じ…

Lua という言語について

まず最初に断り書きを。正しい定義は知らないが、とりあえず言語としての Lua を「Lua」と大文字から始めて書く。一方、ソフトウェア、およびコマンド名としては「lua」と小文字から始めて書くことにする。今はちょっと忙しいので、実装を細かく見ている余裕…

趣旨

この日記はずっと放置していたのだが、最近になってちょっと勿体無い気がしてきた。ので何かをやろうと思いついた。何をするか、というネタもないではないが、とりあえず思いついたところで Lua の勉強をすることにする。http://www.lua.org/Lua は組み込み…