以下の各データは、ソースコードを除き、 int_calc_compiler/src/lib/tp_compiler/tp_compiler.h の記号表(TP_SYMBOL_TABLE 構造体)に格納されます。 トークン列の各要素には、ソースコード上の行と桁が記録されます。
- ソースコード(UTF-8)
- トークン列
- 構文木
- 中間言語(WebAssembly バイナリ表現)
- x64 フラット・バイナリ・ファイル(flat binary file)
-
int_calc_compiler/src/main.c:main 関数 で、 コンパイラ本体(静的ライブラリ)の tp_compiler 関数を呼び出し
-
int_calc_compiler/src/lib/tp_compiler/tp_compiler.c:tp_compiler 関数 が compiler_main 関数を呼び出し
-
compiler_main 関数で、コンパイラの初期化処理 init_symbol_table 関数を呼び出し
-
字句解析(トークン列を出力): int_calc_compiler/src/lib/tp_compiler/tp_make_token.c:tp_make_token 関数
-
構文解析(再帰降下構文解析。構文木を出力): int_calc_compiler/src/lib/tp_compiler/tp_make_parse_tree.c :tp_make_parse_tree 関数
-
意味解析(未定義の変数の参照や、重複する変数の定義をチェックする): int_calc_compiler/src/lib/tp_compiler/tp_semantic_analysis.c :tp_semantic_analysis 関数
-
中間コード生成(WebAssembly バイナリ表現を出力): int_calc_compiler/src/lib/tp_compiler/tp_make_wasm.c :tp_make_wasm 関数
-
コード生成(アセンブラを利用せず、機械語を直接出力): int_calc_compiler/src/lib/tp_compiler/tp_make_x64_code.c :tp_make_x64_code 関数
-
中間コード生成: int_calc_compiler/src/lib/tp_compiler/tp_make_wasm.c:tp_make_wasm 関数
-
コード生成: int_calc_compiler/src/lib/tp_compiler/tp_make_x64_code.c:tp_make_x64_code 関数
- WebAssembly で利用する可変長整数の LEB128 関連の関数定義: int_calc_compiler/src/lib/tp_compiler/tp_leb128.c
- コード生成の実装詳細部(x64 機械語を生成する主な関数定義): int_calc_compiler/src/lib/tp_compiler/tp_make_x64_code_body.c
- ファイルの読み書きに必要な関数定義: int_calc_compiler/src/lib/tp_compiler/tp_file.c
- メッセージ出力やメモリ解放などの関数定義: int_calc_compiler/src/lib/tp_compiler/tp_utils.c