Разработка синтаксического анализатора для заданного фрагмента кода - Программирование, компьютеры и кибернетика курсовая работа
Главная
Программирование, компьютеры и кибернетика
Разработка синтаксического анализатора для заданного фрагмента кода
Синтаксически ориентированная трансляция: общие понятия; транслятор, интерпретатор, препроцессор. Программная реализация трансляции, основанной на структуре текста; идея Н. Хомского; языковые процессоры. Заголовочные файлы, алгоритмы и функции программы.
посмотреть текст работы
скачать работу можно здесь
полная информация о работе
весь список подобных работ
Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1. СИНТАКСИЧЕСКИ ОРИЕНТИРОВАННАЯ ТРАНСЛЯЦИЯ
1.2 Транслятор, интерпретатор, препроцессор
1.3 Трансляция, основанная на структуре текста. Идея Н. Хомского
Построение трансляторов является областью информатики, в которой глубокие теоретические результаты привели к решению важных практических проблем. Эта область объединяет идеи, методы и алгоритмы синтаксического, лексического и семантического анализа искусственных языков, а также огромный накопленный практический опыт техники и технологии разработки трансляторов для различных языков программирования высокого уровня, для различных архитектур процессоров и разнообразных операционных систем.
Основной практической целью разработки трансляторов является построение программных систем специфического назначения - языковых процессоров. Эта область базируется на своем фундаменте - теории формальных языков. И методы построения трансляторов являются областью знаний, нужных не только разработчикам языков программирования высокого уровня: идеи и методы этой области используются во все возрастающем числе приложений компьютеров
1. СИНТАКСИЧЕСКИ ОРИЕНТИРОВАННАЯ ТРАНСЛЯЦИЯ
Транслятор - это программа, которая переводит входной текст в некоторый выход. Например, входом транслятора может быть программа, написанная на языке программирования высокого уровня, таком как Паскаль или C, или каком-нибудь специализированном языке. Выходом транслятора может быть целевая программа на языке ассемблера, промежуточном языке или машинном языке, либо просто последовательность некоторых действий, предписанных входным предложением. Основной мыслью является, что для любых преобразований <вход-выход> современные трансляторы используют идею синтаксически ориентированной трансляции, состоящую в том, что для любого преобразования предложения входного языка транслятор должен использовать структуру этого предложения. Такой подход является обычным в науке: анализ и понимание сложной системы всегда явно или неявно опирается на структуру этой системы.
1.2 Транслятор, интерпретатор, препроцессор
Задачей транслятора является выполнить перевод, преобразования текста, написанного на некотором языке L, в некоторый выход. Если входной язык - алгоритмический, то входной текст называют входной программой.
Рисунок 1. Метод работы транслятора
При трансляции языков программирования, от транслятора может требоваться выполнение разных задач. Если задачей транслятора является трансляция в язык низкого уровня, например в машинный язык, или язык ассемблера, то такой транслятор называется компилятором. Другая возможная задача при трансляции программы на алгоритмический язык - непосредственное выполнение транслятором операторов исходного кода. В этом случае транслятор называется интерпретатором. Интерпретация используется для “командных языков”, каждый оператор которых - это вызов некоторой программы, например редактора исходного текста. Отличие компилятора от интерпретатора в том, что интерпретатор непосредственно выполняет последовательность команд, а компилятор построит и выдаст последовательность команд объектного языка, осуществляющих непосредственно вычисление значения.
1.3 Трансляция, основанная на структуре текста. Идея Н. Хомского
Синтаксисом языка называется совокупность правил построения текста - предложений и отдельных их составных частей, иными словами это правила построения конструкций языка. Синтаксис языка определяет, как правильно строить предложения и их части. Семантикой языка называется совокупность правил интерпретации предложений и конструкций языка. Семантика определят смысловую нагрузку предложений. Транслятор можно считать преобразователем информации, формирующим выход в соответствии с входным текстом на исходном языке.
Первым идею синтаксически ориентированной трансляции выдвинул американский лингвист Ноам Хомский. В своих работах, он исследовал механизмы понимания человеком, смысла фраз естественного языка. Одна из основных его идей заключалась в том, что в понимании смысла, главное структура предложения, и именно эта структура далее используется для вычисления смысла, заключенного в предложение. Н. Хомский считал, что смысл фразы изменяется при изменении группировки слов, иными словами, смысл меняется при изменении структуры предложения.
синтаксический трансляция языковый процессор
Программа написана на языке С++ и разбита на несколько модулей. Каждый модуль отвечает за конкретный этап анализа входного текста:
1. “fail.h” - данный заголовочный файл отвечает за открытие исходного файла с кодом программы, исходного куска программы который нам надо проанализировать.
2. “leksik.h” - в данном заголовочном файле реализован лексический анализ, и присутствуют задатки синтаксического анализа.
3. “sintaksis.h” - в данном заголовочном файле реализован синтаксический анализ.
4. “prototype.h” - в данном заголовочном файле хранится функция, реализующая проверку на корректность содержимого файла.
Структура реализации программы является последовательной. Вначале производится проверка на корректность данных из файла (существуют ли они и тому подобное), далее работает лексический анализатор и последний осуществляет проверку синтаксический анализатор.
Рисунок 2. Структура организации программы
Рисунок 2 полностью отражает все организацию программы и последовательность выполнения.
Программа проходит в три этапа и при успешном выполнении каждого из них, выводится соответствующее уведомление. Если же, в каком либо из этапов обнаруживается ошибка, программа выполняет соответствующий этап до конца, после чего выводится сообщение с описанием ошибки, но следующий этап не выполняется!
Первый этап состоит в проверке существования файла, существования содержимого файла. При обнаружении проблем, в какой либо из проверок, на экран выводится соответствующее сообщение, в котором указана причина ошибки. Если же все хорошо, на экране пользователь увидит уведомление о том, что все успешно проверено и содержимое файла загружено и удовлетворяет всем необходимым условиям:
Рисунок 3. Удачно законченный первый этап
Второй этап это лексический анализ. Эта часть программы проходит в несколько этапов. Вначале нам нужно составить таблицу лексем. В данной программе эта таблица является перечислением и вспомогательная таблица, является массивом символов. Считывая посимвольно из файла, мы делаем проверку, считываемый символ сравниваем с символами из нашей таблицы. Каждой лексеме присвоен свой уникальный номер, именно благодаря ему мы отличаем ключевые слова от идентификаторов, переменных или знаков операций. Считав символ, мы “отправляем” его в функцию, и в ней определяется, к какому типу лексем относится данный символ. Идентификатор или ключевое слово может состоять из нескольких символов, функция распознавания производит проверку и этого. После распознавания происходит проверка на корректность данных. Если все прошло без ошибок, выводится соответствующее уведомление:
Все символы или их последовательность заносятся в контейнер “list”, и при работе синтаксического анализатора, чтение даны будет осуществляться именно из этого контейнера. При помещении в него элементов, все пробелы и табуляции удаляются, в виду ненадобности.
Если же, в ходе проверке будет выявлена ошибка, недопустимая последовательность символов, то пользователь увидит соответствующее уведомление об ошибке. Уведомление состоит из номера строки, в котором произошла ошибка (номер строки мы получаем из счетчика, счетчик отдельная структура в которой хранится номер строки и текст ошибки).
Данная программа распознает, как лексическую ошибку неправильное расположение символ, в имени переменной. Имя переменной не может начинаться с цифры. Именно это является лексической ошибкой.
Рисунок 4. Ошибка во время лексического анализа
Третий этап это синтаксический анализ. Здесь происходит проверка на корректность данных считанных с контейнера. Каждый считанный элемент из list'а обрабатывается с помощью функции, которая работает по принципу автомата. С помощью набора условий и флагов, которые имеют только два состояния 0 и 1, программа методом рекурсивного спуска с возвратом определяет возможную правильную комбинацию элементов, при этом изменяются состояния флагов.
На данном этапе так же имеется счетчик строк, благодаря которому мы узнаем, в какой строке находится ошибка. Как и в лексическом анализе, здесь существует своя структура, в которой хранится номер строки, в которой совершена ошибка и текст с описанием ошибки. Для каждого из ключевых слов имеется свой алгоритм рекурсивного спуска с возвратом. На рисунках 5 и 6 показано, что выдается пользователю на экран при успешном выполнении синтаксического анализа и соответственно всей программы и при обнаружении синтаксическим анализатором ошибки.
Рисунок 5 Синтаксический анализатор не обнаружил ошибок
Рисунок 6. Синтаксический анализатор обнаружил ошибку
В ходе выполнения курсовой работы, был разработан синтаксический анализатор для заданного фрагмента кода. Программа реализована на языке С++, с обоснованным использованием стандартной библиотеки шаблонов STL. Программа работает в консольном режиме и сообщает пользователю информацию о ходе выполнения алгоритмов и функции.
1. Ю.Г Карпов Основы построения трансляторов 2005 г.
3. Основы построения компиляторов: метод. Сост. Н.H. Смирнова С.Д. Тарасов; Балт. гос. техн. ун-т. - СПб., 2007.
Программная реализация синтаксического анализатора произвольного текста. Матрица и дерево переходов для программы. Код программы с построчным комментарием. Порядок запуска среды разработки Visual Studio. Интерфейс и номера Лихтенштейна, скриншот. контрольная работа [855,1 K], добавлен 13.02.2014
Методы грамматического разбора при разработке учебного транслятора. Проектирование лексического анализатора и магазинного автомата. Программная реализация синтаксического анализатора текстового языка высокого уровня. Разработка модуля интерпретации. курсовая работа [697,2 K], добавлен 06.01.2013
Описание алгоритма и исходного кода программы формирования графовой модели заданного фрагмента принципиальной электрической схемы. Разработка схемы алгоритмов решения задачи. Результаты решения контрольных примеров, выполненные с помощью программы. контрольная работа [47,8 K], добавлен 14.10.2012
Проектирование программы-анализатора, состоящей из двух частей: лексического анализатора, разбивающего исходный текст программы на лексемы и заполняющего таблицу имен; синтаксического анализатора, проверяющего соответствие текста заданной грамматике. курсовая работа [2,0 M], добавлен 14.06.2010
Основные концепции языков программирования, механизмы типизации данных. Описание языков программирования и методов трансляции. Конечные автоматы и преобразователи. Общие методы синтаксического анализа. Формальные методы описания языкового перевода. курс лекций [5,5 M], добавлен 04.12.2013
Проектирование лексического и синтаксического анализаторов учебного языка. Правила преобразования логических выражений в ПОЛИЗ. Формирование триад, оптимизация их списка. Логическая структура программы. Тестирование модулей транслятора-интерпретатора. курсовая работа [1,3 M], добавлен 28.05.2013
Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач. курсовая работа [45,0 K], добавлен 13.11.2009
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .
© 2000 — 2021
Разработка синтаксического анализатора для заданного фрагмента кода курсовая работа. Программирование, компьютеры и кибернетика.
Контрольная Работа На Тему Анализ Экономических Показателей
Основы Эпидемиологии Реферат
Сочинение Образ Петра Гринева Кратко
Реферат: Автоматизация технологических процессов и производств. Скачать бесплатно и без регистрации
Дипломная работа по теме Права подозреваемого и гарантии их реализации в уголовном процессе
Дипломная работа по теме Формирование у детей отношения к природе в процессе совместной деятельности в эколого-развивающей среде
Сочинение На Тему Самостоятельность 5 Класс
Реферат по теме Работодатель как субъект трудового права
Сочинение Осенний Поход С Классом
Виды Фитнеса Реферат
Реферат: Василий Осипович Ключевский
Реферат: Обеспечение сохранности документной информации. Документооборот предприятия
Курсовая работа по теме Влияние видовых и сортовых особенностей на структуру урожая зерновых культур
Реферат по теме Плавка стали с окислением
Как Выглядит Отчет По Практике Учебной
Реферат по теме Интернет как виртуальная реальность общества
Курсовая работа по теме Принципы организации и формы безналичных расчетов в России
Дипломная работа по теме Защита личных неимущественных прав граждан
Доказательства Эссе Обществознание
Реферат: Историческая демография
Программа, предназначенная для воспроизведения видео файлов - Программирование, компьютеры и кибернетика курсовая работа
Расизм. Ксенофобія - Политология презентация
Планирование деятельности авиакомпании - Менеджмент и трудовые отношения курсовая работа