Классификация языков по Хомскому

Классификация языков по Хомскому

Главные понятия БНФ

n Терминальный знак – знак, состоящий только из букв алфавита описываемого языка. В общем случае эмблемой может быть одна либо несколько букв, имеющие совместно определенное значение. К примеру, ключевое слово END.

n Нетерминальный знак – сформулированное на российском либо любом другом языке понятие описываемого языка программирования.

Нетерминальные знаки заключаются в Классификация языков по Хомскому угловые скобки.

К примеру: , , .

Нетерминальные знаки именуют металингвистическими переменными, переменные метаязыка.

Особые метасимволы

¨ “::=”–по определению есть либо представляет собой;

¨ “|”–либо.

Примеры

<цифра> ::= 0 | 1 | 2…|9.

<оператор> ::= <оператор присваивания > |

<оператор цикла> | <условный оператор>

Для того, чтоб раскрыть понятие языка, обозначаемое нетерминальным эмблемой, употребляется правила подстановки (ПП) либо металингвистические формулы, являются предложениями метаязыка.

В общем случае ПП:

U::=u,

где U, u – произвольные Классификация языков по Хомскому (конечные) последовательности нетерминальных и терминальных знаков.

Обычно, в языках программирования

U – один нетерминальный знак,

u– неважно какая (в том числе и пустая) последовательность нетерминальных и терминальных знаков, раскрывающая суть (может быть не до конца) нетерминального знака, стоящего в левой части подстановки.

Пример 1.

Описание синтаксиса языка целых чисел

- <целое>::= <числа>|<символ> <числа>

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

- <символ>::= + | -

<цифра>::= 0/1/2…/9.

Пример 2.

Грамматика символического имени

<символическое имя>::= <буковка> |

<символическое имя> <буква-цифра>

<буква-цифра>::= < буковка> | < цифра>

- <буковка>::= А Классификация языков по Хомскому | …|z

- <цифра>::=0|1| … | 9.

В почти всех случаях для сокращения записи и увеличения наглядности описания синтаксиса употребляют так именуемую измененную БНФ.

Модификация заключается в добавлении новых знаков метаязыка.

Более нередко используют квадратные и фигурные скобки.

Часть предложения, заключенная в квадратные скобки может или находиться, или отсутствовать.

Пример 3.

n <вещ. константа>::=

[<символ>]<целое>.<целое>[E [<символ>] целое>]

n <символ>::= + | -

n <целое>::=<цифра>|<целое><цифра>

n Классификация языков по Хомскому <цифра>::=0 | 1 | … | 9.

n Часть предложения, заключенная в фигурные скобки, может или отсутствовать, или повторяться хоть какое число раз.

Пример 4

¨ <символическое имя>::= <буковка> <буковка>

¨ <буковка>::= А | … | z

¨ <цифра>::= 0 | 1 | ... | 9

Пример 5

¨ <перечень имен>::= <имя> { , < имя> }

¨ Число повторений части предложения, заключенного в фигурные скобки, может быть ограничено снизу и сверху подстрочными и надстрочными индексами.

¨ Это записывается последующим образом: ,

где Классификация языков по Хомскому m – малое, n- наибольшее число повторений.

К примеру, цепочка знаков:

Определяет символическое имя длиной менее 6 знаков.

n 3-ий всераспространенный метод описания синтаксиса языков программирования – это синтаксические диаграммы, являющиеся графическим изображением БНФ.

n Нетерминальные знаки изображаются на СД в прямоугольниках, терминальные в кружках либо овалах (для длинноватых терминальных знаков Классификация языков по Хомскому).

n Знаки соединяются стрелками, указывающими последовательность чтения знаков, образующих цепочку.

n Знак либо (“|”) изображается на диаграмме петлей.

Пример 6

Определение символического имени

¨ Символическое имя

Цифра Буковка


Пример 7

Определение синтаксиса оператора описания

Оператор описания

1.2. Порождающая грамматика (ПГ)

n Синтаксис всего языка либо его части определяется последовательностью правил подстановки.

n Одно из этих правил, обозначающее более общее (основное Классификация языков по Хомскому) понятие языка стоит первым,

n нетерминальный знак, обозначающий это понятие – исходный знак грамматики.

n Упомянутая последовательность правил подстановки именуется порождающей грамматикой, потому что она обрисовывает функцию получения правильных предложений языка.

