FrontPage

2008/05/21からのアクセス回数 9973

sampleCコンパイラのソース・リスト

原書では、ソースリストがでているますが、それをbision, flex, gccに対応するように 修正し、現在のシステムでも動作するソースリストを添付します。 7章、8章のサンプルと同じ結果ができることを確認しました。

字句解析

sample.lが字句解析のソースです。

flexでコンパイルする場合には、

flex sample.l

とします。

filesample.l

シンタックス解析

sample.yが、bisionの入力とするシンタックス解析のソースです。 y.tab.hを出力するために、-dオプションを指定し、出力をyaccと同じくするために-oオプションを指定します。

bison -d -o y.tab.c sample.y
filesample.y

メッセージ

message.cは、エラーメッセージを扱う関数です。可変引数を扱うように修正しました。

filemessage.c

記号テーブル・ルーチン

symtab.hは、sample.yをコンパイルするために必要な記号テーブルを持ったファイルです。

filesymtab.h

symtab.cは、記号テーブルを処理するCの関数です。

filesymtab.c

メモリ・アロケーション

mem.cは、メモリ・アロケーションのためのCの関数です。

filemem.c

コード生成

gen.hには、sample.yのコンパイルおいて必要な、シンボリック・コード生成のための ニーモニックが記述されています。

filegen.h

gen.cには、sampleCが使われる仮想的な計算機のアセンブリ・コードを生成するCの関数が記述されています。

filegen.c

ロードアンドゴー・システム

sampleCコンパイラのロードアンドゴー・バージョンは、-DSIMULATORオプションでコンパイルします。 simulator.mkがロードアンドゴー・システム用のmakefileです。

sim.hは、シミュレータ用のニーモニック定義をしています。

filesim.h
filesimulator.mk

sim.cは、仮想的な計算機のための実際のシミュレータ・プログラムです。

filesim.c

simgen.cは、シミュレータ用のコード生成ルーチンです。

filesimgen.c

その他のファイル

bison, flexのライブラリがない環境でも動作するようにyyerror.c, yywhere.cに簡易バージョンを定義しました。また、yyerfpの定義のために、main.cを用意しました。

fileyyerror.c
fileyywhere.c
filemain.c

コード生成を作成するためのMakefileも用意しました。

fileMakefile

コード生成版(generator)を作成するmakeコマンドは、

make

です。

シミュレータ(simulator)を生成する場合には、*.oファイルを削除してからmakeコマンドを実行します。

make clean
make -f simulator.mk

備考

原書のyaccparのエラー・メッセージに関連する部分は、bisonとyaccのコード生成がことなるため省略させて いただきました。

コメント

この記事は、

選択肢 投票
おもしろかった 7  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc