Учебник по компиляции

Компилятор переводит код, написанный на одном языке, на другой язык, не меняя смысла программы. Также ожидается, что компилятор должен сделать целевой код эффективным и оптимизированным с точки зрения времени и пространства.

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

Зачем изучать дизайн компилятора?

Компьютеры представляют собой сбалансированное сочетание программного и аппаратного обеспечения. Аппаратное обеспечение - это просто механическое устройство, а его функции контролируются совместимым программным обеспечением. Аппаратное обеспечение понимает инструкции в форме электронного заряда, который является аналогом бинарного языка в программировании. Двоичный язык имеет только два алфавита, 0 и 1. Для инструктажа аппаратные коды должны быть записаны в двоичном формате, который представляет собой просто последовательность из 1 и 0. Написание таких кодов для программистов было бы сложной и обременительной, поэтому у нас есть компиляторы для написания таких кодов.

Система языковой обработки

Мы узнали, что любая компьютерная система состоит из аппаратного и программного обеспечения. Аппаратное обеспечение понимает язык, который люди не могут понять. Поэтому мы пишем программы на языке высокого уровня, который нам легче понять и запомнить. Эти программы затем подаются в набор инструментов и компонентов ОС для получения желаемого кода, который может использоваться машиной. Это известно как система языковой обработки.

Аудитория

Это руководство предназначено для студентов, заинтересованных в изучении основных принципов работы с компиляторами. С этого момента начинающие энтузиасты, которые хотели бы узнать больше о компиляторах, и те, кто хочет самостоятельно создавать компиляторы.

Предпосылки

Это руководство не требует предварительных знаний о дизайне компилятора, но требует базового понимания, по крайней мере, одного языка программирования, такого как C, Java и т. Д. Это было бы дополнительным преимуществом, если вы ранее имели опыт программирования на Assembly .