[Protra-members] Re: オブジェクト指向化

Back to archive index

Daisuke Arai protr****@darai*****
2004年 3月 14日 (日) 23:52:13 JST


daraiです。

> Wikiでは設計の変更履歴や理由を完全に残せないので、議論はメールを
> 中心に行ったほうがよいと思います。白板や議事録の代わりとしては積
> 極的に利用しましょう。
了解しました。とりあえずさっきの例とかは書いておきますね。

> オブジェクト指向化についてはPythonを参考にしましょう。完全に互換
> 性を残したままいけるはずです。ポイントはインスタンス変数やメソッ
> ドを指すために必ずselfを使うことにあります。
私はPythonのコードを見た事がないんですが、既存の言語と似ているのはいい事
だと思います。グローバル変数はSystemのインスタンス変数が同じ役割を担うの
で廃止ですね。

> Pythonに習うのなら、オブジェクトの生成は
> MA.New(20)
> ではなく
> MA(20)
> とするべきですが、普通の関数の呼び出しとまぎらわしいので、明示的
> に示す方式を採ってみました。まぎらわしいからといって、従来の関数
> 呼び出しを廃止したくはないですしね。
そうですね。無難な選択だと思います。

内部的な実行形式についてなんですが、現在は変数の値などを出すときにいちい
ちハッシュテーブルを見て、変数名からValueというクラスのインスタンスを引
き出しています。関数を呼び出すときも同じで、関数名から FunctionDefitionNode
のインスタンスを引き出しています。これが速度的にボトルネックになっている
んじゃないかと思うんです。そのまんまでもいいとは思うんですが、ハッシュか
ら探索しなくてもparse時にあらかじめノードにインスタンスを貼り付けておく
ことって可能ですかね?(まだANTLRのドキュメントを読んでないので、ノードと
いうもの自体があるのか不明ですが、TreeParserというのはきっとノードを作っ
てるんだろうなぁと考えての発言です。)

一番簡単な策は、Valueの入るArrayListを用意しておいて、新しい変数名を検出
するたびにnullをプッシュして領域を予約して、その変数に対応するノードにイ
ンデックスを記憶させておくとかかなぁ。説明よく分からなくてすいません。。




Protra-members メーリングリストの案内
Back to archive index