Файл: Лабораторная работа 1 по дисциплине Теория формальных языков и компиляторов на тему Лексика языков программирования. Регулярные выражения.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.03.2024

Просмотров: 7

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИТЕТ

Кафедра вычислительной техники

Лабораторная работа №1

по дисциплине «Теория формальных языков и компиляторов»

на тему «Лексика языков программирования. Регулярные выражения»

Группа: АВТ-910

Студент: Тапхаров В.Н.

Преподаватель: Малявко А.А.

НОВОСИБИРСК 2022

Цели работы

Освоение основных навыков работы с учебным пакетом программ автоматизации разработки трансляторов ВебТрансБилдер, изучение и освоение пользовательского интерфейса пакета и форматов исходных данных/результатов работы, изучение метаязыка регулярных выражений и технологии разработки систем правил определения лексики языков программирования.

Вариант задания

Вариант: 232155541

Идентификаторы


$<пЦ><пБ>

Константы

целые по основаниям 4, 8 и 10; вещественные; строковые и символьные

Оператор присваивания


<И> := <В>

Условный оператор


at <ЛВ> do <ОБ> [ or do <ОБ> ]


Оператор цикла


foreach ( <И> in : ) <ОБ> (для выхода из цикла может использовать оператор out;)

Оператор переключателя


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.

Вывод

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