Теория формальных языков и компиляторов (для студентов дневного отделения) — Результаты освоения (цели) дисциплины

После освоения дисциплины студент будет

иметь представление:

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

знать:

  • объект курса (трансляторы с языков программирования, системы автоматизации проектирования трансляторов), предмет курса (формальные системы определения лексики, синтаксиса и семантики языков программирования, методы анализа свойств таких систем, методы и технологии их преобразования в автоматы, решающие задачи соответствующих этапов анализа), задачи курса (свойства и характеристики языков программирования, их реализации,методы трансляции и автоматизация проектирования трансляторов), место теории языков программирования и методов трансляции в общей совокупности изучаемых дисциплин;
  • методы проектирования формального языка на разных уровнях определения его свойств и характеристик;
  • формальный аппарат для описания алгоритмических языков: системы регулярных выражений, контекстно-свободные грамматики, принципы использования конечных автоматов без памяти и со стековой памятью для построения анализаторов;
  • свойства формальных систем определения языков программирования, их классификацию и методы эквивалентных преобразований внутри классов;
  • методы преобразования формальных описаний лексики и синтаксиса языка в управляющие таблицы детерминированных оптимальных конечных автоматов;
  • алгоритмы лексического, синтаксического и семантического анализа, реализуемые соответствующими конечными автоматами без памяти и с магазинной памятью;
  • промежуточные формы представления транслируемой программы, методы ее оптимизации;
  • методы генерации объектного кода для конкретной целевой машины;

уметь:

  • использовать знания основ информатики, программирования на языках высокого уровня, теории конечных автоматов, дискретной математики, математической логики и теории алгоритмов при проектировании языка программирования и разработке транслятора для него;
  • разрабатывать формальные определения лексики и синтаксиса языков программирования, определять свойства разрабатываемых формальных систем, оценивать их характеристики;
  • разрабатывать расширения формальных систем, определять функциональность семантического анализа и генерации объектного кода;
  • разрабатывать и использовать сложные структуры данных (таблицы, деревья, списки)  и алгоритмы работы с этими структурами;
  • представлять результаты решения отдельных задач, описание расчетно-графического задания по курсу, в удобной для восприятия форме;
  • осуществлять самооценку и самоконтроль при самостоятельном выполнении работ по проектированию и разработке элементов системного программного обеспечения;
  • использовать средства автоматизации проектирования трансляторов для построения лексических, синтаксических и семантических анализаторов.