@@ -287,16 +287,22 @@
関数はいわゆる「クロージャ」です。静的スコープで外側の環境にアクセスできます。 テーブルはいわゆるプロトタイプチェーンを持っていて、 自分にないフィールドの場合は親に問い合わせが行く感じになっていますが、 フィールドの書き換えがないので、これは特に意味ないかもしれない…。
++また、リストを扱うために、いわゆる「cons リスト」を使います。 +空リストを {}、1個以上要素があるものを {car: 先頭要素, cdr: 二番目以降のリスト} +という形で。この形でリストを扱わなければならないという決まりはありませんが、 +この形は特別扱いされて print で綺麗に出力されたりします。 +
+構文木がどのようなテーブルで渡されてくるかについては、ソースドキュメントの
+polemy.ast
+のページをご覧下さい。例えば変数名を表す Var
クラスには、
+継承の分も合わせて
+LexPosition pos;
+と string name; の2つのメンバがあるので
+
+ { is: "Var", + pos: {filename:"foo.pmy", lineno:123, column:45}, + name: "x" } ++
+こんな感じのテーブルになります。 +クラス名が is フィールドに、メンバ変数はそのままの名前で入ります。 +配列メンバは cons リストになって入ってきます。 +