пятница, 19 апреля 2019 г.

Спецификация Go: введение, нотация

В серии постов Спецификация 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.


Читайте также:


Комментариев нет:

Отправить комментарий