Синтаксический исследование простой программы и форматирование текста на языке

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    177,92 kb
  • Опубликовано:
    2011-07-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Синтаксический исследование простой программы и форматирование текста на языке

Введение


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

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

Необходимость внедрения современных информационных технологий (далее ИТ) обусловлена особенностями нынешнего этапа развития производства, среди которых следует выделить:

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

-             обеспечения совмещенного проектирования основного объекта и компьютерной подготовки его производства;

-             повышение роли решений и инициативы каждого исполнителя;

-             ликвидация деления на производственные подразделения для организации работы направленной на достижение конечных результатов в рамках конкретного проекта.

Сегодня положение дел по внедрению ИТ и информационные системы (далее ИС) на промышленных предприятиях характеризуется крайней неопределенностью, которая связана:

С непрерывным увеличением объема технологических предложений, требующих высоких инвестиций, и соответственно с усилением зависимости от внешних услуг (например, от поставщиков программного обеспечения).

Внутрипроизводственные инвестиции на нужды ИТ растут опережающими темпами по сравнению с другими затратами предприятия. При этом высшее руководство предприятия мало осведомлено об общих расходах в сфере ИТ. Так, например, компетентные решения руководства охватывают примерно лишь 5% соответствующих затрат.

С изменением роли ИТ в хозяйственной деятельности многих предприятий. При выполнении внутрипроизводственных процессов функция ИТ перестала быть вспомогательной, превратившись в важнейшую составную часть продукта или производственных мощностей. Реализация же современных высокопроизводительных организационных проектов, например "виртуальных организаций" без жесткой привязки производственных участков к определенному месту, требует полного использования потенциала ИТ с помощью телекоммуникационных средств.

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

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

Синтаксический анализ программ на различных языках программирования имеет очень большое значение. Он позволяет избежать множества ошибок в программах. Синтаксический анализ на базе регулярных выражений является наиболее простым на начальных стадиях проверки программы, когда не требуется глубокий разбор всех лексематических и синтаксических средства выбранного языка

 

1 Разработка технического задания на проектирование

 

.1 Общая постановка задачи


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

-   синтаксический анализ простой программы на языке С;

-       форматирование текста программы на языке С.

Простой программой на языке С является программа, состоящая только из функции main и не содержащая вызовов других функций. В ее состав должны входить следующие компоненты:

-        Описание библиотек;

-       Описание переменных;

-       Арифметические и логические выражения;

-       Операторы;

-       Функции ввода и вывода;

-       Комментарии.

1.2 Определение требований к программе


Данный курсовой проект выполняет преобразование простейшей программы на языке С, которая преобразовывает СКНФ в эквивалентную СДНФ.

Простая программа на языке С состоит только из функции main и не содержит вызовов других функций. В ее состав должны входить следующие компоненты:

-       проверка правильности синтаксиса написания простой программы на языке С;

-   проверка, преобразовывает ли введенная логическая функция СКНФ в эквивалентную СДНФ

Требование к надежности:

-       программа должна предусмотреть возможность введения данных повторно при совершении ошибки.

Требования к информационной и программной совместимости:

-       для запуска программы необходимо использовать среду Microsoft Visual Studio 2008.

1.3 Предварительный выбор метода решения задачи


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

В процессе синтаксического анализа обязательно должны проверяться:

-       разделение операторов символом «;»;

-       парность скобок «(…)», «[…]», «{…}»;

-       правильность оформления комментариев «/*…*/»;

-       переменные должны состоять из одного символа латинского алфавита «a, b….z»;

-       правильность присвоения данных переменным «:=».

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

Текст проверяемой программы должен быть записан в файле .с

Для проверки функции на правильность написания СКНФ необходимо проверять:

-       парность скобок «(…)»;

-       правильность написания конъюнкций «…)&(…»;

-       правильность написания дизъюнкций «(…|…)»;

-       правильность написания отрицания элементов «!a… a».

Алгоритмы синтаксического анализа конструкций языка (констант, идентификаторов, приложений и т. п.) должны реализовываться с помощью отдельных функций.

В настоящее время при описании синтаксиса языка наиболее часто применяются два формальных метода.

1.4 Определение требований к системе

 

.4.1 Требования к системе в целом

Для использования данной программы персонал должна быть на уровне пользователя ПК. Общих требований к эргономике и технической эстетике, защите информации от несанкционированного доступа и от внешней среды, сохранности информации при авариях, патентной чистоте проектных решений, унификации и стандартизации не имеет.

1.4.2 Требования к техническому обеспечению

1) Средство ввода и вывода клавиатура и монитор.

) Процессор класса не ниже Intel Pentium 3

) На жестком диске 5 Гb свободной памяти

