意味解析
semantic analysis
そのプログラムの意味が正しいかどうかを解析する
Parser
はあくまでも構文のチェックのみをしているの
記号表を用いて型などの正しさを解析する
抽象構文を抽象マシンコードへ変換する
やること
記号表
の構成
記号表
の探索
記号表の探索のアルゴリズム
型検査
など
チェックすることの例
変数が二重宣言されていないか
実行時に宣言されていない変数が使われていないか
変数名は利用可能な名前かどうか
演算している部分は型は正しいか
ここを確認して自動でキャストする実装もある
#??
どのタイミングで記号表を作る?
どのタイミングで記号表を検索する?
参考
タイガーブック
7章
『コンパイラとバーチャルマシン』
5章
『言語実装パターン』
6,7,8章
『コンパイラ 作りながら学ぶ』
6章
https://qiita.com/ogata-k/items/dcaa2bdd437ac16206ad#3-意味解析semantic-analysis