О справочнике языка
Прочитайте обозначения, используемые формальной грамматикой.
Эта часть книги описывает формальную грамматику языка программирования Swift. Грамматика, описанная здесь, предназначена для более глубокого понимания языка, а не для непосредственной реализации парсера или компилятора.
Язык Swift относительно небольшой, поскольку многие распространённые типы, функции и операторы, которые встречаются практически во всём коде Swift, на самом деле определены в стандартной библиотеке Swift. Хотя эти типы, функции и операторы не являются частью самого языка Swift, они широко используются в обсуждениях и примерах кода в этой части книги.
Как читать грамматику
Обозначения, используемые для описания формальной грамматики языка программирования Swift, следуют нескольким соглашениям:
- Стрелка (→) используется для обозначения грамматических правил и может читаться как «может состоять из».
- Синтаксические категории обозначены курсивом и появляются с обеих сторон правила грамматики.
- Буквальные слова и знаки препинания обозначены
boldface constant widthи появляются только в правой части правила грамматики. - Альтернативные грамматические правила разделяются вертикальной чертой (|). Когда альтернативные правила слишком длинные для удобного чтения, они разбиваются на несколько правил грамматики на новых строках.
- В некоторых случаях обычный шрифт используется для описания правой части правила грамматики.
- Необязательные синтаксические категории и литералы отмечаются заключительным вопросительным знаком, ?.
В качестве примера, грамматика блока getter-setter определена следующим образом:
Грамматика блока getter-setter:
getter-setter-block →
{getter-clause setter-clause_?_}|{setter-clause getter-clause}
Это определение указывает, что блок getter-setter может состоять из предложения getter, за которым следует необязательное предложение setter, заключённое в фигурные скобки, или предложения setter, за которым следует предложение getter, заключённое в фигурные скобки. Приведённое выше грамматическое правило эквивалентно следующим двум правилам, где альтернативы указаны явно:
Грамматика блока getter-setter:
getter-setter-block →
{getter-clause setter-clause_?_}
getter-setter-block →{setter-clause getter-clause}
This source file is part of the Swift.org open source project
Copyright © 2014 - 2025 Apple Inc. and the Swift project authors
Licensed under Apache License v2.0 with Runtime Library Exception