В серии постов Спецификация Go будет последовательно представлена вся спецификация языка программирования Go.
Go - это язык общего назначения, разработанный с учетом системного программирования. Он строго типизирован и собирает мусор и имеет явную поддержку конкуррентного (concurrent) программирования. Программы построены из пакетов, свойства которых позволяют эффективно управлять зависимостями.
Грамматика компактна и регулярна, что позволяет легко анализировать ее с помощью автоматических инструментов, таких как интегрированные среды разработки.
Нотация
Синтаксис определен с использованием Расширенной формы Бэкуса — Наура (расширенная Бэкус — Наурова форма (РБНФ)) (Extended Backus–Naur Form (EBNF)).
Production = production_name "=" [ Expression ] "." .
Expression = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term = production_name | token [ "…" token ] | Group | Option | Repetition .
Group = "(" Expression ")" .
Option = "[" Expression "]" .
Repetition = "{" Expression "}" .
Productions это выражения(expressions) сконструированные из терминов(terms) и следующих за ними операторов(operators), в восходящей последовательности:
| чередование (alternation)
() группировка (grouping)
[] опция (option) (0 или 1 раз)
{} повторение (repetition) (от 0 до n раз)
production имена (production_name) в нижнем регистре использоуются для определения лексических токенов (lexical tokens). Non-terminals (нетерминалы) используются в CamelCase. Лексические токены обернуты в двойные кавычки "" или в обратные кавычки ``.
Форма a … b представляет набор символов от a до b как чередования. Горизонтальный эллипсис … также используется в спецификации для неформального обозначения различных перечислений (enumerations) или отрезков кода, которые не уточняются. Символ … (как противоположность трем символам точек ...) не является токеном в языке Go.
Читайте также:
Комментариев нет:
Отправить комментарий