Главная страница
Навигация по странице:

  • НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИТЕТ Кафедра вычислительной техники Лабораторная работа №1

  • Описание лексики учебного языка

  • Тестирования транслятора

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


    Скачать 432.29 Kb.
    НазваниеЛабораторная работа 1 по дисциплине Теория формальных языков и компиляторов на тему Лексика языков программирования. Регулярные выражения
    Дата20.02.2023
    Размер432.29 Kb.
    Формат файлаdocx
    Имя файлаAVT-910_Tapkharov_Vadim_Laba1 (1).docx
    ТипЛабораторная работа
    #946046

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

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

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

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

    Лабораторная работа №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.

    Вывод

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


    написать администратору сайта