コンパイラの仕様設計

プログラミング III の課題.グループ課題.PL/0 なるプログラミング言語のコンパイラを作成する・・・前に,外部仕様・内部仕様を設計する課題.
俺は構文解析部 (パーザ) を担当することに.

外部仕様はともかく,内部仕様は,実際にコードを書いてみないと まともなものを設計できそうにない.本末転倒.
ともかく,資料にある Pascal のソースを参考にして,構文解析部のみを暫定的に作成し始めた.が,字句解析部・意味解析部との連携が当然必要なわけで,結局これらも考慮しながら作成する必要がある.担当箇所を決めたのは 「今のところ」 あまり意味がない.

11 日 (土) にグループのメンバーが集まり,内部仕様を順次設計・策定していくことにしている.それまでにどの程度まで作成できるだろうか.


おまけ:学外の人のため(?) のコンパイラ講座

正確・適切な表現ではないかもよ ? ということで.

コンパイラが持つ機能は以下の 4 つに大別できる.

字句解析
あるプログラミング言語で書かれたソースファイルを読み込み,その文字列を 識別子・予約語・数値 などに切り分け,トークンに変換する.
構文解析
トークン列が言語の構文則 (文法) を満たしているか否かチェックし,構文木を生成する.
意味解析
辻褄の合う記述がなされているかチェック (変数・関数の宣言・定義の有無,型チェックなど) し,構文木に情報を付加する.
コード生成
以上の解析結果を基にアセンブリ言語を書き出す.