n

1.2.1. Формальное определение ПГ

ФПГ G представляет собой четверку объектов:

где

¨ N - огромное количество нетерминальных знаков, обозначающих конструкции описываемого языка Классификация языков по Хомскому;

¨ T - огромное количество терминальных знаков, состоящих из букв алфавита описываемого языка;

¨ исходный знак грамматики, стоит в левой части первого правила подстановки;

¨ П – набор правил подстановки.

Таким макаром, чтоб обрисовать синтаксис ФЯ, нужно задать

1.2.2. Словарь грамматики:

n огромное количество цепочек терминальных и нетерминальных знаков, включая пустую цепочку Классификация языков по Хомскому.

n огромное количество цепочек терминальных и нетерминальных знаков, исключая пустую цепочку.

Пошаговый процесс получения конструкций языка по ФПГ именуется выводом либо порождением.

Вывод завершается, если все знаки терминальные.

Пример 8. Вывод по грамматике примера 1 цепочки знаков -247.

<целое>::= <символ> <числа>

- <числа>

- <числа> <цифра>

- <числа> <цифра> <цифра>

- <цифра> <цифра> <цифра>

-2 <цифра> <цифра>

- 24 <цифра>

- 247.

n Примеры вывода символических имён по грамматике 2:

1) <символическое имя> => <символическое имя> <буква-цифра> => <символическое имя> <буква-цифра> <буква-цифра> => <буковка> <буква-цифра> <буква-цифра> => X<буква-цифра> <буква-цифра> => X <буковка> <буква-цифра > => XY<буква-цифра> => XY<цифра> => XY9

2) <символическое имя> => <буковка> => А

n В этом примере применен один очень обычной Классификация языков по Хомскому прием – рекурсивное определение. В первом правиле подстановки <символическое имя> определяется сначала простым образом как <буковка>, а позже, после разделителя | (“либо”), нетерминальный знак <символическое имя> употребляется с определенным значением.

n После того, как <символическое имя>получило значение <буковка> <буква-цифра>, на последующем шаге оно может быть определено как

<буковка><буква-цифра> <буква-цифра>

и т.д..

n Замечание:

n На любом шаге вывода можно по Классификация языков по Хомскому-разному открывать нетерминальные знаки, если в правых частях правил подстановки находятся разделители “либо”.

n Внедрение рекурсивного определения нетерминальных знаков позволяет получить сколь угодно длинноватое предложение языка, потому что рекурсия естественным образом обеспечивает циклический (повторяющийся) процесс.

n Вообщем, если нужно обрисовать синтаксис сколь угодно длинноватой последовательности объектов, следует использовать рекурсию.

<последовательность объектов> ::=<объект> | <последовательность объектов> < объект>

n Классификация языков по Хомскому Пример описания синтаксиса обычного языка программирования.

n В этом описании можно отыскать все особенности использования БНФ, а именно описания синтаксиса арифметических и логических выражений, являющееся уже традиционным.

n Пример. Грамматика языка программирования

n Сначала зададим некое неформальное описание этого языка.

n Язык позволяет оперировать с данными целого Классификация языков по Хомскому (integer) и логического типов (logical).

n Логические значения: true, false.

n Данное может быть константой, переменной либо одномерным массивом целых чисел.

n Одномерный массив: array имя [n:m], где n,m – целые константы, определяющие нижнюю и верхнюю границы конфигурации индекса.

n Элемент массива записывается в виде:

имя [индексное выражение].

n Операторы Классификация языков по Хомскому языка:

¨ оператор присваивания: x:=E;

¨ условный оператор:

if условиеthen операторelseоператорfiили

ifусловие then оператор fi ;

¨ оператор цикла: whileусловиеdoоператорod;

¨ пустой оператор.

1.2.3. Формальное описание синтаксиса языка в БНФ

n <программка>::= <описания> <оператор>

n <описания> ::= <оператор описания>;|

<описания> <оператор описания>;

n <оператор описания>::= <оператор описания типа> | <оператор описания массива>

n <оператор описания типа>::=

<тип> <перечень типа>

n <тип >::=integer|logical

n <перечень типа>::= <имя> |

<перечень типа>,<имя>

n <оператор описания массива>::=

array<перечень массивов>

n <перечень массивов>::=

