AaLexUser / Compiler-development

Лабораторные работы по разработке компиляторов (ИТМО, ПИиКТ-СППО, 3 курс)

Home Page:https://aalexuser.github.io/Compiler-development/Final-Assignment/docs/webHelpFA2-all/starter-topic.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Разработка компиляторов

Целью освоения дисциплины является получение базовых знаний в области теоретических основ проектирования компиляторов, а также овладение навыками практического применения программных средств, обеспечивающих реализацию: лексического и синтаксического анализаторов. В курсе рассматриваются основные методы синтаксического анализа, способы построения абстрактных синтаксических деревьев для исходных программ, и генерация промежуточного представления программ на базе таких деревьев. Рассматриваются вопросы низкоуровнвой генерации кода, вопросы связывания и семантического анализа.

Разделы

  1. Теория формальных языков. Распознаватели для формальных языков.

    1.1. Понятие порождающей грамматики. Классификация грамматик и формальных языков.

    1.2. Распознаватели для регулярных языков. Конечные автоматы.

    1.3. Распознаватели для контекстно-свободных языков. МП автоматы.

  2. Конструирование лексических анализаторов

    2.1. Фаза лексического анализа. Понятие лексем.

    2.2. Конструирование лексического анализатора с применением Flex.

  3. Конструирование синтаксических анализаторов

    3.1. Фаза синтаксического анализа. Неоднозначность контекстно-свободных грамматик.

    3.2. Нисходящие и восходящие синтаксические анализаторы. LL(1) и LR(1) анализаторы.

    3.3. Конструирование синтаксических анализаторов с применением Bison.

  4. Семантический анализ и генерация кодакода.

    4.1. Конструирование абстрактного синтаксического дерева. Вычисление семантических атрибутов.

    4.2. Промежуточное представление программы. Трехадресный код.

    4.3. Генерация машинного кода. Понятие оптимизации.


Helpful materials

About

Лабораторные работы по разработке компиляторов (ИТМО, ПИиКТ-СППО, 3 курс)

https://aalexuser.github.io/Compiler-development/Final-Assignment/docs/webHelpFA2-all/starter-topic.html


Languages

Language:C 44.5%Language:TeX 32.1%Language:HTML 16.8%Language:Yacc 2.5%Language:Python 1.7%Language:Lex 1.3%Language:Makefile 0.6%Language:Lua 0.3%Language:Perl 0.1%Language:Raku 0.1%Language:Terra 0.0%