Home - akamah/garbanzo GitHub Wiki

拡張可能かつ挿入可能な文法を目標として言語を開発します。

目標

構文解析器を内部の言語で表現することでの、構文の拡張性を実現することを目標にします。

妥協点

  • 構文に焦点を絞るため、プロトタイプをRubyで開発し、ガベコレやオブジェクトの寿命の問題を回避。

基本的なアイディア

  • 構文解析を、文字列から、結果と残りの文字列のペアを返す関数として表現する(パーサコンビネータのように)
  • その関数を、作成するプログラミング言語のオブジェクトシステムで記述する
  • 関数で記述されたパーサオブジェクトがソースコードを処理する
  • パーサオブジェクトに変更があった時点で、構文が動的に変化する
  • プログラムは一行ごとに実行させるものとする。そのため、全てが式ではなく、少なくとも文の概念が登場する
  • 解釈実行系には適当な命令を持たせる。拡張性が高ければ望ましいが、複雑な命令は導入したくない