Лабораторная работа 1 по дисциплине Теория формальных языков и компиляторов на тему Лексика языков программирования. Регулярные выражения
Скачать 432.29 Kb.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИТЕТ Кафедра вычислительной техники Лабораторная работа №1 по дисциплине «Теория формальных языков и компиляторов» на тему «Лексика языков программирования. Регулярные выражения» Группа: АВТ-910 Студент: Тапхаров В.Н. Преподаватель: Малявко А.А. НОВОСИБИРСК 2022 Цели работы Освоение основных навыков работы с учебным пакетом программ автоматизации разработки трансляторов ВебТрансБилдер, изучение и освоение пользовательского интерфейса пакета и форматов исходных данных/результатов работы, изучение метаязыка регулярных выражений и технологии разработки систем правил определения лексики языков программирования. Вариант задания Вариант: 232155541
Описание лексики учебного языка Идентификаторы Идентификаторы – это символьное обозначение для различных сущностей языка (функций, массивов, переменных). В языке идентификаторы формируются по следующему принципу: $<пЦ><пБ>, где <пЦ> – последовательность цифр длины от 1 до 4; <пБ> – непустая последовательность букв; Примеры: $12aD, $7field, $0Member Константы Константные значения – это значения, вводимые программистом вручную для инициализации, присваивания, сравнения и т.д. В языке существуют следующие виды вводимых констант: Целые по основанию 10 (120) по основанию 4 (0q1320) по основанию 8 (0o170) Вещественные (120.43) Символьные (‘c’) Строковые (“string“) Операции Математические (+ - * /), логические (&& ||) операции и операции сравнения (< > <= >= == !==). Система правил Система правил сохранена как “laba1”. Рис. 1 – Система правил Рис. 2 – Финальные состояния и действия Рис. 3 – Управляющая таблица сканера Рис. 4 – Граф состояний и переходов сканера Тестирования транслятора Текст, набранный для тестирования транслятора:
Рис. 5 – Результат тестирования транслятора Результат анализа: true. Теперь убедимся, что транслятор не воспринимает неправильные слова. Изменим идентификаторы $11first и $22second на 11first и $22222second соответственно. Ожидается, что транслятор воспримет 11first как целочисленное число и ключевое слово. Для $22222second нет описанного правила, ожидается ошибка. Текст, набранный для тестирования транслятора:
Рис. 6 – Результат тестирования транслятора Результат анализа: false. Вывод В ходе выполнения лабораторной работы были получены навыки работы с учебным пакетом программ автоматизации разработки трансляторов ВебТрансБилдер, изучены и освоены пользовательский интерфейс пакета и форматы исходных данных/результатов работы. Также были изучены метаязык регулярных выражений и технология разработки систем правил определения лексики языков программирования. |