ダイヤモンド言語構想

■目標

C言語属の言語を式ベースとして再構築して、
新しいプログラミング言語インフラストラクチャを作成することを目標とします。


ダイヤモンド言語では4つのフェーズで言語を作成します。

・フェーズ1
 C言語風式言語を作成
・フェーズ2
 式言語をベースに動的インタプリタ言語を作成
・フェーズ3
 式言語をベースに型付低レベル言語を作成
・フェーズ4
 低レベル言語をベースにGC機能をつけた言語を作成
・フェーズ5
 フェーズ2〜4で作成した言語上でフェーズ1〜4を作成します。


フェーズ1では、LispのS式に当たるC言語風を作成します。
フェーズ2では、作成した式言語をベースにLisp級のマクロが可能なJavaScriptのような言語を作成します。
フェーズ3では、式言語をベースにした低レベル言語を作成し、フェーズ2で作成した動的言語を使ってプリプロセスを行うことができるようにします。機能制限付きだがポインタ操作が出来る見た目はScalaのような言語になると思います。
フェーズ4では、低レベル言語上に完全なGC拡張を行い、ネイティブなScalaのような言語を作成します。
フェーズ5では、フェーズ4で作った言語でフェーズ1〜4を作成します。


このフェーズは必ずしも、順番に作成するわけではありません。フェーズ1が90%完了していて使えればフェーズ2の作成は可能というようにフェーズ1〜フェーズ5はそれぞれスパイラル的に作業が可能です。


■現状

フェーズ1、フェーズ2はプロトタイプが出来上がっています。
自分ではそれなり満足していますが、他の人が使っていただくためにはドキュメントを作成したり、チュートリアルを作成したりする必要があります。また、作り方その物の説明も書きたいところで、ここのところはこの作り方について考えていました。

現状はフェーズ3の作業を始めた段階です。
いろいろな技術的課題があります。構文木から抽象構文木への変換とエラー出力。言語機能の決定。
最適化の段階、アセンブラ出力、アセンブラからコード生成、リンク等。
そのために、ScalaでOnionの抽象構文木へタプルから変換を行ったり、MinCamlScalaへ移植したり、
XByakD言語に移植したりしてみています。Scalaアセンブラを作れればいいのですが、C++は複雑すぎなので
一度Dに落とそうかと。
やるからには、美しくてかつ最適化等も行える構成で作成したいので、MinCamlの移植を最優先にしていきたいと
考えています。MinCamlx86バージョンもあるのでx86出力出来たらいいなと考えています。