Полная версия
Формальные языки и компиляторы
Изложены теоретические основы аппарата определения лексики (регулярные выражения) и синтаксиса (формальные грамматики) языков программирования, элементы теории конечных автоматов без памяти и методы ее практического применения для автоматизированного преобразования системы регулярных выражений в конечный автомат – лексический анализатор. Изучаются нисходящие и восходящие методы синтаксического анализа, основанные на преобразовании формальных грамматик в конечные автоматы с магазинной памятью. Рассматриваются различные способы решения задачи нейтрализации синтаксических ошибок. Изучаются наиболее типичные задачи, решаемые на этапе семантического анализа: организация памяти программы, доступ к локальным и нелокальным данным, контроль типов. Обсуждаются основные задачи генератора кода, такие как управление памятью, выбор инструкций, распределение регистров и порядок вычислений; рассматриваются методы оптимизации кода. Приводится описание учебного программного обеспечения и методические указания по выполнению лабораторных работ и курсового проектирования. Учебник рекомендуется студентам старших курсов и аспирантам, а также преподавателям смежных дисциплин, а также студентам и аспирантам ряда других технических специальностей, связанных с разработкой и использованием программного обеспечения.