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