Лексик тахлилчининг дастурий амалга оширилиши.
Тугалланган детерминирланган автоматнинг графи асосида лексик тахлилчининг дастурий амалга оширилиши бажарилади.
Файлнинг вкладкасини юклаш (10-расм) фойдаланувчига юкланаётган файлни танлаш, уни караб чикиш, шу билан бирга лексик хатолик холатида караб чикиш имконини беради.
10-расм – Файлни юклаш вкладкаси
Лексик тахлилчини иш натижалари «Лексемалар жадвали» вкладкасига чикарилади (11- расм).
11-расм – Вкладка "Лексемалар жадвали"
Кирувчи файлда лексик хатолик учраган такдирда экранга хатолик хакидаги маълумот чикарилади ва файлни юклаш вкладкасида хатолик катор кизил рангда курсатилади (12-расм ).
12-расм – Хатолик чикиши
Синтаксис тахлилчининг дастурий амалга оширилиши.
Синтаксис тахлилчининг дастурий амалга оширилиши лексик тахлилчини дастурий амалга оширилишига ухшашдир.
"Синтаксис" вкладкасида тахлилчининг иш натижаси чикиш дарахти чикарилади (13-расм). Унинг натижалари ва модулнинг тулик мантикий иши ушбу вкладкада курсатиади.
13- расм – "Синтаксис" вкладкаси
Худди лексик тахлилдаги хатолик учраганлиги хакидаги маълумот берилгани каби бу ерда хам синтаксис хатоликлар хакидаги маълумотлар берилиши амалга оширилган. Унинг натижалари ва модулнинг тулик мантикий иши ушбу вкладкада курсатиади.
Генерацияни амалга ошириш ва объект кодини оптималлаш.
"Триадлар" вкладкасида триадаларни генерацияси ва уларни оптималлаш хакидаги маълумот чикарилади (14-расм). Берилган масала вариантига ортикча амалларни олиб ташланган оптималлаш мос келади. Унинг натижалари ва модулнинг тулик мантикий иши ушбу вкладкада курсатиади.
14 -расм – "Триадалар" вкладкаси
Триадаларни ассемблер кодига айлантириш натижалари алохида "Командалар" вкладкасида келтирилган (15 -расм). Ушбу натижалар барча дастурнинг иши натижалари хисобланади.
15-расм – "Командалар" вкладкаси
Хулоса
Тажриба ишининг бажарилиш жараёнида берилган Паскаль тилининг кисмтуплами учун синтаксис тахлилни амалга оширувчи дастур ишлаб чикилди. Ушбу дастурни ишлаб чикаришиш учун Microsoft Visual Studio .NET 2003 дастурлаш мухитининг кушимча Trolltech Qt v4.0.1.интеграллашган кутубхоналари классларидан фойдаланилди.
6-тажриба ишига доир берилиши мумкин булган масала вариантлари:
Вариант №1
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::=<Узлаштиришлар руйхати>
<Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <узгарувчилар руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> = <Ифода>
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 2
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> end
<Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>,<Узгарувчилар руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 3
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= [ <Узлаштиришлар руйхати>]
<Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> = <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 4
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::=<Узлаштиришлар руйхати>
<Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 5
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End
<Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> = <Ифода>
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 6
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >
<Узгарувчиларни руйхати > ::=<Идентификатор>; | <Идентификатор>, <Узгарувчилар руйхати> | <Идент>; <Узгарувчиларни руйхати>
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 7
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >: Integer;
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 8
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >: Logical;
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ ! “
<Бин.оп > ::= “ & “ | “ | ” | “ ^ ”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= 0 | 1
Вариант № 9
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Var <Узгарувчиларни руйхати >: Boolean;
<Узгарувчиларни руйхати > ::=<Идентификатор> | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ NOT “
<Бин.оп > ::= “ .AND. “ | “.OR.| ” | “ .XOR. ”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= 0 | 1
Вариант № 10
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>.
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Integer <Узгарувчиларни руйхати >: Boolean;
<Узгарувчиларни руйхати > ::=<Идентификатор>; | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> := <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 11
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= <Узгарувчиларни тури > <Узгарувчиларни руйхати >
<Узгарувчиларни тури > ::= Integer | Long Integer
<Узгарувчиларни руйхати > ::=<Идентификатор>; | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> = <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Вариант № 12
<Дастур > ::=<Узгарувчиларни эълон килиш> <Хисоблашларни ифодалаш>
<Хисоблашларни ифодалаш > ::= Begin <Узлаштиришлар руйхати> End <Узгарувчиларни эълон килиш > ::= Int <Узгарувчиларни руйхати > Int <Узгарувчиларни руйхати > <Узгарувчиларни эълон килиш >
<Узгарувчиларни руйхати > ::=<Идентификатор>; | <Идентификатор>, <Узгарувчилар руйхати> |
<Узлаштиришлар руйхати > ::=<Узлаштириш> | <Узлаштириш>< Узлаштиришлар руйхати>
<Узлаштириш > ::=<Идентификатор> = <Ифода>;
<Ифода > ::=<Унар.оп> <Кисм ифода>| <Кисм ифода>
<Кисм ифода > ::= (<Ифода>) | <Операнд> | <Кисм ифода> <Бинар.оп> <Кисм ифода>
<Ун.оп. > ::= “ –“
<Бин.оп > ::= “ – “ | “+” | “ * ” | “/”
<Операнд > ::= <Идент> |
<Идент > ::= <Харф> <Идент> | <Харф>
<Сonst > ::= <Ракам> | <Ракам>
Фойдаланилган адабиётлар.
Асосий адабиётлар.
1. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. –СПб: Питер, 2003.-396 с.
2. Афанасьев А.Н. Формальные языки и грамматики: Учебная школа: УлГТУ, 1997. – 84 с
3. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции -: Мир, 1979.-487с.
4. Компаниец Р.И. Системное программирование. Основы построения трансляторов. СПб.:Корна принт., 2000. -256 стр.
5. Дьяконов В.Ю. Системное программирование. Высш.шк.. 1990. -221 с.
6. Ананченко И. Программное обеспечения для создания электронных книг.Радиомир. Ваш компьютер.-2005.
7. Шаньгин В.Ф. Программное обеспечения микро ЭВМ. Выс.шк.1988.-126 с.
8. Брябрин В.М. Программное обеспечения персональных ЭВМ. Москва.: Наука. 1990.-272 с.
9. Браун С. Операционная система UNIX – М.: Мир, 1986.-463 с.
10. Вендров А.М. Case – технология. Современные методы и средства проектирования информационных систем. –М: Финансы и статистика, 1998 -361с
11. Вирт Н. Алгоритмы и структуры данных – М.; МИР, 1989. – 360 с.
12. Гордеев А.З., Молчанов А.Д. Системное программное обеспечение. – Спб-Петер, 2002. -734с.
13. Дворогин А.И. Основы трансляции. Учебное пособие.–Волгоград. ВолГТУ,1999.80г.
Қўшимча адабиётлар.
Карпов Б.И. Паралов Т.Х. С++: -СПб: Питер, 2002-210с.
Киселев С.Ю. Технология разработки программного обеспечения. Информационная система.-СПб: СПбГУАП, 1998.-107с.
Майерс Дж. Надежность программного обеспечения. – М: Мир, 1997. 360с.
Мельников Б.Ф. Подклассы класса контекстно – свободных языков – М.: МГУ, 1995. – 174 с.
Компаниец Р.И. Маньков Е.В. Филиппов Н.Е. Системное программирование, основы построения трансляторов. Учебное пособие для средних и высших учебных заведений. СПб: Карона, 2000-256с.
6. А.Левин. Самоучитель полезных программ. Питер. Санкт-Петербург, 2002.
7. Карпов Б.И. Delphi: Специальный справочник. – СПб: Питер, 2001-648с.
8. Карпов Б.И. Visual Basic Специальный справочник. – СПб: Питер, 2000-415с.
9. Карпов С.Ю. Теория автоматов. Учебные пособия для вузов. –СПб: Питер, 2003.-201с.
10. Бейбир Р.Л. Программное обеспечения без ошибок. Радио и связь.1996. -176с.
11. Бонч-Буревич М.А. Программное обеспечения персональных ЭВМ. СПб.:СПбГУТ, 19994. -104с.
12. WWW.codecrojekt.ru
13. WWW. master.ru
14. WWW.bdn_borland.com
15. http://microsofft.com
Информацион-техник воситалар.
Тажриба ишларини ўтқазиш учун компьютерлар билан жихозланган ўқув синфи бўлиши лозим.
Do'stlaringiz bilan baham: |