Реферат: Разработка системного программного обеспечения

Введение

Разработка системного программного обеспечения -этопрямая задача системного программиста. Более того разработка не есть конечныйпункт его деятельности. Совершенное владение этим инструментом -вот главнаязадача. Системное программирование является одной и наиболее широкой областьюпрограммного обеспечения. Главным преймуществом его является непосредственнаягибкость и направленность на достижение определённой задачи. Логика иформальность -ключ к системному программированию.

В данной работе рассмотрен пример реализации языкапри помощи популярного языка высокого уровня С++. Поэтому сам продуктразработки автоматически относится к типу «компиляторов». В отличии отинтерпретаторов и ассемблеров данный вариант может быть доступен для пониманияширокому кругу программистов на что и был рассчитан. В работе рассмотренпример, входным языком которого является язык Си. Интересным моментом здесьявляется развитие языка при помощи самого себя. Т.е. фактически имеяопределённый набор команд или функции можно не только сконструировать но ирасширить свой собственный язык. Другое дело будет ли он полезен и однозначен?

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

Хомскогоотносится к автоматной грамматике, т.к. последнее звено декомпозицииудовлетворят правилу построении такого рода грамматик.

Замечание:пункт 6, 7, 8 не являютсяправилами вывода, а лишь служат для отражения семантической и синтаксическойстороны грамматики.

          Для наглядного изображения работыпрограммы представлено

деревофункционального вызова (рис 1). На нём можно проследить

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

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

Рис1. Функциональное дерево вызова. Элементы И и ИЛИ определяют выборочность привызове функции. Т.е. в случае элемента И выполнится как первая так и втораяфункция. Для элемента ИЛИ вызов функции определяется однозначно.

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image001.gif" v:shapes="_x0000_s1066"><img src="/cache/referats/1162/image002.gif" v:shapes="_x0000_s1061"><img src="/cache/referats/1162/image003.gif" v:shapes="_x0000_s1057"><img src="/cache/referats/1162/image004.gif" v:shapes="_x0000_s1053"><img src="/cache/referats/1162/image004.gif" v:shapes="_x0000_s1049"><img src="/cache/referats/1162/image004.gif" v:shapes="_x0000_s1047"><img src="/cache/referats/1162/image005.gif" v:shapes="_x0000_s1045"><img src="/cache/referats/1162/image005.gif" v:shapes="_x0000_s1043"><img src="/cache/referats/1162/image006.gif" v:shapes="_x0000_s1041"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">TREATMENT

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image007.gif" v:shapes="_x0000_s1035"><img src="/cache/referats/1162/image008.gif" v:shapes="_x0000_s1033"><img src="/cache/referats/1162/image009.gif" v:shapes="_x0000_s1031"><img src="/cache/referats/1162/image010.gif" v:shapes="_x0000_s1029"><img src="/cache/referats/1162/image010.gif" v:shapes="_x0000_s1027"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image011.gif" v:shapes="_x0000_s1026"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image012.gif" v:shapes="_x0000_s1095"><img src="/cache/referats/1162/image013.gif" v:shapes="_x0000_s1090"><img src="/cache/referats/1162/image014.gif" v:shapes="_x0000_s1085"><img src="/cache/referats/1162/image015.gif" v:shapes="_x0000_s1080"><img src="/cache/referats/1162/image015.gif" v:shapes="_x0000_s1075"><img src="/cache/referats/1162/image016.gif" v:shapes="_x0000_s1071"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black;mso-ansi-language:EN-US">TYPE

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">BRACKET

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">TERM

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">SIGN

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">TERM

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">BRACKET

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">FUNC

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">TZ

