Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа №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
|