Компілятор - це програма, яка переводить вихідний код для іншої програми з мови програмування у виконуваний код.
Як правило, вихідний код є мовою програмування високого рівня (наприклад, Pascal, C, C ++, Java, Perl, C # тощо). Виконавчий код може представляти собою послідовність машинних інструкцій, які можуть виконуватись центральним процесором безпосередньо, або це може бути проміжне представлення, яке інтерпретується віртуальною машиною (наприклад, байт-код Java).
Коротше кажучи, компілятор перетворює програму з читаного людиною формату в машиночитаний формат.
Щодо того, як працює компілятор, це справді складно. На цю тему є книги та університетські курси. Я спробую коротко окреслити основні етапи процесу, але це буде дуже короткий огляд.
- Лексінг - розбийте текст програми на "лексеми". Лексеми - це "слова" мови програмування, такі як ідентифікатори (ключові слова, назви змінних, назви функцій тощо) або оператори (=, *, & тощо).
- Парсинг - перетворіть послідовність лексем у дерево розбору, що представляє собою структуру даних, що представляє різні мовні конструкції: декларації типу, оголошення змінних, визначення функцій, петлі, умовні умови, вирази тощо.
- Оптимізація - оцінюйте постійні вирази, оптимізуйте невикористані змінні чи недоступний код, по можливості розкручуйте петлі тощо.
- Переведіть дерево розбору в інструкції з машини (або байт-код JVM).
Ще раз наголошую, що це дуже короткий опис. Сучасні компілятори дуже розумні, а, отже, дуже складні.