- コンパイラの技術と関数電卓プログラム(1)
- 再帰下降パーサによる構文解析(LL法)による電卓プログラム作成
- 補助資料:コンパイラの技術と関数電卓プログラム(1-2)
- 課題
- 複数桁の数字が使えること。
- 式中に空白が使えること。
- 何らかの演算子を追加すること。
- (例) %,単項演算子のマイナスなど
- 演算子が左結合か右結合か確認すること。
- オプション課題
- 変数が使えること。
(変数名は1文字のA-Zといったもので良い)
- 変数が使えること。
- 拡張課題
- 電卓計算をするのではなく、コンパイラとして機械語の命令生成をしたい。
- 本物の機械語を生成するのは面倒なので、Cコンパイラ用の機械語っぽい命令を出力。
- 想定するCPUアーキテクチャは、スタックマシン, レジスタマシンのどちらか
- reg-machine.c , reg-machine.h
- stack-machine.c , stack-machine.h
- 機械語として実行する処理の内容は必要に応じて書き換えていい。
- 5+3*2を入力したら (stack-machineの場合)
- PUSH_I(5); PUSH_I(3); PUSH_I(2); MUL(); ADD(); を生成し、
- 結果を stack-machine.h に保存し、
- gcc stack-machine.c でコンパイルし、
- ./a.out で結果を確認する。11が出力できたら成功!!
- レポート内容
- コンパイラ技術の概要、課題(1)の説明・最終的なBNF記法・ソース・動作検証、考察
- 前半レポート提出先
- コンパイラの技術と関数電卓プログラム(2)
- コンパイラツールを使ったLR構文解析による電卓プログラムの作成
- 補助資料:専攻科実験: unix系 開発環境のインストール
- 課題
- 基本的に、lex+yaccで(1)と同様の課題で参考資料を元に改良を行う。
- レポート内容
- lex,yaccの概要、課題(2)の説明・ソース・動作検証、考察
- 後半レポート提出先