Главная » Java » Лексемы Java

0

 

 Лексемы (tokens) – это элементарные законченные слова языка. Компилятор разбивает поток исходного текста на лексемы и предпринимает попытку выяснить, из каких идентификаторов, операторов, выражений и Т.д. состоит код. Символы пробела (собственно пробелы, знаки табуляции, перевода строки и возврата каретки) не являются значимыми, за исключением тех, которые разделяют лексемы или расположены внутри символьных или строковых литералов. Если взять любой прав ильный код и добавить в него произвольное количество Символов пробела (только не внутри конкретных лексем и символьных или Строковых литералов), на результат компиляции и последующего выполнения Программы это никак не повлияет.

Одно из основных применений символов пробела связано с разделением лексем, которые в противном случае слились бы воедино. Например, в выражении

return 0;

символ пробела между лексемами return и 0 удалять нельзя, поскольку иначе будет получена довольно бессмысленная инструкция

return 0;

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

Функция лексического анализа, реализованная в составе компилятора, действует в соответствии с так называемым "жадным" алгоритмом. Для получения очередной лексемы она пытается объединить возможно большее число Символов, не заботясь при этом о синтаксической правильности последовательности Лексем. Так, например, поскольку ++ длиннее, чем +, выражение

j = i+++++i; // НЕВЕРНО!

интерпретируется как синтаксически неправильное

j = i++ ++ +i; // НЕВЕРНО!

вместо верного

j = i++ + ++i;

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии