Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




 

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++;

}

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

{(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();

}

 


Приложение Ж

 

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

 

static void Test(string code)

{= 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;

}

}

}

}

}

}

}

}

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...