<img src="/cache/referats/1162/image017.gif" v:shapes="_x0000_s1038"><img src="/cache/referats/1162/image010.gif" v:shapes="_x0000_s1036"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image018.gif" v:shapes="_x0000_s1040"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image019.gif" v:shapes="_x0000_s1139"><img src="/cache/referats/1162/image019.gif" v:shapes="_x0000_s1135"><img src="/cache/referats/1162/image020.gif" v:shapes="_x0000_s1130"><img src="/cache/referats/1162/image021.gif" v:shapes="_x0000_s1125"><img src="/cache/referats/1162/image020.gif" v:shapes="_x0000_s1120"><img src="/cache/referats/1162/image022.gif" v:shapes="_x0000_s1115"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">1

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">1

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">&

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<img src="/cache/referats/1162/image013.gif" v:shapes="_x0000_s1110"><img src="/cache/referats/1162/image014.gif" v:shapes="_x0000_s1105"><img src="/cache/referats/1162/image023.gif" v:shapes="_x0000_s1100"><span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">DIGIT

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">IDENT

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">DIGIT

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">IDENT

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">TERM

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">BRACKE

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black;mso-ansi-language:EN-US">T<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">

<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»;color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; color:black">

Расшифровка:

1. TYPE  — функция TYPE(«набор терминальных символов»).            В данном случае представляется TYPE(«if»).Сканирует соответствующие терминальные символы и выдаёт сообщение об ошибке вслучае несоответствия текущего и входного языков.

2. BRACKET — функция(англ. «скобка»). В данном случае имеет вид:

 BRACKET(1) -параметр функциихарактеризует тип скобки.

1-открывающаяся        2 -закрывающаяся        3 -и та и другая

3. TERM -функция TERM().Сканирует на терм-конструкцию.

4. SIGN  — функция SIGN()(англ. «знак»). Сканирует знак.

5. DIGIT — функцияDIGIT() (англ. «цифра»). Сканирует на целое число.

6. IDENT — функцияIDENT() (сокр. «идентификатор»). Сканирует на идентификатор.

7. FUNC — функцияFUNC(), сканирует на функциональную конструкцию.

8. TZ — функцияTZ() (сокр. «точка с запятой»), сканирует точку с запятой.

<img src="/cache/referats/1162/image024.gif" v:shapes="_x0000_s1143"> <img src="/cache/referats/1162/image025.gif" " v:shapes="_x0000_s1046"> <img src="/cache/referats/1162/image026.gif" " v:shapes="_x0000_s1044"> <img src="/cache/referats/1162/image027.gif" " v:shapes="_x0000_s1042"> <img src="/cache/referats/1162/image028.gif" v:shapes="_x0000_s1028"><img src="/cache/referats/1162/image029.gif" v:shapes="_x0000_s1034"><img src="/cache/referats/1162/image030.gif" v:shapes="_x0000_s1032"><img src="/cache/referats/1162/image031.gif" v:shapes="_x0000_s1030">


<img src="/cache/referats/1162/image032.gif" v:shapes="_x0000_s1050"><img src="/cache/referats/1162/image033.gif" v:shapes="_x0000_s1048">TYPE                BRACK               TERM               SIGN                           

<img src="/cache/referats/1162/image034.gif" v:shapes="_x0000_s1116 _x0000_s1121"> <img src="/cache/referats/1162/image035.gif" v:shapes="_x0000_s1091 _x0000_s1096"> <img src="/cache/referats/1162/image036.gif" v:shapes="_x0000_s1081 _x0000_s1086"> <img src="/cache/referats/1162/image037.gif" v:shapes="_x0000_s1058 _x0000_s1062">


<img src="/cache/referats/1162/image038.gif" v:shapes="_x0000_s1054">         

<img src="/cache/referats/1162/image039.gif" v:shapes="_x0000_s1072 _x0000_s1076 _x0000_s1131 _x0000_s1136">


<img src="/cache/referats/1162/image040.gif" v:shapes="_x0000_s1037"><img src="/cache/referats/1162/image041.gif" v:shapes="_x0000_s1039">

<img src="/cache/referats/1162/image042.gif" v:shapes="_x0000_s1126"><img src="/cache/referats/1162/image043.gif" v:shapes="_x0000_s1106"><img src="/cache/referats/1162/image044.gif" v:shapes="_x0000_s1067">                                FUNC                       TZ

