コンテンツにスキップ

意味のないScheme:構文木としてのS式LISP

提供: ウィキバーシティ


概要

[編集]

YOYUにおける構文木は、意味(セマンティクス)を一切持たない純粋なS式構造として設計される。これはLISPの表記法に則りながらも、評価も型も一切持たず、ただ構文を写し取っただけの木構造である。このアプローチにより、構文木を構文木自身で記述し、書き換え、翻訳し、意味を与えていく段階的な処理系の構築が可能となる。

動機

[編集]

一般的なLISP処理系では、構文木は即座に意味を持つ。たとえば (define x 10) は即座に x に 10 を束縛する評価対象である。しかしYOYUの構文木は違う。 (define x 10) はあくまで "defineという記号が先頭にある3つの要素からなるリスト" としてしか解釈されない。評価や型付けは構文木変換の後段に委ねられる。

S式構文木の例

[編集]

たとえば次のようなコード:

(define (kuku)
  ())

は、まず構文木として次のように構成される:

(define (kuku) ())

これは次のように書き換えられる:

(define kuku (lambda () ()))

この書き換え(糖衣構文の展開)は、意味の解析ではなく単なる構文上の整理である。

YOYUにおける構文木設計の哲学

[編集]

意味をあとから与える:構文木そのものには意味はなく、後段で意味を注入する。

書き換え可能な構文グラフ:S式で記述された構文木は容易に書き換え可能。

Schemeに似せる:評価や型の意味を持たないにも関わらず、見た目はSchemeに近づけることで親和性を高める。

Cons構造の最小構成:car/cdrによって構文木を構成するため、データ構造のミニマルさを維持。


応用と今後の展望

[編集]

この構文木は、評価器を持たないLISP、すなわち"意味のないScheme"としてYOYU内部で中間表現として使用される。構文木変換、マクロ展開、意味解析、型推論などをこの上に段階的に重ねていくことで、自由度の高い処理系を実現できる。将来的にはこの構文木自身によって構文木処理を書く、いわば"構文木による自己実装"も視野に入る。

結論

[編集]

意味を持たないS式構文木は、柔軟な記述と後段での自由な意味づけを可能にし、YOYUのような実験的かつ最小構成主義の処理系に極めて適している。LISPの形をしていながら意味を持たない"幽霊のようなScheme"、それがYOYUにおける構文木である。