Семантика в семантико-синтаксических анализаторах
Формализация семантики конструкций языков программирования посредством построения математических моделей. Использование операционной семантики для текстуально правильно построенных определений. Определение свойств языка и формальной верификации программ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 28.02.2019 |
Размер файла | 14,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.Allbest.Ru/
Размещено на http://www.Allbest.Ru/
Размещено на http://www.Allbest.Ru/
Брянский государственный университет им. акад. И.Г. Петровского
Семантика в семантико-синтаксических анализаторах
Semantics in semantic-syntactic analyzers
Сорока Б.О.
Soroca B.O.
Брянск, Россия
Основная часть информации хранится и передается людьми через естественный язык (ЕЯ), то есть совокупности русского, английского и прочих языков. Программы, имеющие знания ЕЯ либо синтезирующие выражения ЕЯ по неким внутренним суждениями считаются основным подклассом компьютерных систем с деталями искусственного интеллекта, либо интеллектуальных систем (ИС). Эти программы именуются системами обработки естественного языка (в иностранной научной литературе: natural language processing systems), либо лингвистическими процессорами (ЛП).
Семантика - раздел лингвистики, изучающий смысловое значение единиц языка.
Основная масса моделей языка, основанные на семантике имеет отношение и к моделям порождающей грамматики, и к моделям интерлингвы (модель «смысл - текст»).
В особенности от порождающих грамматик, семантика, которая описывается при помощи синтаксиса, модели вида «смысл - текст» не считаются порождающими, то есть не считаются генераторами текста, а считаются трансляторами текста в «смысл» и обратно.
Семантика в программировании это в первую очередь дисциплина, которая изучает формализации значений конструкций языков программирования посредством таких построений, как формальные математические модели. Могут использоваться в качестве инструментов построения моделей разные средства: математическая логика, л-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может так же использоваться не только, как для описания языка, так и для определения свойств языка, но и для целей формальной верификации программ на данном языке программирования.
Семантика языка есть некое смысловое значение слов. В программировании означает начальное смысловое значение операторов, основных конструкций языка и так далее
Пример:
Первый код: i = 0; while(i<5){i++;}
Второй код: i = 0; do{i++;}while(i<=4);
операционный семантика математический язык программирование
Логически два фрагмента кода выполняют одно и то же, но сами результаты их работы идентичны, однако одновременно семантически это два разных цикла. Так же такие теги: <i></i> <em></em> будут выглядеть на странице совершенно одинаково, то есть представлять по сути будут аналоги, а семантически первый тег есть начертание курсивом, а второй -- логическое выделение (браузеры выводят курсивом).
Подходы. Операционная семантика используется так же для синтаксических понятий языка, в которой функции рассматриваются как например текстуальные правильно построенные определения, обеспечивающие применение к аргументу, а не только как функции в математическом понимании термина.
Существует классификация разных видов операционной семантики:
1) Аксиоматическая семантика, где семантику каждой синтаксической конструкции языка можно определить как некоторый набор аксиом или правил вывода, который так же можно использовать для вывода результатов выполнения данной конструкции. Смысл всей программы заключается в том, что аксиомы и правила вывода следует использовать так же, как и при доказательстве обычных математических теорем. В предположении, что значения входных переменных удовлетворяют неким ограничениям, аксиомы и правила вывода могут быть использованы для получения лимитов на значения ряда других переменных после исполнения каждого оператора программы. После выполнения программы получаем доказательство того, что эти вычисленные результаты удовлетворяют необходимым ограничениям на значения их относительно входных значений. То есть, таким образом, доказано, что выходные данные представляют значения определенной функции, вычисленной по значениям входных данных.
2) Денотационная семантика выражениям в программе ставит в соответствие настоящие математические объекты, которые обозначают их величины. Важнейшие результаты построения денотационных семантик получены в работах Д. Скотта и К. Страчей в конце 1960-х -- начале 1970-х в Оксфордском университете. Скотт первым построил модель л-исчисления, основанную на представлении о полном частично упорядоченном множестве, им были использованы функции, непрерывные на таком множестве.
Интерпретационная семантика -- описание операционной семантики конструкций в терминах языков программирования низкого уровня (язык ассемблера, машинный код). Данный способ позволяет выявлять медленно выполняемые участки программы, зачастую используется в соответствующих фрагментах систем программирования в целях оптимизации кода программ.
3) Трансляционная семантика -- описание той операционной семантики, конструкции которой используются в терминах языков программирования высокого уровня. С помощью данного способа можно изучать язык, схожий с уже известным программисту.
Трансформационная семантика -- описание операционной семантики конструкций языка в терминах этого же языка. Трансформационная семантика является основой метапрограммирования.
Предметом постоянного интереса и исследования является построение систем доказательства корректности, или правильности программ. Наиболее разработанными оказались системы доказательства для случая корректности функциональных программ, которые восходят к системе LCF Робина Милнера и системе Р. Бойера и Дж. Мура.
Проводимые в настоящее время исследования сосредоточены на построении систем, которые основаны на конструктивной логике и установлении аналогии между программами и доказательствами. Существенно, что как программы, так и доказательства рассматриваются погруженными в л-исчисление с типами, которое является формальной системой высших порядков. Таким образом, обеспечивается возможность строить только такие программы, которые завершаются. Одной из подобных систем является система Coq.
Список литературы
1. Заботкина В.И., Кронгауз М.А., Шаронов И.А. Методы когнитивного анализа семантики слова. Компьютерно-корпусный подход. 2015. 345 с.
2. Сорока Б.О., Кубанских О.В. Основные проблемы при создании семантико-синтаксических анализаторов // Ученые записки Брянского государственного университета. 2017. №2
Размещено на allbest.ru
...Подобные документы
Создание классов, их реализация: формализация задачи, проектирование абстракции данных, определение семантики и определение отношений между классами. Реализация концепции контейнеров и итераторов с помощью языка объектно-ориентированного программирования.
курсовая работа [175,5 K], добавлен 25.03.2015Формальные модели морфологии и семантики. Основные синтаксические концепции. Трансформационная грамматика. Представление о модели "смысл-текст". Виды прагматических знаний. Автоматический анализ и синтез речи. Машинный перевод текста. Экспертные системы.
курсовая работа [294,2 K], добавлен 19.06.2015Понятие верификации моделирующих компьютерных программ. Классификация математических моделей. Языки программирования, используемые для имитационных моделирующих программ. Способы исследования реальных систем. Методы повышения валидации и доверия к модели.
шпаргалка [38,8 K], добавлен 02.10.2013Входная грамматика в структурированной форме. Функции переходов символьного преобразователя. Работа лексического анализатора. Структуры данных, символы действия. Описание семантики перевода. Построение и программная реализация атрибутного преобразователя.
курсовая работа [128,9 K], добавлен 03.07.2013Ознакомление с ситуацией распространения на рынке языков программирования. Определение плюсов и минусов Pascal, C++, VBA. Сравнение и анализ синтаксиса программ на основе одной задачи. Выявление лучшего языка для освоения первоначальных навыков.
курсовая работа [1022,0 K], добавлен 13.10.2014Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016Семантика языков программирования. Процедурные и объектно-ориентированные языки программирования. Стандартная библиотека шаблонов. Независимость байт-кода от операционной системы и оборудования и возможность выполнения Java-приложения на любом устройстве.
реферат [50,5 K], добавлен 24.11.2009Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.
курсовая работа [292,0 K], добавлен 18.03.2013Функции и основные компоненты систем программирования. Средства создания программ. Трансляторы языков программирования. Принципы и фазы работы компилятора, трансформация языка программирования в машинный код. Механизм преобразования интерпретатора.
презентация [3,3 M], добавлен 07.02.2012Использование в операционной системе UNIX языка программирования СИ. Требования к квалификации программиста. Механизм ветвления по условиям, циклы, составные инструкции. Особенности языка СИ. Доступ к памяти компьютера через использование указателей.
презентация [108,6 K], добавлен 22.05.2015История происхождения языков Веб-программирования. Исторические факты появления самого первого из них. Сущность современного, актуального в настоящее время, языка HTML, история появления языка PHP, применение языка JavaScript и его использование.
реферат [23,1 K], добавлен 23.02.2013Основные подходы при построении математических моделей процессов функционирования систем. Применение непрерывно-стохастического подхода для формализации процессов обслуживания. Функции моделирующего алгоритма. Использование языков программирования.
контрольная работа [262,7 K], добавлен 04.06.2011Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.
дипломная работа [1,8 M], добавлен 14.09.2011Понятие и внутренняя структура языка программирования как формальной знаковой системы, предназначенной для записи компьютерных программ. Его цели и функции, предъявляемые требования и принципы исполнения. Классификация и типы, сравнительное описание.
презентация [125,1 K], добавлен 15.04.2014Сущность и функции языков программирования, их эволюция и оценка популярности различных видов. Особенности компьютерных программ, разработанных на компилируемом, интерпретируемом или смешанном языке. Основные классы и иерархия языков программирования.
презентация [873,4 K], добавлен 23.01.2013Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.
отчет по практике [139,1 K], добавлен 03.06.2011Язык программирования как формальная знаковая система, предназначенная для записи программ, его отличие от естественных языков. Прописные и строчные буквы латинского алфавита. Ключевые слова языка программирования. Классическая схема создания программы.
презентация [1,2 M], добавлен 19.02.2014Разработка анализирующей части компилятора для выполнения проверки исходной программы на соответствие грамматике языка, правилам семантики и построения внутреннего представления. Описание анализаторов: лексического, синтаксического и семантического.
контрольная работа [704,9 K], добавлен 01.02.2013