Home - akamah/garbanzo GitHub Wiki
拡張可能かつ挿入可能な文法を目標として言語を開発します。
目標
構文解析器を内部の言語で表現することでの、構文の拡張性を実現することを目標にします。
妥協点
- 構文に焦点を絞るため、プロトタイプをRubyで開発し、ガベコレやオブジェクトの寿命の問題を回避。
基本的なアイディア
- 構文解析を、文字列から、結果と残りの文字列のペアを返す関数として表現する(パーサコンビネータのように)
- その関数を、作成するプログラミング言語のオブジェクトシステムで記述する
- 関数で記述されたパーサオブジェクトがソースコードを処理する
- パーサオブジェクトに変更があった時点で、構文が動的に変化する
- プログラムは一行ごとに実行させるものとする。そのため、全てが式ではなく、少なくとも文の概念が登場する
- 解釈実行系には適当な命令を持たせる。拡張性が高ければ望ましいが、複雑な命令は導入したくない