2.1Лексемы



Лексемами являются: переменные, символы и ключевые слова, целые числовые литералы, вещественные числовые литералы, сегменты строк, ограничители. В ходе сканирования текста происходит преобразование информации, поэтому в определении языка различаются собственно «лексемы», воспринимаемые лексическим анализатором, и «значения лексем», которые обрабатывает синтаксический анализатор.












2.1.1Переменные



Переменная — это имя, начинающееся с большой буквы или символа подчёркивания «_».

переменная =
большая_буква [ [ "_" ] буквы_и_цифры ] | "_" [ буквы_и_цифры ]

Маленькие буквы в составе переменной заменяются соответствующими большими буквами, при этом все остальные графемы остаются без изменений. Полученная последовательность графем считается значением лексемы. Переменная «_» называется «анонимной». Считается, что все анонимные переменные являются некоторыми уникальными, однократно использованными именами.



Пример.
Правильно построенные переменные: Al, _, AbC_Ef_H7, _7, Variable, _X_123


2.1.2Символы и ключевые слова



Символ — это имя, начинающееся с маленькой буквы или заключённое в апострофы. Различаются простые символы и символы в апострофах:

символ = простой_символ | символ_в_апострофах

простой_символ =

маленькая_буква [ [ "_" ] буквы_и_цифры ]

символ_в_апострофах = ' { графема }

Большие буквы в составе символа заменяются соответствующими маленькими буквами, при этом все остальные графемы остаются без изменений. Полученная последовательность графем считается значением символа. Апострофы, в которые может быть заключён символ, не являются составными частями его значения. Если апострофы не используются, значение символа не должно совпадать с ключевыми словами языка.
Ключевыми словами являются следующие имена:

  • as
  • class
  • import
  • from
  • package
  • project
  • protecting
  • specializing
  • suspending
  • под_именем
  • класс
  • импортировать
  • из
  • пакет
  • проект
  • защищающий
  • специализирующий
  • отключающий


  • Для написания ключевых слов языка используются только маленькие буквы. Значениями ключевых слов считаются соответствующие цепочки графем.



    Пример.
    Правильно построенные символы: symbol, 'ALPHA', abc_EF_h, ", s4734




    2.1.3Числовые литералы



    Числовой литерал — это лексема, обозначающая числовое значение:

    числовой_литерал =
    расширенное_число [ порядок ] |
    цифры "#" расширенное_число "#" [ порядок ]
    графема
    расширенное_число =
    буквы_и_цифры [ "." буквы_и_цифры ]

    Числовые литералы бывают целые и вещественные (плавающие) — значениями таких литералов являются, соответственно, (беззнаковые) целые и вещественные числа.

    По умолчанию основание числового литерала равно 10. Основание и порядок числовых литералов всегда записываются в десятичной системе. В качестве (расширенных) цифр от 10 до 35 используются латинские буквы от «А» до «Z» (от «а» до «z») соответственно. Значение каждой (расширенной) цифры литерала с основанием должно быть меньше основания.

    Числовые литералы, содержащие точку, обозначают вещественные числа. В языке не гарантируется точное представление вещественных чисел, количество значащих цифр которых превышает значение, соответствующее максимальной относительной погрешности D, определяемой конкретной реализацией языка. В качестве значений таких числовых литералов принимаются некоторые близкие числа, отличающиеся от них на величину, не превышающую D.

    Если в качестве числового литерала используется последовательность графема, его значением является числовой код заданного графического символа (целое число) в кодировке, определяемой конкретной реализацией языка. Использование пробела, так же как и управляющих символов в определении числового литерала не допускается (считается синтаксической ошибкой).

    цифры = [ цифры [ "_" ] ] цифра

    Символы подчёркивания между соседними цифрами и буквами числового литерала не влияют на его значение.

    порядок = буква_е [ "+" | "—" ] цифры
    буква_е = "Е" | "е"


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

    Пример.
    Правильно построенные числовые литералы:
    13_274, 2#1100_0100#Е4, 39.123еЮ0, 8#177_777#,
    3.217_514е+90, 16#EF93#, 'у. 8#3.51#Е—31




    2.1.4Сегменты строк



    Сегмент строки — это лексема, обозначающая цепочку графических и управляющих символов:

    сегмент_строки = '"' { графема | "\" код } '"'

    В ходе сканирования сегмента строки конструкции вида «\» код (где код — некоторая буква или числовой литерал) заменяются соответствующими графическими и управляющими символами.

    КОД= "b" | "t" | "n" | "v" | "f" | "r" числовой литерал

    Буквенные коды соответствуют управляющим символам:

    b — возврат на одну позицию; t — горизонтальная табуляция; г — возврат каретки;
    n — перевод строки; v — вертикальная табуляция; f — перевод формата;


    В качестве кода в сегменте строки не допускается (считается синтаксической ошибкой) использование вещественных числовых литералов, а также числовых литералов, значения которых лежат за пределами некоторого интервала, определяемого конкретной реализацией языка. В случае если графический символ, следующий после «\», не является кодом, переключатель «\» игнорируется, а обнаруженный за ним графический символ включается в сегмент строки без дальнейшего анализа. Полученная таким образом последовательность графических и управляющих символов, не считая кавычек, в которые заключён сегмент строки, является значением сегмента строки.

    Пример.
    Правильно построенные сегменты строк:
    "String \"XYZ\"\n", "", "c:\\dos\\*.*"




    2.1.5Огранечители



    Ограничитель — это последовательность из одного или нескольких специальных символов, используемая в синтаксических конструкциях языка. В языке используются:

    1.простые ограничители

    !#()* + ,-./:;< = >?[]{|}

    2.составные ограничители

    :- << <- ?? == := О <= >=

    Значениями ограничителей считаются соответствующие цепочки графем.



    Содержание