4) Операционная система Microsoft Windows

) Microsoft Visial Studio

1.4.3 Требования к программному обеспечению

Для работы с программой требуется электронно - вычислительная машина с установленной операционной системой Windows. Также необходимо программное обеспечения для ввода и вывода данных.

2 Проектирование программного приложения

 

.1 Разработка технологии обработки информации


Ввод информации осуществляется из файла, имя файла будет являться одним из аргументов запуска программы. Предварительной подготовкой является:

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

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

-       размещение на носителе;

-       доступном для программы;

-       разрешаем доступа для чтения.

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

Структура технологического процесса обработки информации должна быть следующая:

-       считать файл;

-       построчно разделить оставшийся текст в массив строк;

-       произвести синтаксический анализ каждой строки на различные операторы;

-       для каждой части строки произвести дополнительный синтаксический анализ на математические и логические операции

2.2 Разработка структуры и формы представления данных


Загрузка текста программы для проверки осуществляется из файла. Предварительной подготовкой является:

-       создание файла с текстом простой программы;

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

-       считать файл .с с программой;

-       построчно провести синтаксический анализ введенной функции;

2.3 Разработка алгоритма решения задачи


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

2.4 Разработка программы решения задачи

 

.4.1 Выбор инструментальных средств

На выбор языка С повлияло то что он содержит простые средства для обработки текстовых данных, а так же то что он наиболее прост в изучении. Были выбраны регулярные выражения для проверки операторов.

Разработка информационной системы управления производилась с помощью языка программирования C#.# является основным языком разработки программ на платформе .NET корпорации Microsoft. В нем удачно сочетаются испытанные средства программирования с самыми последними новшествами, и предоставляется возможность для эффективного и очень практичного написания программ, предназначенных для вычислительной среды современных предприятий.

Данный язык является прямым наследником двух самых удачных языков программирования: C и С++. Он также имеет тесные родственные связи с другим языком: Java.

С момента выпуска исходной версии 1.0 развитие C# происходило быстро. Вскоре корпорация Microsoft выпустила версию 1.1, в которую было внесено много изменений, но мало новых возможностей. Однако ситуация совершенно изменилась после выпуска версии 2.0.

Появление данной версии стало поворотным моментом в истории развития С#, поскольку было введено много новых средств, в том числе обобщения, частичные типы и анонимные методы, которые основательно расширили пределы возможностей и область применения, а также повысили эффективности работы языка.

С появлением версии 3.0 Microsoft внедрила ряд новшеств, совершенно изменивших общее представление о программировании. К числу этих новшеств относятся, среди прочего, лямда-выражения, язык интегрированных запросов (LINQ). Методы расширения и неявно типизированные переменные.

Текущей является версия C# 4.0. Она прочно опирается на три предыдущие, дополняя их целым рядом новых средств. Вероятно, самыми важными среди них являются именованные и необязательные аргументы. В частности, именованные аргументы позволяют связывать аргумент с параметром по имени. А необязательные аргументы дают возможность указывать для параметра используемый по умолчанию аргумент. Еще одним важным новым средством является тип dynamic, применяемый для объявления объектов, которые проверяются на соответствие типов во время выполнения, а не компиляции. Кроме того, ковариантность и контравариантность параметров типа поддерживается благодаря новому применению ключевых слов in и out. Тем, кто пользуется компонентной моделью объектов (Component Object Model - COM) вообще и прикладными интерфейсами Office Automation API в частности, существенно упрощен доступ к этим средствам. В целом, новые средства, внедренные в версии C# 4.0, способствуют дальнейшей рационализации программирования и повышают практичность самого языка.

Несмотря на то, что C# является самодостаточным языком программирования, у него имеется особая взаимосвязь со средой выполнения .NET Framework. Наличие такой взаимосвязи объясняется двумя причинами. Во-первых, C# первоначально предназначался для создания кода, который должен выполняться в данной среде. И, во-вторых, используемые в C# библиотеки также определены в ней.

Назначение .NET Framework - служить средой для поддержки разработки и выполнения распределенных компонентных приложений. Она обеспечивает совместное использование разных языков программирования, а также, безопасность, переносимость программ и общую модель программирования для платформы Windows. Что же касается взаимосвязи с C#, то среда .NET Framework определяет два важных элемента. Первым из них является общеязыковая среда выполнения (Common Language Runtime - CLR). Это система, управляющая выполнением программ. Вторым элементом среды является библиотека классов. Эта библиотека предоставляет программе доступ к среде выполнения.

