Регулярные языки, конечные автоматы и лексический анализ

Страницы работы

Содержание работы

Министерство образования и науки РФ

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Комсомольский-на-Амуре Государственный Технический Университет»

Факультет компьютерных технологий

Кафедра МОП ЭВМ

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

по курсу «ТЯПиМТ»

Выполнил:                                                                                                         Клименко В. А.

Зимин А.В.

Проверил:                                                                                                          Петрова А. Н.

Комсомольск-на-Амуре

2007


Тема:                       Регулярные языки, конечные автоматы и лексический анализ.

Цель работы:          Изучить теорию конечных распознавателей и приобрести навыки и умения использования теории при разработке средств лексического анализа языка.

Задание:                    Разработать программу - лексический анализатор языка программирования PHP.

Конечные автоматы

Конечный автомат для чисел:

«ц»  - цифра от 0 до 9

«+/-» - знак плюс либо минус

«e» - символы е или Е

«•» - точка

«ск» - символ конца числа (оператор или разделитель): ";", ")", "]", "!", "=", "+", "-", "*", "/",

"%", "<", ">", "&", "^", "\n",  "\t", "\0", " ".

Конечный автомат для идентификаторов:

«б, _» - буква либо нижнее подчеркивание

«б, ц, _» - буква, цифра либо нижнее подчеркивание

«не б, ц, _» - символы кроме букв, цифр и знака нижнее подчеркивание (операторы, разделители).


Конечный автомат для комментариев:

«лс» - любой символ


Текст программы

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//--------------------------------------------------------------------------#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

#include <stdio.h>

#include <iostream.h>

#include <ctype.h>

#include <string.h>

char *Fstr;

char *Fstr_out;

AnsiString MyFName="", MyFName_out;

bool StrNow=0;

bool StrNow2=0;

bool point=0;

bool Num=0;

int curpos=0;

char Strings[500][1000];

char strings[500][1000];

int str_num=0;

char Operators[52][4]={

",", ";", "\"", "'", "(", ")", "[", "]", "|", "~", "#", "{", "}", "!", "=", "+", "-", "*", "/", "%", "<", ">", "&", "^", ".", "?", ":",  "<=",  ">=", "==", "!=", "<<", ">>", " &&", "||", "<?", "?>", "++", "--",  "+=", "-=", "->", "*=","/=", "&=",  "%=", "^=", "=>", "===", "!==", ">>=", "<<="};

char KeyWordMass[91][20]={

"and",  "array", "as", "bool", "break", "case", "cfunction", "class", "const ", "continue",     "declare", "default", "die", "do", "double", "E_ALL", "echo", " E_ERROR", "else",  "elseif", "empty", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "E_PARSE",      "eval", "E_WARNING", "exit", "extends", " FALSE","float", "for", "foreach", "function",  "global","if", "include", "include_once","int", "isset", "list", "new", "not", " NULL", "old_function", "or", "parent", "php", "PHP_OS", "PHP_SELF", "PHP_VERSION", "print", "REMOTE_ADDR", "HTTP_USER_AGENT", "require", "require_once", "return", "sizeoff", "static", "stdClass",   "switch", "TRUE", "unset", "use", "var", "virtual", "while", "xor", "__CLASS__", "__FILE__", "__FUNCTION__","__LINE__", "__sleep", "__wakeup", "$argc", "$argv","$_COOKIE", "$_ENV", "$_FILES", "$HTTP_COOKIES_VARS", "$HTTP_ENV_VARS", "$HTTP_GET_VARS", " $HTTP_POST_FILES","$HTTP_POST_VARS", "$HTTP_SERVER_VARS",  "$_GET", "$_POST", "$_SERVER", "$this"

Похожие материалы

Информация о работе

Предмет:
ТЯПиМТ
Тип:
Отчеты по лабораторным работам
Размер файла:
128 Kb
Скачали:
0