<img src="/cache/referats/1162/image045.gif" v:shapes="_x0000_s1140"> <img src="/cache/referats/1162/image046.gif" " v:shapes="_x0000_s1101"> <img src="/cache/referats/1162/image047.gif" " v:shapes="_x0000_s1111">


                  

рис.2  Функциональная схема работы программы.Каждому входу элемента соответствует свой выход.

          Данная функциональная схема отражаетработу программы с точки зрения вызова функции. Начало работы программы идёт сподачи на вход блока TYPEуправляющего терминальногосимвола IF. После его обработки идёт запрос следующего функциональногоблока, отвечающего за обработку терминальных символов  «(» и  «)». Затем сигнал подается навход устройства, соответствующего терминальным символам TERM ит.д.

         

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

Задача:  принадлежит ли грамматике языка следующеесинтаксическое предложение:

IF ( A < B ) BULL () ;    

Длярешения задачи обратимся к имеющемуся входному

языкуG<Оператор>.

          Любой язык, назовём его Gв независимости от его классификации ифункционального назначения содержит следующие базисные элементы:  G ={ Vt, Vn, Z, P }, где:

Vt -словарь терминальных символов

Vn -словарь нетерминальных символов

Z  -начальный нетерминальныйсимвол

P — множество правил вывода

          Для языка G<Оператор>имеем следующие множества:

Vt ={ 0, 1, 2,…, 9; a, b, c, d,… ,z;A, B, C, ..., Z; <, >, = };

Vn ={«Оператор», «УслВыр», «Терм», «Операнд», «Функция»,«Идентификатор», «Скобки», «Целое» };

Z = { «Оператор»};

P = {

1.< Оператор>   <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à

   IF  ( < УслВыр> ) <Функция >;                              [ ELSE  < Функция>; ]

2. < УслВыр> <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à

  T  |   < УслВыр>  <  T   |   < УслВыр>  >  T  |      < УслВыр>  =  Т

3. < Терм><span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à

  O   |   «Целое»{«Целое» }  |   «Идентификатор»{ О }

4. < Функция>  <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à

   O< Скобки >     |     О{ О }<Скобки >

5. < Операнд>  <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à

    «Целое»  |   «Идентификатор»

6. <  Целое > = { 0, 1, 2, 3,…, 9 }

7. < Идентификатор> <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à

  { a, b, c, d,…, z; A, B, C,… ,Z }

8. < Скобки> <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à

  {  (,) }

                }

<img src="/cache/referats/1162/image048.gif" v:shapes="_x0000_s1117"><img src="/cache/referats/1162/image049.gif" v:shapes="_x0000_s1112"><img src="/cache/referats/1162/image050.gif" v:shapes="_x0000_s1068"><img src="/cache/referats/1162/image051.gif" v:shapes="_x0000_s1063">                        <Оператор >

<img src="/cache/referats/1162/image052.gif" v:shapes="_x0000_s1132"><img src="/cache/referats/1162/image053.gif" v:shapes="_x0000_s1077">                   

                                < УВ >                                                                                                                        

<img src="/cache/referats/1162/image054.gif" v:shapes="_x0000_s1087"><img src="/cache/referats/1162/image055.gif" v:shapes="_x0000_s1082">                                                                                                                                                                

                       < УВ >                                                                                                                              

                          T              T

<img src="/cache/referats/1162/image056.gif" v:shapes="_x0000_s1097"> <img src="/cache/referats/1162/image005.gif" v:shapes="_x0000_s1092">


<img src="/cache/referats/1162/image057.gif" v:shapes="_x0000_s1122">                                                                         < Функция >

<img src="/cache/referats/1162/image058.gif" v:shapes="_x0000_s1127">


                O             O                 O { O }

