- Главная
- Информатика
- Формы Бэкуса-Наура
Содержание
- 2. Термины: Терминалы – это то, из чего состоит язык. Например, человеческий язык состоит из предложений, предложения
- 4. Более сложные варианты. Некоторые конструкции (в правой части строки), взятые в квадратные скобки ([ … ]),
- 5. Рассмотрим примеры: 1) Дадим определение идентификатору с помощью БНФ: ::= A|B|C|…|Z ::= 0|1| … |9 ::=
- 6. 2) Грамматика целых чисел без знака: ::= | ::= 0|1|2|…|9 Обратим внимание, что терминал «число» встречается
- 7. 4) Формула с плюсами, минусами и скобками. ::= | ::= |( ) ::= +|- Во второй
- 8. 6) Формула с плюсами и минусами, с умножением и делением без скобок, а также с унарным
- 9. 8) Добавляем функции (встроенные) одного переменного (например sin и cos). := { } := { }
- 11. Скачать презентацию
Слайд 2Термины:
Терминалы – это то, из чего состоит язык. Например, человеческий язык состоит
Термины:
Терминалы – это то, из чего состоит язык. Например, человеческий язык состоит

Нетерминал или нетерминальный символ — объект, обозначающий какую-либо сущность языка (например: формула, арифметическое выражение, команда) и не имеющий конкретного символьного значения.
Например, символы < и > обрамляют некоторые терминалы, знак |разделяет несколько альтернативных терминалов.
Текст может быть правильным (то-есть составленным по правилам этой грамматики) или неправильным. И основная задача теории – определить, правильный или неправильный этот текст. Правила «кодируются» с помощью своеобразных конструкций – форм Бэкуса-Наура.
Слайд 4Более сложные варианты.
Некоторые конструкции (в правой части строки), взятые в квадратные скобки
Более сложные варианты.
Некоторые конструкции (в правой части строки), взятые в квадратные скобки

([ … ]),
означают, что конструкция может отсутствовать (то-есть или присутствует один раз, или отсутствует). А если без таких скобок – значит присутствует строго один раз.
Фигурные скобки
({ … })
означают, что «обрамленная» ими конструкция повторяется некоторое (возможно нулевое) количество раз.
{/ … /}
означает, что повторение 1 или большее количество раз (то-есть ненулевое количество).
В некоторых случаях символы для нетерминалов < и > опускают.
Слайд 5Рассмотрим примеры:
1) Дадим определение идентификатору с помощью БНФ:
<Буква> ::= A|B|C|…|Z
<Цифра> ::= 0|1|
Рассмотрим примеры:
1) Дадим определение идентификатору с помощью БНФ:
<Буква> ::= A|B|C|…|Z
<Цифра> ::= 0|1|

<Идентификатор> ::= <Буква> {<Буква>|<Цифра>}
Помните? Идентификатор начинается обязательно с буквы, а дальше идет некоторое количество букв или цифр (в принятых обозначениях A, B, A1, B2C3)
Всегда есть «самый главный» терминал (и, соответственно, главная строка, в левой части которой он находится), соответствующий тому объекту, который мы исследуем. В данном случае самый главный терминал – это «Идентификатор».
Слайд 62) Грамматика целых чисел без знака:
<число> ::= <цифра>|<цифра><число>
<цифра> ::= 0|1|2|…|9
Обратим внимание, что
2) Грамматика целых чисел без знака:
<число> ::= <цифра>|<цифра><число>
<цифра> ::= 0|1|2|…|9
Обратим внимание, что

3) Формула с плюсами и минусами без скобок.
<формула> ::= <число>|<формула><знак><число>
<знак> ::= +|- (может быть и так: <знак> ::= +|-|*|/)
Другая форма записи
<формула> ::= <слаг> {
<слаг> ::= <число>
А если и числа, и переменные, то:
<формула> ::= <слаг> {
<слаг> ::= <число>|<переменная>
Слайд 74) Формула с плюсами, минусами и скобками.
<формула> ::= |<формула><знак><число>
::= <число>|(<формула>)
<знак> ::=
4) Формула с плюсами, минусами и скобками.
<формула> ::=
<знак> ::=

Во второй строке появились скобки. «оp» – это промежуточный терминал, введенный для удобства.
5) Формула с плюсами и минусами, а также с умножением и делением без скобок. Входят в формулу не только числа, но и переменные.
<формула> ::= <слаг> {
<слаг> ::= <множ>{
<множ> ::= <число>|<переменная>
Т.е., самые крупные блоки, которые мы выделяем из строки с формулой – это слагаемые. Этим определяется самый низший приоритет операций сложения-вычитания. Отметим, что левое слагаемое не состоит из вложенных слагаемых, в отличие от правого.
Слайд 86) Формула с плюсами и минусами, с умножением и делением без скобок,
6) Формула с плюсами и минусами, с умножением и делением без скобок,

<формула> ::= <слаг> {
<слаг> ::= <множ_со_знаком>{
<множ_со_знаком> ::= [
<множ> ::= <число>|<переменная>
7) Формула с плюсами и минусами, умножением и делением и со скобками.
<формула> ::= <слаг> {
<слаг> ::= <множ>{
<множ> ::= <число>|<переменная>|(<формула>)
Слайд 9 8) Добавляем функции (встроенные) одного переменного (например sin и cos).
<формула> :=
8) Добавляем функции (встроенные) одного переменного (например sin и cos).
<формула> :=

<слаг> := <множ>{
<множ> := <число>|<переменная>|(<формула>)|