Методы синтаксического анализа на базе регулярных выражений
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?вертая часть программы будет обрабатывать поступившие данные как логические, алгебраические операции, переменные, элементы массивов, числа или строки;
-Пятая часть будет выводить текст программы в соответствии с правилами форматирования.
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