rsp

2019-05-01から1ヶ月間の記事一覧

C コンパイラをつくってみる (6) ひとまず完結&総括

低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ11-15を参考にしています。 前回 (5) 識別子を、[a-z] から [a-zA-Z_][a-zA-Z0-9_]* に拡張 参考: ステップ11 コード差分 ローカル変数をスタックフレーム内にどう割り当てるか、パース時に保存し…

C コンパイラをつくってみる (5)

低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ9-10を参考にしています。 前回 (4) 次回 (6) 仮完結編 ローカル変数 変数を使うには、代入 a = 1 とそれを使った計算 a + 1 などができないと話にならないので、先に文法に 文はセミコロンで終端…

C コンパイラをつくってみる (4)

低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ5-6を参考にしています。 前回 (3) 次回 (5) 単項 +, - 演算子 結合順として乗算 * と項 (...) の間に、単項演算子を入れる。生成規則 unary := term | "+" term | "-" term として、構文解析のロ…

C コンパイラをつくってみる (3)

低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ4を参考にしています。 前回 (2) 次回 (4) 構文木の導入 1+2*3 を 1+(2*3) として計算するためには、トークンを左から消費していくだけではいけない。 加減算と乗除算の生成規則を階層立てて定義し…