3.1. Синтаксис алгоритмических языков в форме Бэкуса-Науэра

  В рамках дисциплины ТА, рассматривались метасимволы и метаформулы Бэкуса-Науэра. Вспомним основные обозначения (в расширенном варианте)
<> - понятия
{} – скобки для изменения приоритетов
* - полное ТЗ
+ - полное ТЗ
[] – необязательный элемент
| - или

Опишем синтаксис нашего языка:

<программа>:-{<оператор>;}*[оператор]
<оператор>:-<составной оператор>|<простой оператор>
<составной оператор>:-{<программа>}
<простой оператор>:-<присваивание>| <ввод>| <вывод>| <условный оператор>| <цикл c предусловием> |<заголовок функции>| <возврат из функции>| <останов>
<присваивание>:-<переменная>:=<выражение>
<ввод>:-INPUT <переменная>
<вывод>:-OUTPUT <выражение>
<условный оператор>:-IF <выражение> THEN <оператор> [ELSE <оператор>]
<цикл с предусловием>:-WHILE <выражение> DO <оператор>
<заголовок функции>:-FUNC <имя функции> (<имя переменной>)
<возврат из функции>:-RET <выражение>
<останов>:-HALT
<выражение>:-<операнд>| (<выражение>) | <выражение><операция><выражение>
<операнд>:-<переменная>| <константа>| <вызов функции>
<операция>:- +| -| *| /| \| <| >| <=|>=| =| !=
<переменная>:- <имя переменной>| <имя переменной>[<выражение>]
<вызов функции>:- <имя функции>(<выражение>)

Замеч. Лишние пробелы, комментарии, переводы строки и т.д. удалены на этапе лексического анализа.