1986 Fiscal Year Annual Research Report
Project/Area Number |
61550254
|
Research Institution | The University of Tokyo |
Principal Investigator |
和田 英一 東大, 工学部, 教授 (50010723)
|
Keywords | プログラム言語処理系 / 名前表 / オブジェクトベクタ / LlSP / トライ型データ構造 |
Research Abstract |
この研究費による研究の予備的考察としてPascalのようなコンパイラの場合の字句解析部分をハードウェアにした時の効率を2種類のデータ構造について調べたが、本研究を開始するに当ってLispを代表とするインタプリタでこの回路を使う際の効率および方式について検討、実験を行った。Pascalの時は、予約語のみの回路ではトライ型(つまり1文字ごとに分岐)で、また一般の識別子の名前表も作る回路では通常のテーブルにしたが、これをLispに適用しようとすると次のような問題があることが判った。Lispには予約語の概念がないから、すべての記号アトムを扱わねばならない。UtiLiSPのような実用的処理系では、エラーハンドラのような不時に使う関数名は異常に長く、反対にユーザの使う引数名は殆ど1字の程度に短いので、通常の表にはし難く、トライ型が望ましい。トライ型の木構造で印字名を代表させるのが望ましく、またトライ型データの端点のアドレスで印字名を指定するのがよいが、それにはトライ型データの配置を完全にアドレス順にしなければならず、これは動的に増えてゆく記号アトムの埋め込みにポインタのつけかえなど困難が伴う。とりあえずはアドレス順は格納は考えず、すべての文字にポインタを持たせる方式で、さらにポインタ比率を押さえるため、複数文字単位のトライの効果を測定した。また印字名が逆サーチできるよう、ダブルポインタの方式の是非;システムが用意する関数名を頻度順に埋め込んだ場合の効果;印字名以外にも一般の文字列も同様に扱えるかどうかの検討を行った。一方ハードウェア設計についても検討中だが、解決すべき問題は少くない。ひとつには研究計画を開始した頃にくらべ、CPUのスピードが格段に向上したので、回路がかなりの効果を示さないと意味が少ないこと、専用の記憶回路の完成度が高くチップにはレジスタ程度しか実現できそうもないことなど。
|