<img src="/cache/referats/1162/image059.gif" v:shapes="_x0000_s1102"> <img src="/cache/referats/1162/image060.gif" v:shapes="_x0000_s1107">


                                                                       ид   ид     { ид}                                      

                                                                       ИД    ИД     ИД     ИД

IF (          A      <     B            )   B     U     L     L           ()                ;    

В программе данные функции размещены в соответствиисвходнымязыком G <Оператор>. В случае смены входного языка

требуетсявсего на всего заменить очередность вызова функций. Например в пределахзаданного базиса можно сконструировать грамматику  G <Инструкция >.

G < Инструкция > <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à

PRINT( < УВ > ) ( < УВ > ) < Функция >;

( Дальнейшая конструкция языка идентична языку G < Оператор> ).

Сконструируемдерево вызова следующим образом:

TREATMENT <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à

TYPE(«print») <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àBRACKET(1) <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àTERM() <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àSIGN() <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">àTERM() <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àBRACKET(2) <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àBRACKET(1) <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àTERM() <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àSIGN() <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àTERM() <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àBRACKET(2)<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">àFUNC() <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">àTZ()

                Таким образом можнопорождать необходимые языковые конструкции. На данном этапе имеются уже дваоператора

IF и PRINT. Можно продолжатьдальнейшее наращивание входного словаря операторов, таким образом расширяя самсвой собственный язык.

                Язык G  < Оператор > выполненсо значительными усечениями поэтому не претендует на роль идеального базиса.Например обязателен вызов функции после круглой скобки,

хотяреально это только мизерная часть возможных операций.

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

          Несколько слов о самой программе.Программа выполнена,

какя уже упомянал, на языке Си, с элементами Си++. После запуска

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

a) Об ошибках -в случаенесоответствия входного и текущего языков

b) «Успех!!!» -в противномслучае

          Имеется возможность использованияключевых слов:

1.«help» -выводит на экран окно помощи

2. «helpme»-выводит на экран авторское окно

3. «exit»-выход из программы

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

Постановказадачи

 

 

Пользуясьбазовым языком высокого уровня Си ++ разработать и реализовать синтаксическийанализатор условного оператора

IF ELSE языка Си.

Порядоквыполнения:

 

1. Построение формального языкаL  

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

2.Подбор грамматики G[Z] по языкуL

Построенныйформальный язык L, подвергается декомпозиции, в процессе которойвыявляются лексические составляющие — идентификаторы, константы и др.терминальные символы.

3.Классификация G[Z]  

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

фикацииформальных грамматик, предложенных Хомским.

4.Выбор метода анализа

Проанализироватьи выбрать наиболее подходящий анализ входного языка.

5.Диагностика и нейтрализация ошибок  

Разработатьалгоритм диагностики и нейтрализации ошибок.

6.Тестирование на программы на символьных цепочках

Протестироватьразработанный языковой процессор на конкретных символьных цепочках.

7.Листинг

Вконце отчета поместить распечатку программы с подробными коментариями.

 

 

Построениеформального языка L

 

 

< Оператор>   <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à

   IF  ( < УслВыр> ) <Функция >;

[ ELSE < Функция>; ]

 

< Оператор > — начальный нетерминальныйсимвол

IF --  входной терминальный символ

ELSE — входной терминальный символ (может и отсутствовать)

< УВ > — условное выражение

<Функция >-отражает функциональнуюконструкцию языка Си

Примерправильного синтаксиса:

if (  a  <  b )  CallTheFunction( code1 );  else TheNextFunction( code2 );

a < b — есть условное выражение

«CallTheFunction» и «TheNextFunction» — функции

code1 & code2  — параметры функции

Подборграмматики  G[Z]  по языку  L

 

 

          Любой язык, назовём его Gв независимости от его классификации ифункционального назначения содержит следующие базисные элементы:  G ={ Vt, Vn, Z, P }, где:

Vt -словарь терминальных символов

Vn -словарь нетерминальных символов

Z  -начальный нетерминальныйсимвол

P — множество правил вывода

          Для

еще рефераты
Еще работы по программированию, базе данных