Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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

Лабораторная работа № 3-4

Студент: Тафинцев Г.М.

Группа: 8О-208Б

Номер по списку: 14

Вариант: 34

Дата: 13.04.2015

Тема: Лексический анализ.

…………………………………………………………………………………………………………………………………….

Краткая формулировка задания

В тренажере Lexer.h дополнить конструктор класса tLexer определениями автоматов, распознающих все токены языка МИКРОЛИСП. Шаблоны токенов взять из лабораторной работы №3.

В отчет включить диаграммы автоматов только для токенов $float, $id и $idq, выполненные в ГРАФИЧЕСКОМ РЕДАКТОРЕ, и протоколы тестирования(screenshot).

…………………………………………………………………………………………………………………………………….

Набор отчетных документов

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

Lexer.h 2015

Ifndef LEXER_H

Define LEXER_H

#include " baselexer.h"

//********************************************

//* Developed by THM *

//* (c) 2015 *

//********************************************

class tLexer: public tBaseLexer{

public:

Персональный код разработчика

std:: string Authentication()const{

return " THM"; }

Конструктор

tLexer(): tBaseLexer(){

//создать автоматы:

Целое

addstr (Aint, 0, " +-", 2);

addstr (Aint, 0, " 0", 1);

addstr (Aint, 1, " 0", 1);

addstr (Aint, 2, " 0", 1);

addrange(Aint, 0, '1', '9', 3);

addrange(Aint, 2, '1', '9', 3);

addrange(Aint, 3, '0', '9', 3);

Aint.final(1);

Aint.final(3);

//________________________________________

Восьмеричное Aoct

addstr (Aoct, 0, " +-", 3);

addstr (Aoct, 0, " 0", 1);

addstr (Aoct, 1, " 0", 1);

addstr (Aoct, 3, " 0", 1);

addrange(Aoct, 1, '1', '9', 2);

addrange(Aoct, 2, '0', '9', 2);

Aoct.final(2);

//________________________________________

Вещественное Afloat

addstr (Afloat, 0, " +-", 1);

addstr (Afloat, 2, ".", 3);

addstr (Afloat, 4, " Ee", 5);

addstr (Afloat, 5, " +-", 6);

addrange(Afloat, 0, '0', '9', 2);

addrange(Afloat, 1, '0', '9', 2);

addrange(Afloat, 2, '0', '9', 2);

addrange(Afloat, 3, '0', '9', 4);

addrange(Afloat, 4, '0', '9', 4);

addrange(Afloat, 6, '0', '9', 7);

addrange(Afloat, 7, '0', '9', 7);

Afloat.final(3);

Afloat.final(7);

//________________________________________

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

addstr (Aid, 0, "! ", 1);

addrange(Aid, 0, 'A', 'Z', 1);

addrange(Aid, 0, 'a', 'z', 1);

addstr (Aid, 1, " -", 2);

addstr (Aid, 1, "! ", 3);

addrange(Aid, 1, 'A', 'Z', 3);

addrange(Aid, 1, 'a', 'z', 3);

addrange(Aid, 1, '0', '9', 3);

addstr (Aid, 2, " -", 2);

addrange(Aid, 2, 'A', 'Z', 3);

addrange(Aid, 2, 'a', 'z', 3);

addrange(Aid, 2, '0', '9', 3);

addstr (Aid, 3, " -", 3);

addstr (Aid, 3, "! ", 2);

addrange(Aid, 3, 'A', 'Z', 2);

addrange(Aid, 3, 'a', 'z', 2);

addrange(Aid, 3, '0', '9', 2);

Aid.final(1);

Aid.final(2);

Aid.final(3);

//________________________________________

Идентификатор предиката Aidq

addstr (Aidq, 0, "? ", 2);

addrange(Aidq, 0, 'A', 'Z', 1);

addrange(Aidq, 0, 'a', 'z', 1);

addrange(Aidq, 1, 'A', 'Z', 1);

addrange(Aidq, 1, 'a', 'z', 1);

addrange(Aidq, 1, '0', '9', 1);

addstr (Aidq, 1, " -", 1);

addstr (Aidq, 1, "? ", 2);

addrange(Aidq, 2, 'A', 'Z', 1);

addrange(Aidq, 2, 'a', 'z', 1);

addrange(Aidq, 2, '0', '9', 1);

addstr (Aidq, 2, " -", 1);

Aidq.final(2);

//________________________________________

Оператор Aoper

addstr(Aoper, 0, " +-=*/", 1);

addstr(Aoper, 0, " < > ", 2);

addstr(Aoper, 2, " =", 1);

Aoper.final(1);

//________________________________________

Булевские константы Abool

addstr(Abool, 0, " #", 1);

addstr(Abool, 1, " tf", 2);

Abool.final(2);

//________________________________________

Строка

// ФАКУЛЬТАТИВНОЕ ЗАДАНИЕ*

// дополнить esc-последовательностями \" и \\

Тест L8.ss

addstr (Astr, 0, " \" ", 1);

addstr (Astr, 1, " \" ", 2);

addrange(Astr, 1, ' ', '" '-1, 1);

addrange(Astr, 1, '" '+1, '~', 1);

addrange(Astr, 1, -128, -1, 1);

Astr.final(2);

//________________________________________

}

};

Endif

Вывод программы:


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

Id 4

Idq 4

<== предыдущая лекция | следующая лекция ==>
Список використаної літератури. 1. Вісник Київського національного університету імені Тараса Шевченка | Исследование характеристик направленности симметричных вибраторов




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.