Лексическая структура языка программирования Java

Как и любой язык программирования Java определяется:
  • грамматическими правилами (grammar rules), которые указывают как строить синтаксически верные конструкции из элементов языка;
  • семантическим определением (semantic definition), которое указывает на значение синтаксически верных конструкций.

Лексемы

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

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

Имя в программе называется идентификатором. Идентификаторы используются для обозначения классов, методов, переменных, меток. В Java идентификаторы являются последовательностями символов в которых каждый символ является или буквой (A-Z и a-z) или цифрой (0-9). Однако первый символ в идентификаторе всегда должен быть буквой.

Java программы пишутся в Unicode, поэтому в именах идентификаторов также допустимы символы из этого символьного набора. Также допустимы connecting punctuation character (такой как символ подчеркивания _) и символы валюты (такие как $, ¢, ¥, или £). Но использовать эти символы нужно с умом.

В Java идентификаторы регистрозависимы (case sensitive), поэтому price и Price - это два различных идентификатора. 

Примеры верных идентификаторов:
number, Number, sum_$, bingo, $$_100, _007, mål, grüß

Примеры неверных идентификаторов:
48chevy, all@hands, grand-sum

Символ подчеркивания в идентификаторах считается за букву.  Например, идентификаторы _XXL и _XXL_ являются различными.

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

Ключевые слова являются зарезервированными и предопределенными в языке и не могут быть использованы для обозначения других сущностей. Все ключевые слова в Java находятся в нижнем регистре символов. В дополнение 3 идентификатора зарезервированы как предопределенные литералы в языке: ссылка null и булевы литералы true и false. Зарезервированные слова не могут быть использованы в качестве идентификаторов.


Разделители

Разделители (или пунктуаторы) это лексемы приобретающие значение в зависимости от контекста в котором они используются. Они помогают компилятору выполнять синтаксический и семантический анализ программы. В зависимости от контекста квадратные скобки, круглые скобки, и оператор точка могут интерпретироваться как операторы.


Литералы

Литералы обозначают константные значения. Другими словами значение, которое представляет собой литерал остается неизменным в программе. Литералы представляют численные (целые или с плавающей точкой), символьные, булевы и строковые значения. В дополнение литерал null представляет несуществующую ссылку.


Whitespace

Whitespace (дословно свободное пространство) - это последовательность пробелов (spaces), отступов (tabs), form feeds, символов терминаторов строк (line terminator characters) в исходном коде Java. Терминаторы строк это newline (новая строка), carriage return (возврат каретки), или carriage return–newline последовательность.

Java-программа это свободно отформатированная последовательность символов, которая токенезируется (tokenized) компилятором, т.е. превращается в поток лексем для дальнейшего анализа.  Разделители и операторы помогают выделить лексемы, но в некоторых случаях нужно использовать свободное место в качестве разделителя. Например, идентификатор classRoom будет интерпретироваться как одна лексема, пока не будет добавлено свободное место межу class и Room.

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

1 комментарий:

  1. Iron Stacks – Tinted and Iron Spade - Titanium White
    Iron Stacks. by Tinted & mens titanium wedding rings Iron Spade. titanium fitness $23.95 $49.95. Iron 메이피로출장마사지 Stacks. By Tinted & Iron Spade. $18.95 $24.95 $38.95. titanium wood stoves Iron Stacks. by Tinted & Iron schick quattro titanium Spade. $21.95 $23.95

    ОтветитьУдалить