<элемент перечня> | <перечень массивов>, <элемент перечня>

n <элемент перечня>::=

<имя>[<целое>:<целое>]

n <оператор>::= <оператор присваивания> |<условный оператор> | <оператор цикла> |

<пустой оператор> |

<оператор> ; <оператор>

n <оператор присваивания>::=

<переменная> := <выражение>

n <условный оператор>::= if < логическое выражение> then <оператор> fi|

if <логическое выражение> then<оператор> else <оператор> fi

n <оператор цикла>::= while < логическое выражение> do <оператор> od

n Классификация языков по Хомскому <пустой оператор>::=

n <переменная>::= < обычная переменная >|

<переменная с индексом>

n < обычная переменная >::= <имя>

n <переменная с индексом>::=

<имя> [ < арифметическое выражение> ]

n <выражение>::= <арифметическое выражение > | < логическое выражение >

n <арифметическое выражение> ::=<слагаемое> | + <слагаемое> |

- <слагаемое> | <арифметическое выражение> + <слагаемое> |

<арифметическое выражение> -

< слагаемое >

n <слагаемое>::= <множитель> | <множитель> * <слагаемое> |

<множитель> / <слагаемое>

n <множитель>::= <целое> | <переменная>|

(<арифметическое выражение>)|

<множитель> ** <множитель>

n <логическое выражение> ::=

<логическое слагаемое> | <логическое слагаемое> <логическое выражение>

n <логическое слагаемое>::=

<логический множитель> |

<логический множитель> <логическое слагаемое>

n <логический множитель>::= <логическая константа> | <обычная переменная> |

<арифметическое выражение> <операция дела> <арифметическое выражение> | (<логическое выражение>) |

<логический множитель>

n <логическая константа>::= | < false>

n <операция дела>::= |=|>|<| | |

n <имя>::= <буковка> | <имя> <буковка> | <имя> <цифра>

n <буковка>::= A|B|…|z

<цифра>::= 0|1|…|9

Систематизация языков по Хомскому

В базе этой систематизации лежит форма левой и правой частей правила подстановки

U::=u.

По Хомскому языки делятся на 4 класса с номерами 0,1,2,3, при этом каждый класс с огромным номером является Классификация языков по Хомскому подмножеством хоть какого класса с наименьшим номером.

Класс 0. Грамматики с фразовой структурой

Правило подстановки имеет вид:

U::=u,

где U – случайная непустая последовательность (цепочка) терминальных и нетерминальных знаков;

u - случайная (может быть и пустая) последовательность терминальных и нетерминальных знаков.

Класс 0 является более массивным, языки этого класса могут служить моделью естественных Классификация языков по Хомскому языков.

Класс 1. Контекстно-зависимые грамматики

Правило подстановки имеет вид:

x U y ::= x u y,

где U – нетерминальный знак;

x, u, y – произвольные последовательность (цепочка) терминальных и нетерминальных знаков.

Смысл этого правила в том, что подмена U на u осуществляется исключительно в контексте x...y.

Класс 2. Контекстно-свободные грамматики

Правило Классификация языков по Хомскому подстановки имеет вид:

U::= u,

где U – ровно один нетерминальный знак;

u- случайная цепочка терминальных и нетерминальных знаков.

Грамматика типа 2 отличается от грамматики типа 1 тем, что подмена U на u осуществляется в любом контексте.

Грамматика типа 2 обычно употребляется для описания синтаксиса языков программирования.

Класс 3. Автоматные (постоянные) грамматики

Правило подстановки имеет вид:

U Классификация языков по Хомскому::= t, U::= t n

гдеt – ровно один терминальный знак;

n– ровно один нетерминальный знак.

Грамматика типа 3 употребляется для описания синтаксиса обычных языков программирования (узкоспециализированных либо подмножеств языков программирования).

n Следует подразумевать, что если хотя бы одно правило подстановки в грамматике относится к более высочайшему классу (с наименьшим номером Классификация языков по Хомскому), чем другие, то и вся грамматика относится к этому классу.

n Больший энтузиазм в теории языков программирования представляют контекстно-свободные и автоматные грамматики. Одна из обстоятельств этого - сравнительная простота определения конструкций этих языков, что употребляется для разработки трансляторов.

1.4. Синтаксический анализ языковых конструкций

