О ссылке языка
Эта часть книги описывает формальную грамматику языка программирования Swift. Грамматика, описанная здесь, предназначается, чтобы помочь Вам понять язык более подробно, вместо того, чтобы позволить Вам непосредственно реализовывать синтаксический анализатор или компилятор.
Язык Swift является относительно маленьким, потому что много общих типов, функций и операторов, появляющихся фактически везде в Коде SWIFT, фактически определяются в библиотеке стандарта Swift. Несмотря на то, что эти типы, функции и операторы не являются частью самого языка Swift, они используются экстенсивно в обсуждениях и примерах кода в этой части книги.
Как считать грамматику
Нотация, используемая для описания формальной грамматики языка программирования Swift, следует нескольким соглашениям:
Стрелка (→) используется для маркировки производства грамматики и может быть считана, поскольку “может состоять из”.
Синтаксические категории обозначены курсивным текстом и появляются с обеих сторон порождающего правила грамматики.
Литеральные слова и пунктуация обозначены полужирным шрифтом
constant width
текст и появляется только на правой стороне порождающего правила грамматики.Альтернативное производство грамматики разделяется вертикальными панелями (|). Когда альтернативное производство является слишком длинным для чтения легко, они повреждаются в многократные порождающие правила грамматики на новых строках.
В нескольких случаях регулярный текст шрифта используется для описания правой стороны порождающего правила грамматики.
Дополнительные синтаксические категории и литералы отмечены запаздывающим нижним индексом, выбирают.
Как пример, грамматика блока метода set метода get определяется следующим образом:
Грамматика блока метода set метода get
блок метода set метода get
→
{
«пункт метода set пункта метода get выбирает»}
{
«пункт метода get пункта метода set»}
Это определение указывает, что блок метода set метода get может состоять из пункта метода get, сопровождаемого дополнительным пунктом метода set, включенным в фигурные скобки или пункт метода set, сопровождаемый пунктом метода get, включенным в фигурные скобки. Производство грамматики выше эквивалентно следующим двум производству, где альтернативы разъяснены явно:
Грамматика блока метода set метода get
блок метода set метода get
→ {
«пункт метода set пункта метода get выбирает»}
блок метода set метода get
→ {
«пункт метода get пункта метода set»}