2019-05-01から1ヶ月間の記事一覧
低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ11-15を参考にしています。 前回 (5) 識別子を、[a-z] から [a-zA-Z_][a-zA-Z0-9_]* に拡張 参考: ステップ11 コード差分 ローカル変数をスタックフレーム内にどう割り当てるか、パース時に保存し…
低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ9-10を参考にしています。 前回 (4) 次回 (6) 仮完結編 ローカル変数 変数を使うには、代入 a = 1 とそれを使った計算 a + 1 などができないと話にならないので、先に文法に 文はセミコロンで終端…
低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ5-6を参考にしています。 前回 (3) 次回 (5) 単項 +, - 演算子 結合順として乗算 * と項 (...) の間に、単項演算子を入れる。生成規則 unary := term | "+" term | "-" term として、構文解析のロ…
低レイヤを知りたい人のためのCコンパイラ作成入門 ステップ4を参考にしています。 前回 (2) 次回 (4) 構文木の導入 1+2*3 を 1+(2*3) として計算するためには、トークンを左から消費していくだけではいけない。 加減算と乗除算の生成規則を階層立てて定義し…