Студопедия

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

КАТЕГОРИИ:

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






Лабораторная работа №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. Вісник Київського національного університету імені Тараса Шевченка | Исследование характеристик направленности симметричных вибраторов

mylektsii.ru - Мои Лекции - 2015-2018 год. (0.013 сек.)Пожаловаться на материал