Итак, ранее названный предмет преподаётся в 1 семестре 4 курса и он оказался, пожалуй, самым сложным для меня с самого первого курса. Поэтому с него и начнём.
Основная идея курса - объяснить студентам, как устроен компилятор, хотя на деле весь курс представляет собой разбор методичек для лабораторных работ, в конце которых мы должны получить компилятор исходного текста программы в byte-code Java-машины.
Компилятор мы писали вместе с Константином Сухаревым для языка "Objectie-C".
Язык этот со статической типизацией, на что стоит обратить отдельное внимание.
Сам компилятор состоит из 4х частей:
1. Лексический анализатор
2. Синтаксический анализатор
3. Семантический анализатор
4. Генератор кода
Ссылка на репозиторий:
http://code.google.com/p/vstu-objective-c/
Основные файлы:
lexems.flex - лексика
grammar.y - правила по синтаксису
structs.h
declarations.h
definitions.cpp - дерево и функции по синтаксису
semanticStructs.h
semanticFuncs.h
semanticFuncs.cpp - дерево и функции по семантике
genFuncs.h
genFuncs.cpp - функции по генерации кода
Основная идея курса - объяснить студентам, как устроен компилятор, хотя на деле весь курс представляет собой разбор методичек для лабораторных работ, в конце которых мы должны получить компилятор исходного текста программы в byte-code Java-машины.
Компилятор мы писали вместе с Константином Сухаревым для языка "Objectie-C".
Язык этот со статической типизацией, на что стоит обратить отдельное внимание.
Сам компилятор состоит из 4х частей:
1. Лексический анализатор
2. Синтаксический анализатор
3. Семантический анализатор
4. Генератор кода
Ссылка на репозиторий:
http://code.google.com/p/vstu-objective-c/
Основные файлы:
lexems.flex - лексика
grammar.y - правила по синтаксису
structs.h
declarations.h
definitions.cpp - дерево и функции по синтаксису
semanticStructs.h
semanticFuncs.h
semanticFuncs.cpp - дерево и функции по семантике
genFuncs.h
genFuncs.cpp - функции по генерации кода