n Синтаксический анализ языковых конструкций представляет собой задачку, обратную Классификация языков по Хомскому задачке порождения (вывода).

n Задачка синтаксического анализа (задачка разбора) формулируется последующим образом: найти, соответствует ли данная конструкция некого языка грамматике этого языка либо другими словами, является ли данная конструкция правильным (не содержащим грамматических ошибок) предложением языка.

n Задачка разбора имеет обширное практическое применение, каждый транслятор языка программирования имеет в своём Классификация языков по Хомскому составе блок синтаксического анализа.

До того как рассматривать методы синтаксического анализа, введём понятие синтаксического дерева, как графического метода изображения вывода определенного предложения языка.

1.4.1. Дерево

n представляет собой иерархическую структуру, состоящую из узлов различных уровней;

n любой из узлов некого уровня (не считая последнего) связан с несколькими узлами последующего уровня Классификация языков по Хомскому и менее, чем с одним узлом предшествующего уровня.

На I уровне может быть только один узел, именуемый корнем. Узлы последнего уровня именуются листьями. Кустик узла – огромное количество подчиненных ему узлов нижних уровней.

n В синтаксических деревьях узлы представляют собой нетерминальные и терминальные знаки,

n листья являются терминальными знаками, а другие узлы Классификация языков по Хомскому – нетерминальными.

n Корень дерева – исходный знак грамматики. Кустик представляет собой правую часть правила подстановки для данного нетерминального знака.

Пример 1. Синтаксическое дерево для описания массива array A[0:10]


n Последовательность листьев этого дерева, читаемая слева вправо, представляет собой предложение array A[0:10].

n Пример 2. Синтаксическое дерево для арифметического выражения Классификация языков по Хомскому A1*(A+B)

n Достоинством синтаксических деревьев является наглядность описания синтаксиса как самого предложения, так и его отдельных составляющих.

n С другой стороны, для реальных конструкций языков программирования дерево оказывается очень массивным.

n Потому, если дерево употребляется для получения наглядности описания, то, или опускаются некие промежные уровни, несущественные для этого описания Классификация языков по Хомскому, или оно составляется для обычных предложений.

n Мысль построения деревьев обширно употребляется в трансляторах, потому что есть действенные способы отображения деревьев в памяти ЭВМ.

n Синтаксический анализ предложений, записанных на языках программирования, практически сводится к построению синтаксических деревьев разными способами.

n Есть два базисных метода синтаксического анализа (решения задачки разбора Классификация языков по Хомскому):

n нисходящий разбор (развёртка);

n восходящий разбор (свёртка).

n При нисходящем разборе синтаксическое дерево строится от корня к листьям.

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

n В простых случаях синтаксический анализатор Классификация языков по Хомскому (распознаватель) пробует достигнуть этого оковём направленного перебора разных вариантов.

n Распознаватель рассматривает дерево сверху вниз и слева вправо и выбирает 1-ый нетерминальный знак, не имеющий подчиненных узлов (являющийся “листом”).

n В перечне правил подстановки отыскивается правило (либо набор правил), которое в левой части содержит этот нетерминальный Классификация языков по Хомскому знак, а в правой части (в правых частях) – очередные (считая слева вправо) знаки анализируемого предложения.

n Если такое правило есть, дерево нарастает и описанный процесс повторяется. Если правило не найдено, распознаватель ворачивается на один либо пару шажков вспять, пытаясь поменять выбор изготовленный ранее.

n Процесс разбора завершается в одном Классификация языков по Хомскому из 2-ух случаях:

n выстроено дерево, все листья которого являются терминальными знаками, и при чтении слева вправо образуют анализируемое предложение. В данном случае итог определения положителен, другими словами синтаксис рассматриваемого предложения соответствует грамматике языка;

n распознаватель переработал все вероятные варианты последовательностей подстановок, но так и не пришёл к дереву, описанному в 1.

n Классификация языков по Хомскому Это значит, что анализируемое предложение не принадлежит данному языку (другими словами содержит ошибки).

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

Пример. Провести нисходящий синтаксический разбор числа +2.4 по грамматике

1) <константа> ::= <КФТ> | <символ> <КФТ>

2) <КФТ> ::= .<целое> | <целое>. | <целое>.<целое>

3) <целое> ::= <цифра> | <цифра> <целое>

4) <символ> ::= + | –

