![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Разработка программы-компилятора |
СодержаниеВведение 1. Анализ задания 2. Разработка лексического анализатора 2.1 Выбор и обоснование структур данных 2.2 Разработка автоматных грамматик для распознавания лексем 2.3 Разработка автоматов, работающих по правилам грамматики 2.3.1 Автомат для распознавания имён 2.3.2 Автомат для распознавания 16-ричных констант 2.3.3 Автомат для распознавания римских констант 2.3.4 Объединённый автомат 2.4 Разработка алгоритма и программы лексического анализа 2.4.1 Выделение лексем 2.4.2 Распознавание лексем 2.4.3 Реализация лексического анализатора 2.4.4 Тестирование лексического анализатора 3. Разработка синтаксического анализатора 3.1 Уточнение грамматики языка применительно к варианту задания 3.2 Разработка алгоритма синтаксического анализа 3.3 Алгоритмы распознающих функций 3.3.1 Функция Lex Progr 3.3.2 Функция Lex Descr Lis 3.3.3 Функция Lex Descr 3.3.4 Функция Lex ame Lis 3.3.5 Функция Lex Oper Lis 3.3.6 Функция Lex Assig 3.3.7 Функция Lex Exp 3.3.8 Функция Lex Simple Exp 3.3.9 Функция Lex erm 3.3.10 Функция Lex m ozh 3.3.12 Функция Lex Body 3.4 Тексты распознающих процедур 3.5 Результаты тестирования синтаксического анализатора 4. Реализация двухфазного компилятора 4.1 Результаты тестирования двухфазного компилятора 5. Описание программы 5.1 Общие сведения и функциональное назначение 5.2 Вызов и загрузка 5.3 Входные данные 5.4 Выходные данные 5.5 Описание логической структуры программы 5.5.1 Файлы программы 5.5.2 Общее описание работы программы Список использованной литературы ВведениеПо классификации программного обеспечения ЭВМ компиляторы относятся к системным обрабатывающим программам. Их функцией является перевод программы с языка высокого уровня в машинный код. В процессе перевода в программе выделяются и изменяются такие уровни или слои как алфавит, лексика, синтаксис при сохранении семантики. Алфавит - набор допустимых символов и знаков, из которых строятся элементарные конструкции языка. Отдельные знаки объединяются в лексемы. Лексема - отдельная неделимая конструкция, имеющая смысл. Слова (лексемы) объединяются в предложения (операторы) согласно правилам синтаксиса. Синтаксис - описание правильных конструкций языка или правил получения правильных конструкций языка. Компиляция состоит из этапов анализа и синтеза. В анализ входит лексический, синтаксический и семантический анализ. Лексический анализ состоит из распознавания лексем, их классификации и определения правильности. Синтаксический анализ заключается в проверке правильности структур языка, таких как предложения или операторы и всей программы в целом. 1. Анализ заданияЗадание можно разделить на 3 части: лексический анализ, синтаксический анализ, разработка компилятора в целом Лексический анализ включает этапы: преобразование исходного текста в длинную строку; выделение лексических единиц (лексем); распознавание типов лексем; добавление лексем в соответствующие таблицы; сохранение таблиц в виде файлов. В данном задании используются следующие типы лексем: идентификаторы; ключевые слова; 16-ричные и римкие константы; знаки операций; разделители. Идентификаторы (имена) Следует отметить, что идентификатор может начинаться только с буквы, следующие символы могут быть как буквы, так и цифры и знак подчеркивания (‘ ’).
Кроме того, идентификаторы не могут совпадать со служебными словами. В данном задании встречаются следующие идентификаторы: ‘var15’, ‘ ’. Их следует записать в таблицу идентификаторов. Ключевые слова Этот класс лексем, как правило, описывается тем же синтаксисом, что и идентификаторы. Основное отличие состоит в том, что все ключевые слова заранее перечислены и каждое играет в языке свою особую роль. Оно не может заменяться другими ключевыми словами. Лексический анализатор должен отличать ключевые слова от обычных имен, различать между собой и возвращать для каждого из них свои (уникальные) значения. Лексический анализатор должен различить следующие ключевые слова: ‘program’, ‘var’, ‘i eger’, ‘begi ’, ‘repea ’, ‘u il’, ‘e d’, и записать их в таблицу терминальных символов. Константы. В данном задании встречаются как 16-ричные, так и римские константы. Необходимо, чтобы лексический анализатор правильно различал константы и различал их тип (16-ричная константа, римская константа) и записывал тип в таблицу констант. Константа считается римской, если она состоит из знака и символов ‘X’,’V’ и ‘I’ и образована по правилам составления римских констант. Она считается 16-ричной, если начинается с символа ‘$’ и знака и состоит из цифр и букв ‘A’. ’F’. Константы могут быть как положительными, так и отрицательными, это зависит от знака после символа ‘$’. Лексический анализатор должен различить константы: ‘$ 00’, ‘$-0A’ - как 16-ричные; ‘-XII’ - как римскую. Эти лексемы он должен записать в таблицу констант с указанием их типа (’16-рич. ’ - для 16-ричной константы, ’римск. ’ - для римской константы) и указанием десятичной формы. Знаки операций. Их особенность состоит в том, что они могут быть одно - или двухсимвольными. В данном задании встречаются как односимвольные, так и двухсимвольные операции. Такие лексемы лексический анализатор должен распознать правильно (двухсимовольные операции не разбивать на отдельные операции) и записать их в таблицу терминальных символов. В данном задании встречаются следующие операции: Односимовольные: ‘-’, ‘&l ;’; Двухсимвольные: ‘: =’. Разделители. К ним относятся специальные символы, разделяющие конструкции языка, например:; , . ( ) пробелы символы табуляции и перехода на новую строку. Они могут либо возвращаться в синтаксический анализатор в качестве лексем, либо только указывать на окончание предыдущей лексемы и пропускаться при вводе следующей. Некоторые из этих символов одновременно могут играть роль терминальных символов в грамматическом описании отдельных конструкций языка. В данном задании встречаются следующие разделители: ‘; ’, ‘: ’, ‘. ’,’ (‘,’) ’. Границами лексем являются разделители, знаки операций, пробелы. В процессе синтаксического анализа решаются две задачи: распознавание предложений языка; определение правильности конструкций.
Предложение считается синтаксически правильным, если оно представляет сентенциальную форму грамматики языка, т.е. может быть выведено с помощью некоторой цепочки переходов из начального символа грамматики. В процессе синтаксического анализа всего исходного текста в целом и каждого предложения в отдельности возможно два направления движения по цепочке правил: сверху вниз и снизу вверх. В процессе синтаксического анализа строится дерево грамматического разбора для каждого предложения. Это дерево строится от начального к конечному символу или наоборот. Дерево вывода состоит из начального (корневого) узла. В него включают еще промежуточные узлы и внешние узлы. Каждой ветви соответствует одно из правил грамматики. Входные данные - таблица кодов лексем, сформированная на стадии лексического анализа. Выходные данные - сообщение об успешном завершении анализа или сообщение об имеющихся ошибках. 2. Разработка лексического анализатора 2.1 Выбор и обоснование структур данных1. Таблица констант организована в виде двоичных деревьев Для хранения таблицы имен используется массив из записей Co s ab, содержащих следующие элементы: Номер лексемы. Лексема. Тип константы (16-ричная или римская). Ширина константы. 10-тичная форма. Левая ветвь дерева (номер элемента, который является левой ветвью для данного). Правая ветвь дерева (номер элемента, который является правой ветвью для данного). Путь к элементу по дереву (последовательность левых и правых ветвей, которые необходимо пройти, чтобы достичь данного элемента). 2. Таблица терминальных символов организована в виде двоичных деревьев Для хранения таблицы имен используется массив из записей erm ab, содержащих следующие элементы: Номер лексемы. Лексема. Разделитель (если лексема является разделителем, то это поле равно 1, если нет, то 0). Знак операция (если лексема является знаком операции, то это поле равно 1, если нет, то 0). Ключевое слово (если лексема является ключевым словом, то это поле равно 1, если нет, то 0) Левая ветвь дерева (номер элемента, который является левой ветвью для данного). Правая ветвь дерева (номер элемента, который является правой ветвью для данного). Путь к элементу по дереву (последовательность левых и правых ветвей, которые необходимо пройти, чтобы достичь данного элемента). 3. Для хранения таблицы идентификаторов используется метод с использованием хэш-функций Для хранения таблицы констант используется массив из записей Id ab, содержащих следующие элементы: Ссылка на элемент цепочки. Номер. Лексема. В данном случае хэш-функция вычисляется по методу деления, т.е.h (k): = {K/α}где K - ключ записи, α - некоторый коэффициент Для наиболее удобного распределения данных в таблице коэффициент α примем:α= Li 2где L - количество символов i-той строки, в которой хранится идентификатор. Код K рассчитывается как сумма ASCII-кодов символов строки, в которой хранится идентификатор. 4. Для хранения таблицы кодов лексем используется массив из записей Code ab, содержащих следующие элементы: Номер. Тип лексемы (C - константа, I - идентификатор, - терминальный символ).
Вы получили основные сведения об установке MySQL и узнали об основах администрирования баз данных MySQL с помощью утилит-клиентов. Мы рассмотрели API языка С, который наряду с другими языками программирования может применяться с СУРБД MySQL. Вы также познакомились с некоторыми операторами языка SQL в действии. Мы надеемся, что эта глава вдохновит вас на использование баз данных на основе SQL для хранения ваших данных и заставит искать дополнительную информацию об этих мощных средствах управления базами данных. И как напоминание, основной информационный ресурс MySQL — исходная страница MySQL на сайте www.mysql.com. Глава 9 Средства разработки В этой главе рассматриваются средства разработки программ, применяемые в ОС Linux, некоторые из них доступны и в ОС UNIX. В дополнение к обязательным составляющим, таким как компиляторы и отладчики, Linux предлагает ряд средств, каждое из которых предназначено для одного вида работы и позволяет разработчику комбинировать эти средства новыми оригинальными способами. Такой подход — часть идеологии UNIX, которую унаследовала ОС Linux
2. Разработка базы данных «Магазин бытовой техники “Электрон” средствами СУБД MS Access»
3. Учет основных средств в программе "1С Предприятие"
5. Математические модели и инструментальные средства внутрифирменного управления персоналом
9. Диагностика банкротства предприятия и разработка антикризисной программы (на примере ООО «Оптима»)
13. Разработка программы- тренажера "Управление электросетями"
14. Разработка игровой программы "Морской бой"
17. Разработка программы рисования линий с помощью мыши
18. Образовательная программа школы: назначение, содержание, участие учителей и учащихся в ее разработке
19. Исследование и разработка конструкции бандажированного опорного валка стана 2500 горячей прокатки
20. Разработка конструкции мобильной ленточной пилорамы
25. Разработка программы туристского путешествия в Великом Новгороде
26. Разработка маркетинговой программы
27. Механизмы и несущие конструкции радиоэлектронных средств
28. Особенности разработки образовательных программ для руководителей высшего звена
29. Разработка конструкции и технологии изготовления печатного узла
30. Разработка программы совершенствования организации международных перевозок
31. Разработка демонстрационных программ для применения в процессе преподавания физики
33. Разработка и внедрение средств противопожарной защиты на горных предприятиях
35. Разработка модулей программы /Укр./
36. Разработка алгоритмов и диалоговых программ автоматизированного формирования
37. Разработка и применение пакетов прикладных программ
41. Программа Microsoft Excel. Ее применение для разработки электронных таблиц
42. Разработка библиотечных средств
43. Ошибки при выполнении программы. Опции компилятора
44. Разработка конструкции устройства для ориентирования абразивных зёрен
47. Описание пакета прикладных программ Microsoft Office
48. Принципы разработки алгоритмов и программ для решения прикладных задач
49. Проект разработки программы-калькулятора CalcKurs на языке программирования Pascal
50. Проектирование и разработка программы ЧАТ для локальной сети
51. Разработка анимационно-обучающей программы механической системы
52. Разработка и стандартизация программных средств информационных технологий
53. Разработка математической модели на основе описанных методов
58. Разработка программы Helpopr
59. Разработка программы автоматизированного рабочего места диспетчера такси
60. Разработка программы для решения систем линейных уравнений
61. Разработка программы игры "Собери картинку"
62. Разработка программы на Delphi
63. Разработка программы на языке Borland Object Pascal (Ide Borland Delphi)
64. Разработка программы представления табличных данных в виде диаграммы прямоугольников
65. Разработка программы приема и передачи сообщений в локальной сети Microsoft
67. Разработка программы, генерирующей пароли пользователей
68. Разработка средства функционального диагностирования вычислительных устройств
69. Разработка форматов хранения данных программы. Структурирование
74. Разработка пакета программ для расчета фазированной антенной решетки
75. Тенденции развития конструкций электронных средств и факторы, определяющие их построение
76. Разработка технологии горячего блюда из мяса птицы и подбор средств измерения для контроля качества
77. Разработка маркетинговой программы продвижения на рынок нового вида бытовых услуг
78. Разработка программы маркетингового исследования для ОАО МЖК "Краснодарский"
79. Разработка программы продвижения новой продукции
84. Разработка программы кадрового аудита
89. Разработка конструкции мужских полусапог клеевого метода крепления
90. Расчет вала и разработка конструкции вала
92. Различные подходы к разработке культурно-деловых программ на базе гостиничного комплекса
95. Разработка и реализация программы управления универсамом
96. Этапы разработки производственной программы предприятия
97. Разработка программы "Атамекен". Направление "Шапар"