プログラミング言語 Cipher

Cipherのエッセンスとは:

あんまりそう見えないだろうけど、 作っている私の気持ちとしてはCの後継言語を作る事が目標です。 Cをよく知っている人は分かっている通り、C言語がマシン語に対して提供する抽象化層は意外と薄い物です。CipherはそのCからもう一段だけ抽象化を提供することを目的とします。その抽象化とはメモリ管理の抽象化とプログラム自体と関数を第一級データとする事、そして継続の提供です。

まだ達成されていないけど、目標としては:

cipherバイナリ(MacOS 8 or more):なにが起きるか保証できないけど。

cipherプログラムの例

cipherの文法と、言語の特徴そして設計目標 ('03年頃に書いたものだから少し変わっちゃったところもある。)

cipherについてのT.M.の日記をgoogle検索

ソースコード

app.cp
イベントループとイベントの分岐とI/O。 言語そのものとは関係ない。
appSpeci.c
ターミナルみたいなもの。イベントハンドラが入っている。
app.h
app.cとappSpeci.cの共通ヘッダ。 ターミナルの動作やOS依存の定数などが入る
tokenizer.c
手書きのトークナイザ
parser.c
手書きの再帰降下パーサ。出力は構文木。
eval.c, eval.h
評価器。構文木を実行するタイプ。
ciph.h
全体で使われるデータ構造と関数を定義
value.c, value.h
データ構造の生成と破壊、コピーと四則演算
lib.c
ライブラリ関数群
list.c, list.h
リスト操作関数群
vector.c, vector.h
集合型(リスト、配列、double配列)に対する操作関数群
現状の実装はMacOS 8(classic)のアプリになっていて、 シェルと言語が一つのバイナリになっています。 しかし、言語仕様自体はシェルとは関係ありません。 シェルからインタプリタへはinterpret(char* str)でインタープリタからシェルへはmyPrintf(fmt, ...)という非常に細いインターフェイスでつながっているのみです。

拡張子は.cですが、何となくC++です。 クラスなどC++らしい機能は使っていません。 コンパイラはCodeWarrior 9です。


最上 嗣生
| Home |
e-mailはmogami@brain.riken.jpヘ