Понятие о формальных системах

Основы описания языков программирования при помощи грамматики. Синтаксические конструкции. Формы представления грамматики. Описание формы Бекуса-Наура, достоинства и недостатки. Классификация грамматик по Хомскому как трансляторов языков программирования.

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 09.10.2013
Размер файла 24,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Понятие о формальных системах

1. Основы описания языков

Для построения языка достаточно задать его грамматику.

Алфавит - конечное множество символов применяются в языке

{`A'-`Z', `a'-`z', `0'-`9'}

предложение или цепочка над словарем V-последовательность символов принадлежащих. VЄ(0,1)

Обозначим через V(*) все возможные цепочки над словарем V (имеющих смысл)

Язык L над словарем V-это подмножество из V(*).

Для построения языка используются правила МЕТАЯЗЫКА:

правила подстановки или продукции называется упорядоченная пара (U,X), которая обычно записывается U>X где U-символ, X-непустая цепочка символов. Обозначим продукцию через Р.

Пример грамматики определяющей натуральные числа.

V={`0','1','2','3','4','5','6','7','8','9',<число>, <чс>,<цифра>}

1)<число>><чс>

2)<чс>><цифра>

3)<чс>><чс><цифра>

4)<цифра>>1

...

13)<цифра>>9

Символы, встречающиеся в левой части правил (И) называется нетерминальным или синтаксическими конструкциями.

Обозначим множества этих символов через N.

Символы, которые не могут быть разделены на более мелкие называются терминальными.

Обозначим множества Т.

N={<число>,<чс>,<цифра>}

Т={`0','1',...,'9'}

Терминальные символы никогда не находится в левой части

V=NхT

Существуют еще начальный или сентенциальный символ S, который обязательно присутствует в левой части хотя бы одного правила и задает начало разбора SЄN

Грамматика - совокупность объектов G=(N,T,S,P) продукции могут использовать рекурсию.

Рекурсия позволяет порождать бесконечное множество объектов при помощи правила.

2. Примеры форм представления грамматики

На практике в качестве метаязыков используются много форм. Большое распределение получила форма Бекуса-Наура -БНФ. Разработана 1959-1961 г. при создании языка АЛГОЛ. Нетерминальные символы даны в <>. Левая и правая части продукции отделяются знаком ::=. Различные варианты подстановок записываются в одном правиле и отделяются, друг от друга отделяются чертой |.

<число>::=<чс>

<чс>::=<цифра>|<чс><цифра>

3. <>::='0'|'1'|'2'|...|'9'

Т. образом вместо 13 продукции БНФ имеет всего 3.

Достоинства: а) простота б) сравнительно компактная

запись продукции.

Недостатки: рекурсивные определения повторов, необходимость определений альтернативность (факультативная возможность - элемент, который может отсутствовать.)

Для исправления недостатков была разработана расширенная БНФ (РБНФ).

Рассмотрим пример определения целого вещественного тела.

БНФ.

<цепочка_цифр>::=<цифра>|<цепочка_цифр>

<знак>::=+|-

<число_без_знака>::=<цепочка_цифр>|<цепочка_цифр>.

<число>::=<число_без_знака>|<знак><число_без_знака>

РБНФ.

цепочка_цифр=цифра{цифра}

число_без_знака=цепочка_цифр[`.']

число=число_без_знака|(`+'|'-')число_без_знака

Отличие: нетерминальные символы не заключаются в <>, а терминальные берутся в `'. Для обозначения повторов используются {}. Варианты обозначения |, а факультативные возможности [].

Для данного примера РБНФ позволяет записать:

Число=[(`+'|'-`)]цифра{цифра}[`.']

грамматика программирование язык

3. Классификация грамматик по Хомскому

Предложим 4-е класса грамматик в зависимости от способа задания продукций.

1) регулярная грамматика

А>ВС

А>С

А,В N, СT

Эта грамматика, ею удобно пользоваться для теоретического описания лексического анализа транслятора. По Хомскому это 3-ий класс, самый строгий.

2) контекстно-свободная

A>

А N, N и T

Удобно использовать при описании трансляторов языков программирования. По Хомскому это 2-ой класс.

3) контекстно-зависимая

X

, X и T

По Хомскому это 1-ый класс.

4) Грамматика без ограничений описывает естественные языки (нет ограничений на продукции). Это класс 0.

Размещено на Allbest.ru

...

Подобные документы

  • Применение правил грамматики. Синтаксический анализатор, нис- и восходящий разбор, полный перебор правил подстановки. Классификация грамматик по Хомскому. Определение языков с помощью автоматов. Форма Бекуса-Наура описания синтаксиса формальных языков.

    лекция [270,1 K], добавлен 19.10.2014

  • Особенности и суть языков программирования, способы их задания, цепочки символов и операции над ними. Классификация языков и грамматик, форма Бэкуса-Наура. Определение и свойства регулярных выражений, конечные автоматы и грамматики, описание программы.

    курсовая работа [231,5 K], добавлен 23.06.2011

  • История разработки языка программирования Си. Программа на Си как одна или несколько единиц компиляции (файлов), стадии работы компилятора. Идентификаторы и ключевые слова, типы констант. Форма Бекуса-Наура описания синтаксиса формальных языков.

    презентация [257,7 K], добавлен 05.01.2014

  • Основные методы описания синтаксиса языков программирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта. Разработка алгоритма решения задачи. Лексический и синтаксический анализатор, семантический анализ. Структурная организация данных.

    курсовая работа [680,1 K], добавлен 12.06.2011

  • Система дистанционного обучения Distance Learning Belarus и лабораторный практикум курса "Разработка трансляторов для языков программирования", его перенос в интерактивную среду обучения. Описание работы программы и её взаимодействия с пользователями.

    курсовая работа [588,5 K], добавлен 03.11.2012

  • Теоретические и практические основы грамматик, теория конечных автоматов-распознавателей. Эквивалентные и недостижимые состояния конечных автоматов. Классификация грамматик и порождаемых ими языков. Разработка программного комплекса построения грамматик.

    курсовая работа [654,2 K], добавлен 14.11.2010

  • Основные концепции языков программирования, механизмы типизации данных. Описание языков программирования и методов трансляции. Конечные автоматы и преобразователи. Общие методы синтаксического анализа. Формальные методы описания языкового перевода.

    курс лекций [5,5 M], добавлен 04.12.2013

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.

    курсовая работа [759,5 K], добавлен 04.11.2014

  • Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.

    реферат [463,6 K], добавлен 07.09.2009

  • Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.

    курсовая работа [292,0 K], добавлен 18.03.2013

  • Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.

    курсовая работа [2,6 M], добавлен 17.11.2014

  • Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

    курсовая работа [407,4 K], добавлен 21.06.2014

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

    презентация [873,4 K], добавлен 23.01.2013

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.

    учебное пособие [1,7 M], добавлен 26.10.2010

  • Основные понятия теории грамматик простого и операторного предшествования, алгоритмы синтаксического разбора предложения для классов КС-грамматик; разработка дерева вывода для грамматики входного языка в форме Бэкуса-Наура с указанием шагов построения.

    лабораторная работа [28,0 K], добавлен 24.07.2012

  • Развитие и классификация языков программирования. Методические рекомендации по изучению языков программирования. Основные понятия объектно-ориентированного программирования. Создание электронного учебного пособия с помощью языка гипертекстовой разметки.

    курсовая работа [331,1 K], добавлен 06.09.2011

  • Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.

    отчет по практике [139,1 K], добавлен 03.06.2011

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

    дипломная работа [770,2 K], добавлен 12.09.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.