воскресенье, 19 мая 2019 г.

Спецификация Go: лексические элементы

Комментарии

Комментарии служат программной документацией. Есть две формы комментариев в Go:

  • Строчные комментарии (Line comments) начинаются с последовательности символов // и заканчиваются в конце строки.

  • Общие комментарии (General comments) начинаются с последовательности символов /* и заканчиваются первой встреченной следом последовательностью символов */.

Комментарий не может начинаться внутри рунного или строкового литерала или внутри комментария. Общий комментарий (/* */), не содержащий новых строк, действует как пробел. Любой другой комментарий действует как перевод строки.

Токены (Tokens)

Токены образуют словарь языка Go. Существует четыре класса токенов: идентификаторы (identifier), ключевые слова (keyword), операторы (operator) и знаки препинания (punctuation), литералы (literal). Пустое место, образованное из пробелов (U+0020), горизонтальных табуляций (U+0009), возвратов каретки (U+000D) и символа перевода строки (newline) (U+000A), игнорируется, за исключением того, что оно разделяет токены, которые в противном случае объединялись бы в один токен. Кроме того, новая строка (newline) или конец файла может инициировать вставку точки с запятой. Во время разделения входных данных на токены, следующим отдельным токеном считается самая длинная последовательность символов, которые образуют валидный токен.

Точки с запятой

Формальная грамматика использует точки с запятой ";" как терминаторы в ряде производств. Go программы могут опустить большинство этих точек с запятой, используя следующие два правила:

  1. Когда входные данные разбиты на токены, точка с запятой автоматически вставляется в поток токенов сразу после последнего токена строки, если этот токен
    • идентификатор
    • целое число (integer), число с плавающей точкой (floating-point), мнимый (imaginary), рунический (rune) или строковый (string) литерал
    • одно из ключевых слов: break, continue, fallthrough, или return
    • один из операторов и знаков препинания ++, -, ), ] или }
  2. Чтобы разрешить сложным операторам занимать одну строку, точка с запятой может быть опущена перед закрывающими ")" или "}".

Идентификаторы

Идентификаторы именуют объекты программы, такие как переменные и типы. Идентификатор представляет собой последовательность из одной или нескольких букв и цифр. Первый символ в идентификаторе должен быть буквой.

identifier = letter { letter | unicode_digit } .

a
_x9
ThisVariableIsExported
αβ

Некоторые идентификаторы предопределены.

Ключевые слова

Следующие ключевые слова зарезервированы и не могут быть использованы в качестве идентификаторов:

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

Операторы и знаки пунктуации

Следующие последовательности символов представляют операторы (включая операторы присвоения) и знаки пунктуации:

+    &     +=    &=     &&    ==    !=    (    )
-    |     -=    |=     ||    <     <=    [    ]
*    ^     *=    ^=     <-    >     >=    {    }
/    <<    /=    <<=    ++    =     :=    ,    ;
%    >>    %=    >>=    --    !     ...   .    :
     &^          &^=


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


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

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