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