Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по СПО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.79 Mб
Скачать

2.Модуль Вводный

Рассматриваемая в данном лекционном курсе тема непосредственно связана с задачей построения трансляторов и компиляторов формальных языков. К таким языкам относятся все известные на сегодняшний день языки программирования, языки открытых форматов файлов, таких, например, как DXF, RTF, XML-ориентированных форматов. Популярность и широкое распространение технологий, основанных на открытых форматах, явились следствием появления большого числа специализированных программных и аппаратных средств работы с такими форматами. Что, в первую очередь, определялось наличием хорошо проработанного и развитого математического аппарата теории формальных грамматик и формальных языков.

Сегодня, пожалуй, трудно назвать известное программное обеспечение, которое бы не работало с файлами данных отрытого формата или не использовало специализированный язык описания выполняемых действий, такие, например, как AutoCad Lisp, Printer post-script и другие.

Еще одним аспектом крайней популярности открытых форматов файлов является возможность взаимодействия различных приложений между собой. Таким образом, происходит унификация как самих форматов для различного рода информации, так и процедур «чтения» данных.

Процедура «чтения» текста, записанного на каком либо формальном языке, вычислительной машиной является также строгой формальной процедурой и носит название «парсинг» или синтаксический анализ. Программный объект, выполняющий парсинг, называется парсер, или синтаксический анализатор.

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

Yet Another Compiler Compiler YACC, существующий как программа порождающая в результате своей работы исходный код на C или C++ синтаксического анализатора заданной формальной грамматики класса LR(1); [http://dinosaur.compilertools.net]

Generic Interpreter GI, который выполняет синтаксический разбор текста, заданного формальной грамматикой. Данное средство доступно только для Java программистов. [http://www.csupomona.edu/~carich/gi]

Развитие технологии синтаксического анализа привело к расслоению синтаксического анализатора на два слоя. На нижнем уровне выполняется распознавание лексем (слов) – тех кирпичиков текста, из которых он формируется. Если проводить аналогию с естественным языком, то можно сказать, что термин лексема является более широким, чем наше представление о словах. Лексема определяет семейство слов, объединяя их по структурным (лексическим) особенностям.

Если на стадии лексического анализа возникают проблемы с распознаванием лексем, то текст считается лексически некорректным.

Лексический анализатор является в большинстве случаев еще более универсальной машиной, чем синтаксический. Можно представить себе идеальный случай, когда все синтаксические анализаторы будут работать с одним универсальным лексическим анализатором, распознающим ограниченный, минимально необходимый набор лексем. Однако из-за сложности и оригинальности ряда задач такой шаг превращается в утопию.

Необходимо отметить, что наиболее известные языки программирования, такие как C, C++, java, prolog, и др. построены именно как контекстно-свободные языки, и большинство компиляторов и трансляторов языков программирования разработаны с использованием построителя синтаксических анализаторов Yacc и Lex.

Согласно учебному плану и рабочей программе по дисциплине «Системное программное обеспечение. Синтаксические анализаторы» для специальностей Т.10.03 «Вычислительные системы и сети» и Т.10.02 «Программное обеспечение информационных технологий» радиотехического факультета Учреждения образования «Полоцкий государственный университет» предусмотрено:

Вид занятий

Количество часов

Курс

3

Семестр

6

Лекции

32

Лабораторные работы

32

Самостоятельная работа

10

Консультации

2

Зачет

6 семестр

Современный уровень знаний в области формальных грамматик в сочетании с все возрастающей производительностью вычислительной техники определил переход к интерпретируемым языкам программирования. Такие языки в силу своей универсальности, то есть независимости от программно-аппаратной платформы, завоевали рынок корпоративных технологий. Это в первую очередь языки программирования java, C#, и другие языки .NET технологии.

Нужно отметить, что лексический анализ является прекрасно изученной областью науки, и он входит в теорию формальных грамматик как распознавание регулярных грамматик.