Теория языков программирования и методы трансляции

ТРУДОЕМКОСТЬ ДИСЦИПЛИНЫ
Общая трудоемкость дисциплины составляет 5 ЗЕТ (180 час.).

ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ
В цели и задачи дисциплины входит ознакомление студентов с основными подходами создания языковых процессоров на примере компилятора; получение ими навыков проектирования лингвистических программных средств, изучение алгоритмов лексического, синтаксического и семантического анализа, методов генерации кода.
В ходе лекционного курса рассматриваются общие принципы организации процесса трансляции и структуры трансляторов. Изучаются основы теории построения трансляторов. Методы и алгоритмы лексического, синтаксического и семантического анализа.
На лабораторных занятиях и в ходе самостоятельной работы осуществляется практическое закрепление полученных теоретических знаний: разрабатывается транслятор для простого языка программирования. Разрабатывается грамматика простого языка программирования.

МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП
Дисциплина входит в профессиональный цикл вариативной части и предполагает предварительное освоение курсов «Информатики», «Программирования», «Объектно-ориентированного программирования», «Дискретной математики», «Математическая логика и теория алгоритмов».

ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ ДИСЦИПЛИНЫ
Процесс изучения дисциплины направлен на формирование следующих общекультурных (ОК), профессиональных (ПК) и профессионально-специализированных компетенций (ПСК):

  1. использует основные законы естественнонаучных дисциплин в профессиональной деятельности, применяет методы математического анализа и моделирования, теоретического и экспериментального исследования (ОК-10);
  2. осваивать методики использования программных средств для решения практических задач (ПК-2);
  3. обосновывать принимаемые проектные решения, осуществлять постановку и выполнять эксперименты по проверке их корректности и эффективности (ПК-6).
В результате изучения дисциплины студент должен:
Знать: структуру транслятора, методы и алгоритмы построения лингвистических программных средств; этапы трансляции программы; алгоритмы реализации лексического анализа; эффективные алгоритмы нисходящих и восходящих методов синтаксического анализа; основные задачи и подходы при реализации семантического анализа.
Уметь: разрабатывать грамматику простого языка программирования; разрабатывать код лексического, синтаксического и семантического анализа.
Владеть: методикой построения простого транслятора языка программирования по выбранной грамматике.

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ. ОСНОВНЫЕ РАЗДЕЛЫ
Основы распознавания языков и грамматик. Распознаватели и преобразователи. Лексический анализ. Теория формальных языков и грамматик. Транслирующие и атрибутные грамматики. Синтаксический анализ. Формальные методы описания перевода. Семантический анализ. Генерация кода. Объектная машина. Процедуры генерации кода. Оптимизация объектного кода. Аппаратно-зависимые и аппаратно-независимые методы оптимизации кода.

ВИДЫ УЧЕБНОЙ РАБОТЫ
Лекции, лабораторные работы.

ФОРМА АТТЕСТАЦИИ ПО ДИСЦИПЛИНЕ
Изучение дисциплины заканчивается экзаменом.

Методические материалы:

  1. В.Т.Калайда. Теория языков программирования методов трансляции. Методическое пособие / Томск: ТУСУР, 2007. - 235 с.