- オプションなしに「cat fibo.c | ./kadai5」のように実行するとコンパイル結果が出力される。このプログラムをMarsで実行すると、入力した数に対するフィボナッチ数が出力されるはず。
- -tオプションをつけて「cat fibo.c | ./kadai5 -t」のように実行すると構文木をテキストで出力する。
Prototype Func in
Prototype Func out
Func fib
Stmt: if
Op: <
Op: var
Sym param1 k
Op: const 2
Stmt: return
Op: const 1
Stmt: return
Op: +
Op: func
Sym func3 fib
Op: arglist
Op: -
Op: var
Sym param1 k
Op: const 2
Op: func
Sym func3 fib
Op: arglist
Op: -
Op: var
Sym param1 k
Op: const 1
Func main
Stmt: expr
Op: =
Sym local1 v
Op: func
Sym func1 in
Stmt: expr
Op: func
Sym func2 out
Op: arglist
Op: func
Sym func3 fib
Op: arglist
Op: var
Sym local1 v
Stmt: return
Op: const 0
- -sオプションをつけて「cat fibo.c | ./kadai5 -s」のように実行すると記号表をテキストで出力する。
記号表
局所変数 no.1 v (関数 main)
仮引数 no.1 k (関数 fib)
関数 no.1 in (仮引数 0 個, 局所変数 0 個)
関数 no.2 out (仮引数 1 個, 局所変数 0 個)
関数 no.3 fib (仮引数 1 個, 局所変数 0 個)
関数 no.4 main (仮引数 0 個, 局所変数 1 個)
- 演習室のLinux環境では、-gオプションをつけて次のように実行すると構文木をグラフとして出力する。
cat fibo.c | ./kadai5 -g | dot -Tx11
その他の環境でJavaが実行できるのであれば、gv.jarをダウンロードして
cat fibo.c | ./kadai5 -g | java -jar gv.jar
のようにグラフを表示されることができる。
Javaもない場合は、
cat fibo.c | ./kadai5 -g > kadai5.dot
のように実行して、ファイルkadai5.dotに出力する。この内容をグラフ表示ページに入力すると、グラフが表示される。
- -pオプションをつけて「cat fibo.c | ./kadai5 -p」のように実行すると構文木に対応するCプログラムが表示される。入力したプログラムとほぼ同じはず。ただし、プロトタイプ宣言の変数名は構文解析の時点で情報が失われているので、元と違う名前になっている。
int in();
int out(int x1);
int fib(int k){
if(k<2){
return 1;
}
return fib(k-2)+fib(k-1);
}
int main(){
int v;
v=in();
out(fib(v));
return 0;
}