5) <цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

n Процесс разбора покажем в виде последовательности шагов, на каждом из которых Классификация языков по Хомскому строится какая-то часть дерева.

n Шаг 1. Нетерминальный знак <константа>– корень дерева.

n Шаг 2. Так как выражение 1) не содержит в правой части терминальных знаков, избираем первую слева цепочку знаков:

n <константа> ::= <КФТ>.

n Получаем

Шаг 3. В правиле 2) 1-ая цепочка начинается с терминального знака “.”, а потому что 1-ый знак анализируемого предложения – “+”, эта Классификация языков по Хомскому цепочка не подходит. Избираем последующую

¨ Шаг 4. В правиле 3) избираем первую цепочку :

¨ Шаг5. Для определения нетерминального знака по правилу 5) есть 10 терминальных знаков, но ни какой-то из них не совпадает с “+”.

¨ Потому осуществляем возврат на один шаг вспять и, опять пользуясь правилом 3), получаем:

¨ Шаг6. Из 2-ух веток Классификация языков по Хомскому дерева избираем, согласно методу, левую и опять пытаемся применить правило 5).

¨ Потому что нереально, возвращаемся вспять к дереву, приобретенному на шаге 2 (так как пробы внедрения правила 3) исчерпаны.

¨ В правиле 2) избираем цепочку .. Получаем:

На этом пути мы, разумеется, создадим ещё 2 шага, до того как убедимся в его ложности.

Шаг9. Ворачивается Классификация языков по Хомскому к правилу 1) и избираем для подстановки вторую цепочку <символ><КФТ>

¨ Шаг10. Применяем правило 4) к нетерминальному символу . Получаем.

n Приобретенный терминальный знак совпадает с первым эмблемой анализируемого предложения, как следует, ветвь приобретенного дерева правильна.

n Дальше пытаемся получить последующий знак –“2”.

n Шаг 11. Раскрываем нетерминальный знак по правилу 2), при всем этом Классификация языков по Хомскому избираем вторую цепочку, потому что в первой знак “.” не совпадает с эмблемой “2”.

¨ Шаги 12, 13. Применяем правила 3) и 5).

n Получили сходу два терминальных знака анализируемого предложения “2” и “.”. Но дерево уже выстроено, потому что все листья являются терминальными знаками. Если б все варианты подстановок были уже испытаны, можно было бы прийти Классификация языков по Хомскому к выводу, что в предложении +2.4 допущена ошибка. Так как это не так, делаем два шага вспять, ворачиваясь к дереву, приобретенному на Шаге 11.

n Шаг 14. Опять применяем правило 3), но его вторую цепочку.

Разумеется, что на этом пути мы создадим ещё 3 шага, до того как зайдём в тупик.

Пропускаем эти Классификация языков по Хомскому три шага и возвращаемся, в конце концов, к дереву, приобретенному на шаге 10.

¨ Шаг 18. Применяем к символу на этом дереве правило 2) (третью цепочку).

¨ Шаги 19, 20, 21, 22.

¨ Раскрываем поочередно левый и правый знаки

Листья этого дерева (слева вправо) образуют начальное предложение +2.4, как следует оно соответствует данной грамматике, т.е. не содержит ошибок.

Всегда Классификация языков по Хомскому следует иметь ввиду, что только обязательное, четкое следование методу нисходящего разбора позволяет гарантировать корректность разбора, в особенности для сложных грамматик. Пробы пропустить пару шажков как тривиальные либо сделать их “в уме” нередко приводят к ошибкам.

n Примечание. Описанный метод нисходящего разбора неприменим, если грамматика является леворекурсивной, другими Классификация языков по Хомскому словами содержит правила подстановки вида

U ::= Uu,

так как при всем этом пробы раскрыть самый левый нетерминальный знак приведут к нескончаемому порождению нетерминального знака U. В таком случае нужно изменить метод, сделав его, к примеру, правосторонним, либо поменять грамматику.

1.4.2. Синтаксический анализ конструкций языков программирования

n В методе нисходящего разбора не Классификация языков по Хомскому непременно строить дерево. На каждом шаге можно записывать цепочку нетерминальных и терминальных знаков, приобретенных после очередной подстановки.

n При восходящем разборе дерево строится от листьев к корню, другими словами метод, отправляясь от данной строчки, пробует, применяя правила подстановки справа влево, привести её к исходному символу грамматики.

