Список использованных источник
⇐ ПредыдущаяСтр 2 из 2
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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|