Формальна граматика мови¶
Граматика описана у розширеній БНФ:
Програма :: = {СтрокаПрограмми}
СтрокаПрограмми :: = (Операція ";") | (КеруючаКонстр ":") | ОголошенняФункції
Операція :: = Присвоєння | Друк | Введення | (КінецьГалуження)
| (КінецьWhile) | (ПоверненняЗначення | КінецьФункції)
КеруючаКонстр :: = (Галуження | ГалуженняІнакше) | (ЦиклWhile)
Число :: = ["+" | "-"] НатЧісло
НатЧисло :: = Цифра {Цифра}
Цифра :: = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
Ідентифікатор :: = Буква {Буква | Цифра}
Змінна :: = Ідентифікатор
ВизовФункції :: = Ідентифікатор "(" {[Вираз [","]]} ")"
Присвоєння :: = Ідентифікатор "=" Вираз
Вираз :: = (Змінна | Число) | ВизовФункціі | Вираз МатОперація Вираз |
"+" | "-" Вираз | "(" Вираз ")"
МатОперація :: = "+" | "-" | "*" | "/" | "%"
Друк :: = "print" (Рядок | Змінна)
Введення :: = "read" Змінна
Рядок :: = "" {.} ""
Галуження :: = "if" Вираз
ГалуженняІнакше :: = "else"
КінецьГалуження :: = "endif"
ЦиклWhile :: = "while" Вираз
КінецьWhile :: = "endwhile"
ОголошенняФункції :: = "function" Ідентифікатор "(" [{Параметр [","]}] ")"
Параметр :: = Змінна
ПоверненняЗначення :: = "return" Змінна
КінецьФункції :: = "endfunc"