n Часть строчки Классификация языков по Хомскому, которую можно привести к не терминальному символу, именуется фразой.

n Если приведение осуществляется применением 1-го правила подстановки, фраза именуется конкретно приводимой.

n Самая левая конкретно приводимая фраза именуется основой.

n Метод восходящего разбора

В начальном предложении отыскивается база (другими словами просмотр, как и в нисходящем разборе, идет слева вправо) и приводится к Классификация языков по Хомскому нетерминальному символу.

n Эта операция применяется до того времени, пока или получен единственный знак, являющийся исходным эмблемой грамматики (в данном случае разбор завершается удачно), или в приобретенной цепочке не может быть найдена фраза.

n В данном случае делается возврат на один либо пару шажков вспять и выбирается другая база Классификация языков по Хомскому.

n Если все вероятные варианты перебраны, а корень дерева так и не получен, делается вывод о наличии ошибки в разбираемом предложении, и метод прекращает работу.

n Таким макаром, восходящий разбор представляет собой перебор вариантов, но не целенаправленный, потому что нет способности отбрасывать заранее некорректные подстановки, как это Классификация языков по Хомскому имеет место в нисходящем разборе (цепочка “.” в правиле 2), неподходящие числа в правиле 5) в прошлом примере.

n Процесс восходящего разбора записывают или в виде построения дерева от листьев к корню, или в виде последовательности цепочек терминальных и нетерминальных знаков, начинающейся с анализируемого предложения, заканчивающейся (если предложение не содержит ошибок) исходным Классификация языков по Хомскому эмблемой грамматики.

n Пример. Провести восходящий синтаксический разбор выражения 5*I+J по грамматике

n 1) ::= | + | – | + | –

n 2) ::= | | *

n 3) ::= |

n 4) ::= I | J | K | L | M | N

n 5) ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

n Разбор представим в виде последовательности шагов, на каждом из которых будет получена цепочка знаков, конкретно приводимые фразы будем подчёркивать. Справа в скобках указаны номера правил, по которым Классификация языков по Хомскому произведена подстановка.

n Шаг 1. Начальное предложение.

n Шаг 2. *I+J 5)

n Шаг 3. *I+J 3)

n Шаг 4. *I+J 2)

n Шаг 5. *I+J 1)

n Шаг 6. *+J 4)

n Шаг 7.*+J 2)

n Шаг 8. *+J 1)

n Шаг9.*+ 4)

n Шаг10. *

n + 2)

n Шаг11.*+

n 1)

n В приобретенной цепочке нет фразы. Поменять выбор конкретно приводимой Классификация языков по Хомскому фразы можно, возвратившись к цепочке, приобретенной на шаге 7:

n *+J.

n Шаг 12. *+

n 4)

n Шаг 13. * 1)

n В приобретенной цепочке нет фразы.

n Возвращаемся к шагу 12 *+.

n Шаг 14. выражение>*+

n 2)

n Шаг 15. *+

n 1)

n Получили ту же цепочку, что и на шаге 10. Возвращаемся к шагу 14, создадим один неверный шаг, потом к Классификация языков по Хомскому шагу 6: *+J.

n Шаг 17. *+ 4)

n Шаг 18. *+

n 2)

n Возвращаемся к шагу 17.

n Шаг 19. *+

n 2)

n Шаг 21. *I+ 4)

n Возвращаемся к шагу 4: *I+J

n Шаг 25. *+J 4)

n Дальше проделаем ещё 18 неверных шагов, после этого вернёмся к шагу 3: *I+J.

n Шаг 44. *+J 4)

n Шаг 45. +J 2)

n Шаг 46. +J 1)

n …

Шаг 49. + 1)

Возвращаемся Классификация языков по Хомскому к шагу 45.

Шаг 50. + 4)

Шаг 51.

n Основным недочетом как нисходящего, так и восходящего алгоритмов разбора является огромное количество шагов, что определяется переборным нравом алгоритмов.


2. Требования к выполнению работы

Задана конструкция языка программирования. Нужно:

· создать порождающую грамматику. Для описания правил подстановки использовать:

· Формы Бэкуса-Наура (нечетные варианты);

· Измененные формы Бэкуса-Наура Классификация языков по Хомскому (четные варианты);

