русс | укр

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

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Формальное определение грамматики


Дата добавления: 2013-12-23; просмотров: 839; Нарушение авторских прав


Грамматики

Для нас наибольший интерес представляет одна из систем генерации языков – грамматики. Понятие грамматики изначально было формализовано лингвистами при изучении естественных языков. Предполагалось, что это может помочь при их автоматической трансляции. Однако наилучшие результаты в этом направлении достигнуты при описании не естественных языков, а языков программирования. Примером может служить способ описания синтаксиса языков программирования при помощи БНФ – формы Бэкуса­Наура,которая предполагает использование в качестве нетерминальных символов комбинаций слов естественного языка, заключенных в угловые скобки, а в качестве разделителя - специального знака, состоящего из двух двоеточий и равенства. Например, если правила <L> ® <L> и <L> ® <E>записаны в символической форме, и символ <L> соответствует синтаксическому понятию "список", а символ <E> - "элемент списка", то их можно представить в форме Наура-Бэкуса так:

<список>::= <элемент списка><список>, <список>::= <элемент списка>.

Чтобы сократить описание схемы грамматики, в БНФ разрешается объединять правила c одинаковой левой частью в одно правило, правая часть которого должна включать правые части объединяемых правил, разделенные вертикальной чертой. Используя объединение правил, для рассматриваемого примера получаем:

<список>::=<элемент списка><список>|<элемент списка>.

Декартовым произведением A ´ B множеств A и B называется множество {(a,b) | a Î A, b Î B}.

Порождающая грамматикаG - это четверка (VT, VN, P, S), где

VT - алфавит терминальных символов(терминалов), то есть множество таких символов, которые считаются известным и не требуют определения;



VN - алфавит нетерминальных символов(нетерминалов), не пересекающийся с VT, то есть множество таких символов, которые требуют определения в грамматике;

P - это конечное подмножество множества (VT È VN)+ ´ (VT È VN)*;

Р является множеством правил или продукций (то есть способов определения нетерминальных символов) вида {a ® b } (из некоторой цепочки a следует цепочка b), где b образована из терминальных или нетерминальных символов, а также может быть пустой: b Î ( VTÈVN )*, а a - цепочка, которая в общем случае содержит как терминалы, так и нетерминалы, но в ней обязательно должен быть один нетерминал.

Элемент (a, b) множества P называется правилом вывода и записывается в виде a ® b,

S - начальный символ (цель)грамматики, нетерминал, S Î VN.

 

Мы будем использовать большие латинские буквы для обозначения нетерминальных символов, малые латинские буквы из начала алфавита для обозначения терминальных символов, малые латинские буквы из конца алфавита для обозначения цепочек из VT* и, наконец, малые греческие буквы для обозначения цепочек из ( VTÈVN )*.

Для записи правил вывода с одинаковыми левыми частями

a ® b1 a ® b2 ... a ® bn

будем пользоваться сокращенной записью

a ® b1 | b2 |...| bn.

Каждое bi , i= 1, 2, ... ,n , будем называть альтернативойправила вывода из цепочки a.

 



<== предыдущая лекция | следующая лекция ==>
Представление языков | Пример 2.4


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.