Если программа ограничивается средствами, определяемыми в библиотеке классов .NET, то такая программа может работать везде, где поддерживается данная среда выполнения. А поскольку в C# библиотека классов .NET используется автоматически, то программы на C# заведомо оказываются переносимыми во все имеющиеся среды .NET Framework. Благодаря вышеназванным достоинствам, для разработки фрагмента информационной системы управления процессом получения метилацетата был выбран язык программирования C#.

2.4.2 Разработка структуры программы

Основными функциями программы является синтаксический и арифметический анализ текста. Программа состоит из частей:

-       первая часть обеспечивает пользовательский интерфейс и ввод имени файла и передает его второй части;

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

-       третья часть проверяет на арифметические и логические операции;

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

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

-       для первой части необходимо считать введенную функцию и проверить;

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

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

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

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

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

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

-       вывод результатов работ пользователя.

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

-   «Недопустимое положение case»;

-       «Недопустимое расположение break»;

-       «Неиспользование необьявленного массива»;

-       «Неиспользование обьявленной переменной var»;

-       «Использование необъявленного массива»;

-       «Дисбаланс { }»;

-       «Дисбаланс do while»;

-       «Использование не обьявленной переменной var»;

-       «Использование необъявленного массива»;

-       «Неопределенность : {0}»;

-   «Ошибок нет!»;

-   «ok»;

2.4.5 Обеспечение надежности программы

Данная программа не нуждается в серьезной защите от сбоев, так как информация не хранится.

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

-       устройства ввода и вывода информации, (клавиатура и монитор);

-       процессор класса Pentium 3 и выше;

-       объем оперативной памяти не менее 128 Мб;

-       от 500 Мб свободного места на жестком диске, для обеспечения запуска и работы программы;

-       встроенный графический чип или видеоплата.

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

 

.6.1 Общие сведения

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

-       описание переменных типа int;

-       арифметические операции (a|b|c)&(!a|!b|c)&(a|!b|c);

-       операторы: for, while, switch;

-       комментарии;

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

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

-       запустить программу;

-       указав путь к файлу;

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

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

2.6.3 Оценка надежности программы

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

Заключение


В данном курсовом проекте Синтаксис определяет правила записи выражений, которые позволяют сделать заключение о том, принадлежат ли эти выражения языку или нет. Правила описания синтаксиса определены формально, что позволяет выделять отдельные синтаксические конструкции. Соответствие выражения языка заранее заданным синтаксическим правилам проверяется в ходе синтаксического анализа.

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


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

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

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

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

синтаксический анализ проектирование программный модуль

Приложение А

Основная часть меню

Приложение Б

Тест



Приложение В

Тест

Приложение Г

Простая программа

#include <iostream>main()

{

// ввод функции*function="(a|b|c)";

// a)тттt c=1;u=0;(function[u]!='&' && function[u]!='\0')(function[u++]=='|')++;y;=1<<c;

// b)table[y];(int i=0;i<y;i++)[i]=0;

// c)minterm=0;i=0;(function[0]=='(')

{(function[i]==')')

{[minterm]=1;=0;

}(function[i]!=')')(function[i]=='|' || function[i]=='(')( function[i+1]!='!')

{g=1<<(function[i+1]-'a');=minterm+g;

}

}(function[i++]!='\0');

// d)flag=0;(int i=0;i<y;i++)

{(table[i]==0)

{(flag)

{1:(") | (");;0:(" ( ");;

}(int j=0;j<c;j++)

{(j!=0)("&");((i|1<<j)==i)("!");("%c",j+'a');

}=1;

}

}(" ) \n");("pause");

}

Приложение Д

Исходный код функции меню

void Main(string[] args)

{.ForegroundColor = ConsoleColor.Green;.WriteLine("Выбор функции программы (1 или 2): ");.WriteLine("1. Проверка синтаксиса текста программы. ");.WriteLine("2. Закончить работу с приложением;");.WriteLine();.ForegroundColor = ConsoleColor.White;punkt_menu = Console.ReadLine();(punkt_menu == "1")

{.WriteLine(" Введите путь к файлу;");path = Console.ReadLine();(path != "")(System.IO.File.Exists(path))_code(path);

}

}

Приложение Е

Test_cod (Функция построчной обработки кода)

void Test_code(string path)

