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をプッシュして領域を予約して、その変数に対応するノードにイ ンデックスを記憶させておくとかかなぁ。説明よく分からなくてすいません。。