タイガー意味解析
タイガーっていうと、タイガーマイコンジャー炊きたて♪
ってのがありますね。おなかすいた。
えーと、意味解析を読み始めました。セマンティックスです。
意味解析といえば記号表ってのがまず出てきます。
記号表は要するに連想配列、マップ、ハッシュマップとかそこらへんです。
名前から値への表です。例えば、
int main() { int a = 10; int b = 20; return c(a, b); } int c(int d, int f) { int e(int d){ d + 1; } return d + e(f); }
こんなコードがあったら、例えばですが記号表はjsonで書くと以下のようなイメージになります。
{ functions:{ _main:{ _a:"int", _b:"int", _c:"function", return:"int" }, _c:{ _d:"int", _f:"int", _e:{ _d:"int", return: "int" } return:"int" } } }
要するに変数から型への配列ですね。
で、スコープの概念があるので、eの関数からみるとdという変数の値は関数の引数なわけです。
という感じのことが書いてあります。
で、この表をどうやってつくるといいとか、値が変わらないようにした場合は
ああだ、こうだってことが書いてあります。
そこが重要なんですけど、結構、意味解析、記号表って字ずらは難しそうで、初めに見たときに
いやーな気持ちになってしまい、トラウマを抱えているので読み進め辛いのです。
ということで、怖くないよ。簡単だよ。という暗示をかけるために
こんなブログを書いてみました。