· При помощи разработанной порождающей грамматики выполнить вывод конструкций для фрагментов программки, представляющих данные конструкции.

· Выполнить синтаксический анализ данных конструкций, используя метод:

· Нисходящего разбора (нечетные варианты);

· Восходящего разбора (четные варианты);.

Примечание:

1. Куски программ, состоящие из вариантов использования данных конструкций языка придумать без помощи других. Как минимум по Классификация языков по Хомскому одному куску для корректного использования конструкции и с ошибкой.

2. Неформальное описание данных конструкций языка отыскать без помощи других.


3. Варианты заданий

Группа а

1. Директивы препроцессора.

2. Описание функций в языке С.

3. Определение констант в языке Паскаль.

4. Описание переменных в языке Бейсик.

5. Инициализация строковых значений языке С.

6. Логические выражения языке С.

7. Вывод строк языке С Классификация языков по Хомскому.

8. Описание переменных в языке Паскаль.

9. Ввод с клавиатуры в языке Паскаль.

10. Условный оператор в языке С.

11. Оператор цикла FOR Паскаль.

12. Оператор-переключатель в языке Бейсик.

13. Операторы цикла с пост- и предусловием в языке С.

14. Описание структур в языке Паскаль.

15. Описание пользовательских типов в языке С.

16. Описание функции Классификация языков по Хомскому main в языке С.

17. Функции работы с динамической памятью в языке Паскаль.

18. Функции работы с файлами в языке Бейсик.

19. Описание и вызов функций, аргументом которых является одномерный массив, в языке С.

20. Функции управления цветом и заливкой в графическом режиме (язык С).

21. Описание класса в языке С++.

22. Описание переменных в Классификация языков по Хомскому языке С.

23. Определение констант в языке Бейсик.

Группа б

1. Функции вывода графических фигур (язык С).

2. Описание производного класса в языке С++.

3. Описание переменных в языке Паскаль.

4. Описание функций и процедур в языке Бейсик.

5. Инициализация массивов в языке С.

6. Арифметические выражения языке С.

7. Вывод на экран в языке С++.

8. Вывод строк языке С.

9. Условный Классификация языков по Хомскому оператор в языке Паскаль.

10. Оператор цикла FOR в языке С.

11. Инициализация строковых значений языке С.

12. Оператор-переключатель в языке Паскаль.

13. Операторы цикла с пост- и предусловием в языке Бейсик.

14. Описание структур в языке С.

15. Описание пользовательских типов в Паскаль.

16. Функции работы с динамической памятью в языке Классификация языков по Хомскому С.

17. Функции работы с файлами в языке Паскаль.

18. Описание и вызов функций, аргументом которых является двумерный массив, в языке С.

19. Функции обработки нажатия кнопок в языке С.

20. Перегрузка операций в языке С++.

21. Определение констант в языке С.

22. Описание функций и процедур в языке Паскаль.

23. Логические выражения языке С.

Группа Классификация языков по Хомскому в

1. Вывод на экран в языке С.

2. Ввод с клавиатуры в языке С++.

3. Условный оператор в языке Бейсик.

4. Функции управления курсором и оконным выводом в текстовом режиме (язык С).

5. Оператор-переключатель в языке Паскаль.

6. Описание и вызов функций, аргументом которых является одномерный массив, в языке С.

7. Операторы цикла с пост Классификация языков по Хомскому- и предусловием в языке Паскаль.

8. Операторы для использования динамической памяти в языке С++.

9. Функции работы с файлами в языке С.

10. Оператор цикла FOR в языке С.

11. Функции управления курсором и оконным выводом в текстовом режиме (язык С).

12. Вывод на экран в языке Паскаль.

13. Описание пользовательских типов в языке С.

14. Оператор-переключатель в Классификация языков по Хомскому языке С.

15. Определение динамических массивов в языке Бейсик.

16. Ввод с клавиатуры в языке С.

17. Вывод на экран в языке Паскаль.

18. Оператор цикла FOR Бейсик.

19. Описание пользовательских типов в Паскаль.

20. Оператор-переключатель в языке Бэйсик.


klassifikaciya-stroenie-i-funkcii-nejronov-nejrogliya.html
klassifikaciya-stroitelnih-materialov-shpargalka.html
klassifikaciya-struktura-dinamika-konflikta.html