{file = new StreamReader(path);code_pre = file.ReadToEnd();code_pre2 = "", code = "";rem = false;

// режем /* */(int i = 0; i < code_pre.Length - 1; i++)

{

if (code_pre.ElementAt(i) == '/' && code_pre.ElementAt(i + 1) == '*') rem = true;(i > 2)(code_pre.ElementAt(i - 2) == '*' && code_pre.ElementAt(i - 1) == '/') rem = false;(rem == false) code_pre2 += code_pre.ElementAt(i);

}

// режем //(int i = 0; i < code_pre2.Length - 1; i++)

{(code_pre2.ElementAt(i) == '/' && code_pre2.ElementAt(i + 1) == '/') rem = true;(i > 1)(code_pre2.ElementAt(i) == '\n') rem = false;(rem == false) code += code_pre2.ElementAt(i);

}

// проверяем остатки(code.IndexOf("/*") > 0 || code.IndexOf("*/") > 0) result = 1;z = code.Length;= code.Replace("#include <iostream>", "");(code.Length == z) result = 2;= code.Trim().Replace("\r", "");(code.Substring(0, 11) != "int main()\n") result = 3;= code.Substring(11);incl = 0, do_while = 0;[] lines = code.Split('\n');swit_ch = 0;(string line in lines)

{cod = line.Trim();(cod == "") continue;(swit_ch == 1)(cod == "{")

{++;_ch = 2;;

}(swit_ch == 2)(cod == "}")

{-;_ch = 0;;

}(cod == "{") incl++;(cod == "}") incl--;

{reg = new Regex(@"^for \(int ([a-z])=0;(.*);(.*)\)$");(reg.IsMatch(cod))

{

// проверять больше нечего.Add(reg.Match(cod).Groups[1].Captures[0].Value);(reg.Match(cod).Groups[2].Captures[0].Value);(reg.Match(cod).Groups[3].Captures[0].Value);

}

{= new Regex(@"^while \((.*)\)$");(reg.IsMatch(cod))(reg.Match(cod).Groups[1].Captures[0].Value);

{= new Regex(@"^switch \((.*)\)$");(reg.IsMatch(cod))

{(reg.Match(cod).Groups[1].Captures[0].Value);_ch = 1;

}

{= new Regex(@"^case (.*):$");(reg.IsMatch(cod))

{(reg.Match(cod).Groups[1].Captures[0].Value);(swit_ch != 2) { result = 11;.ForegroundColor = ConsoleColor.Green;.WriteLine(" Недопустимое положение case");.ForegroundColor = ConsoleColor.White;

}

}

{= new Regex(@"^while \((.*)\);$");(reg.IsMatch(cod))

{_while--;(reg.Match(cod).Groups[1].Captures[0].Value);

}

{= new Regex(@"^do$");(reg.IsMatch(cod))

{_while++;

}

{(reg.Match(cod).Groups[1].Captures[0].Value);

}

{= new Regex("^char \\*([a-z]+)=\".*\";$");(reg.IsMatch(cod))

{.Add(reg.Match(cod).Groups[1].Captures[0].Value);

// верное обьявление

}

{= new Regex(@"^int ([a-z]+[a-z0-9]+)\[([a-z0-9]+)\];$");(reg.IsMatch(cod))

{.Add(reg.Match(cod).Groups[1].Captures[0].Value);(reg.Match(cod).Groups[2].Captures[0].Value);

}

{= new Regex(@"^break;$");(reg.IsMatch(cod))

{(incl < 2) { result = 10;.ForegroundColor = ConsoleColor.Green;.WriteLine("Недопустимое расположение break");.ForegroundColor = ConsoleColor.White;

}

}

{= new Regex(@"^([a-z]+)\+\+;$");(reg.IsMatch(cod))

{vare = reg.Match(cod).Groups[1].Captures[0].Value;(vars.IndexOf(vare) == -1) { result = 6;.ForegroundColor = ConsoleColor.Green;.WriteLine("Неиспользование необьявленного массива");.ForegroundColor = ConsoleColor.White;

}

}

{= new Regex("^int ([a-z]+)=(.*);$");(reg.IsMatch(cod))

{.Add(reg.Match(cod).Groups[1].Captures[0].Value);(reg.Match(cod).Groups[2].Captures[0].Value);

}

{= new Regex("^int ([a-z]+);$");(reg.IsMatch(cod))

{

// верное обьявление.Add(reg.Match(cod).Groups[1].Captures[0].Value);

}

{= new Regex("^([a-z]+)=(.*);$");(reg.IsMatch(cod))

{(vars.IndexOf(reg.Match(cod).Groups[1].Captures[0].Value) == -1) { result = 6;.ForegroundColor = ConsoleColor.Green;.WriteLine("Неиспользование обьявленной переменной var");.ForegroundColor = ConsoleColor.White;

}(reg.Match(cod).Groups[2].Captures[0].Value);

}

{= new Regex("^system\\(\"pause\"\\);$");(reg.IsMatch(cod)) ;

{= new Regex("^printf \\(\".*\"\\);$");(reg.IsMatch(cod)) ;

{= new Regex("^printf \\(\".*\",(.*)\\);$");(reg.IsMatch(cod))

{(reg.Match(cod).Groups[1].Captures[0].Value);

}

{= new Regex(@"^(.*)\[(.*)\]=(.*);$");(reg.IsMatch(cod))

{vare = reg.Match(cod).Groups[1].Captures[0].Value.Trim();(arrays.IndexOf(vare) == -1)

{= 7;.ForegroundColor = ConsoleColor.Green;.WriteLine("Использование необъявленного массива");.ForegroundColor = ConsoleColor.White;

}(reg.Match(cod).Groups[2].Captures[0].Value);(reg.Match(cod).Groups[3].Captures[0].Value);

}

{(cod);

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}(incl < 0)

{= 4;.ForegroundColor = ConsoleColor.Green;.WriteLine("Дисбаланс { }");.ForegroundColor = ConsoleColor.White;

}(do_while < 0)

{= 5;.ForegroundColor = ConsoleColor.Green;.WriteLine("Дисбаланс do while;");.ForegroundColor = ConsoleColor.White;

}.Write(new string(' ', incl * 4));.WriteLine(cod);

}(incl != 0)

{= 4;.ForegroundColor = ConsoleColor.Green;.WriteLine("Дисбаланс { }");.ForegroundColor = ConsoleColor.White;

}(do_while != 0)

{= 5;.ForegroundColor = ConsoleColor.Green;.WriteLine("Дисбаланс do while;");.ForegroundColor = ConsoleColor.White;

}.ReadLine();

}

Приложение Ж

Функция проверки алгебраических и логических ворожений

{= code.Trim();

// функция тестирования выражений внутри операторов, при присваивании(code == "") return;(vars.IndexOf(code) != -1) return;reg = new Regex(@"^[0-9]+$");(reg.IsMatch(code)) ;

{= new Regex(@"^([a-z]+)\+\+$");(reg.IsMatch(code))

{(!(vars.IndexOf(reg.Match(code).Groups[1].Captures[0].Value) > -1))

{= 6;.ForegroundColor = ConsoleColor.Green;.WriteLine("Использование не обьявленной переменной var");.ForegroundColor = ConsoleColor.White;

}

}

{= new Regex(@"^\((.*)\)$");(reg.IsMatch(code))

{(reg.Match(code).Groups[1].Captures[0].Value);

}

{= new Regex("^'.*'$");(reg.IsMatch(code)) ;

{= new Regex(@"^(.*)(&&|\|\|)(.*)$");(reg.IsMatch(code))

{(reg.Match(code).Groups[1].Captures[0].Value);(reg.Match(code).Groups[3].Captures[0].Value);

}

{= new Regex("^(.*)(=|!)=(.*)$");(reg.IsMatch(code))

{(reg.Match(code).Groups[1].Captures[0].Value);(reg.Match(code).Groups[3].Captures[0].Value);

}

{= new Regex("^(.*)<<(.*)$");(reg.IsMatch(code))

{(reg.Match(code).Groups[1].Captures[0].Value);(reg.Match(code).Groups[2].Captures[0].Value);

}

{= new Regex(@"^(.*)\[(.*)\]$");(reg.IsMatch(code))

{vare = reg.Match(code).Groups[1].Captures[0].Value.Trim();(arrays.IndexOf(vare) == -1)

{= 7;.ForegroundColor = ConsoleColor.Green;.WriteLine("Использование необъявленного массива");.ForegroundColor = ConsoleColor.White;

}(reg.Match(code).Groups[2].Captures[0].Value);

}

{= new Regex("^(.*)(<|>|\\+|-|\\||=)(.*)$");(reg.IsMatch(code))

{(reg.Match(code).Groups[1].Captures[0].Value);(reg.Match(code).Groups[3].Captures[0].Value);

}

{= 8;.ForegroundColor = ConsoleColor.Green;.WriteLine("Неопределенность : {0}", code);.ForegroundColor = ConsoleColor.White;

}

}

}

}

}

}

}

}

}

}

Похожие работы на - Синтаксический исследование простой программы и форматирование текста на языке

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!