Методы синтаксического анализа на базе регулярных выражений

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

?вертая часть программы будет обрабатывать поступившие данные как логические, алгебраические операции, переменные, элементы массивов, числа или строки;

-Пятая часть будет выводить текст программы в соответствии с правилами форматирования.

 

2.4.3Проектирование программных модулей

Все модули будут принимать один текстовый параметр и обмениваться информацией через глобальные переменные. Для каждой части программы текстовые данные обрабатываются различным образом:

-для второй как имя файла, который следует считать и обработать;

-для третьей и пятой частей программы как значимая часть данных, содержащихся в этом файле;

-для четвертой как различные части информации, содержащиеся в этом файле, которые требуют дополнительной обработки.

 

2.4.4Проектирование программного интерфейса

Диалог с пользователем будет интерактивным, осуществляться по следующему принципу:

-запуск программы, выбор файла для анализа;

-обработка информации, находящейся в этом файле;

-вывод оригинального кода;

-вывод форматированного кода;

Вывод первой найденной синтаксической ошибки с указанием номера строки

Программа будет выдавать пользователю список ошибок при их наличии. Возможны следующие сообщения об ошибке:

  • нарушен баланс /* */
  • код за пределами функции майн
  • кейс за пределами свитча
  • Использование необъявленной переменой
  • Использование необъявленной массива
  • отсутствие требуемого выражения

 

.5Определение конфигурации технических средств

 

.6Тестирование программы

 

2.6.3Общие сведения

Контрольными данными является файл с информацией, который обладает следующими свойствами:

-использование одной библиотеки iostream;

-описание переменных типов char*, int, одномерных массивов типа int;

-следующие арифметические и логические выражения:+ (сложение), ++ (инкрементирование), != (проверка на неравенства), == (эквиваленция), = (присваивание), || (логическое ИЛИ), << (сдвиг), - (субстракция).

-Следующиеоператоры: for, while, do..while, system, if;

-функции ввода и вывода: printf;

-одно строчные и многострочные комментарии;

-объявление переменных типа char* должно сопровождаться обязательной инициализацией строкой переменной; переменных типа int может сопровождаться необязательной инициализацией, но при этом все переменные должны объявляться отдельно; массивы типа int не могут сопровождаться инициализацией, при этом могут быть только одномерными;

-все конструкции языка разделяют произвольным числом пробелов и знаков табуляции, но при этом обязательно разделяются как минимум одним символом переноса строки;

-для ключевых слов используют строчные буквы, для идентификаторов - строчные и прописные;

-в одной строке не могут размещаться несколько операторов, и не допускается разделение одного оператора на несколько строк; каждый оператор должен сопровождаться ;;

-комментарии не могут располагаться внутри других многострочных комментариев;

-функции вывода отображают или текст, или данные.

При соблюдении всех вышеперечисленных требований программа будет признана синтаксически верной.

 

2.6.4Процесс тестирования программы

Для тестирования программы можно применить следующий алгоритм:

-создать файл на носителе;

-заполнить его данными;

-запустить программу, указав путь к файлу;

-подождать вывода программы;

-сравнить полученные данные с теоретическими.

2.6.5Оценка надежности

На всех вариантах входных данных программа должна показать результаты, которые совпадают с теоретическими.

 

Заключение

 

В данном курсовом проекте рассматривалось технологии создания синтаксического анализатора на языке C++\Qt. Область применения синтаксических анализаторов очень широка: компиляторы программного кода, интерпретаторы, системы решения математических выражений, проверка орфографии национальных алфавитов.

Использование языка С++\Qt расширяет программно-аппаратную совместимость со всем спектров современных компьютеров, части смартфонов , UMPC и встроенных систем.

Также в течении разработки данного курсового проекта была произведена тщательная отладка, которая сильно повысила надежность синтаксического анализатора и область применимость его к различным задачам.

 

Список использованных источников

 

1. Разработка компиляторов [Электронный ресурс]/ Н.Н Волконская, А.Е Москаль, Д.Ю. Булычев, А.А. Терехов.- Интернет-Университет Информационнных технологий. - Электрон. текст. дан. - Режим доступа http//www.INYUIT.ru, свободный.

. Теория и реализация языков программирования [Электронный ресурс]/ В.А. Серебряков, М.П. Галочкин, Д.Р. Гончар, М.Г.Фуругян.-Интернет Университет Информационныхъ технологий - Электрон. текст. дан. - Режим доступа http//www.INYUIT.ru, свободный.

. Язык программирования С++ [Электронный ресурс]/ А.Л. Фридман.- Университет Информационнных технологий. - Электрон. текст. дан. - Режим доступа http//www.INYUIT.ru, свободный.

. Основы программирования на языке С [Электронный ресурс]/ Н.А. Калинин, Н.А. Костюкова. - Интернет-Университет Информационнных технологий. - Электрон. текст. дан. - Режим доступа http//www.INYUIT.ru, свободный.

 

Приложение А

 

/*

 

*/

#include main()

{

char *formula="a&b|!a&b";

int result;

result=0;

int count;

count=1;

int u;

u=0;

int vars[255];

for (int i=0;i<255;i=i+1)

vars[i]=0;

d:

if (formula[u]=='&')

count=count+1;

if (form