冬コミも間近に迫ってきましたね。
最近は冬コミ用の手続き型言語インタプリタの実装を進めています。
元々、筑波大学のtiny-cインタプリタを元にしていて、それがベースになっています。
構文木の生成や文の実行など、特に弄る点が見当たらない為、そのまま流用している部分が多いです。
差異はコメントやfor文などを付け加えた程度でしょうか…
ソースコードの実物は、下記のURLにてご参照下さい。
一応、実行させることが出来ます。
インタプリタでプログラムを実行させる際は、ターミナルで「実行ファイル名 < 実行させたいファイル」と入力して下さい。
bison/flexで生成されるソースコードについては、省略させていただきました。
冬コミ用手続き型言語インタプリタ
https://gist.github.com/746791
上記のインタプリタのEBNFは過去に公開していますが、未だ、未実装になっている機能が多々あります。
その一覧をまとめました。
冬コミに向けて作る手続き型言語の言語仕様(2010年12月13日案)
https://gist.github.com/738786
未実装になっている機能
単項演算子と単項式
"++"
"--"
"!"
単項マイナス式
論理否定式
前置増分式
前置減分式
後置増分式
後置減分式
局所変数
局所変数として、配列を宣言できること。
文
else-if文。
for文の初期化節でのローカル変数の宣言。
その他
データ型がintではなく、varになっている。
未実装になっている機能については、基本的には実装を目指します。
ただ、一部は実現が難しい機能もあります。
実現が難しい機能については、冬コミで頒布する同人誌で解説(という名の言い訳)を行いたいと考えています。
肝心の同人誌についてですが、22日までに実装出来たインタプリタを元に書こうと考えています。
元々のソースコードが筑波大学のtiny-cをベースにしていて、私個人が実装、記述したソースが比較的少ない事を考慮すると、インタプリタの実装に力を入れるよりも、その解説に注力するべきではないかと思っているからです。
冬コミで頒布する同人誌についての続報は、また数日中に出したいと思っています。
それでは。