Этапы работы компилятора

Компиляция кода осуществляется в несколько этапов. За каждый из этапов отвечает один из представленных в рамках проекта модулей, взаимодействующих подобно конвейеру: выходные данные одного этапа являются входными для следующего. Процесс показан на графе:

flowchart TB Begin[program.py] Preprocessor[Препроцессор] Lexer[Лексический анализатор] Parser[Синтаксический анализатор] Semantizer[Семантический анализатор] Optimizer[Оптимизирующий анализатор] IrGenerator[Генератор кода LLVM IR] Translator["Транслятор llc (Clang)"] End[program.exe] Begin -- Исходный код программы --> Preprocessor subgraph . Preprocessor -- Предобработанный код программы --> Lexer -- Список лексем-токенов --> Parser -- Базовое синтаксическое дерево --> Semantizer -- Завершенное синтаксическое дерево --> Optimizer -- Оптимизированное синтаксическое дерево --> IrGenerator end IrGenerator -- Промежуточное представление LLVM IR --> Translator -- Трансляция в исполняемый файл --> End

Назад