erg/doc/JA/compiler/overview.md
Shunsuke Shibayama 96132b20f6 initial commit
2022-08-10 23:02:27 +09:00

1.1 KiB

ergの概観

各レイヤーの働きと特に重要な関数、メソッドを紹介します。

1. 字句解析

  • Lexerが字句解析を行います。Lexer::nextが字句解析のメインロジックを担います。解析の結果としてTokenが出力されます。

2. 構文解析

  • Parserが構文解析を行います。特に重要なのはParser::parse_exprです。解析の結果としてast::Exprの集まりであるASTが出力されます。

3. 型チェック

  • ASTLowererがASTをHIRに変換して型付けを行います。型チェックは主にSymbolTableによって行われます。特に重要なのはSymbolTable::supertype_of(部分型関係を判定する), SymbolTable::unify(型変数の単一化を行う), SymbolTable::init_builtin_*(組み込みAPIを定義する)です。解析の結果としてHIRが出力されます。

4. 副作用チェック

5. 所有権チェック

6. バイトコード生成

  • CompilerHIRCodeObjに変換します。CodeObjはバイトコードと実行設定を保持します。特に重要なのはCompiler::compile_exprです。