Jump to content

Лексическая грамматика

В информатике или лексическая грамматика лексическая это формальная грамматика, определяющая синтаксис токенов структура . Программа написана с использованием символов, определяемых лексической структурой используемого языка. Набор символов эквивалентен алфавиту, используемому в любом письменном языке. Лексическая грамматика устанавливает правила, управляющие тем, как последовательность символов делится на подпоследовательности символов, каждая часть которых представляет собой отдельный токен. Это часто определяется с помощью регулярных выражений . [1]

Например, лексическая грамматика многих языков программирования определяет, что строковый литерал начинается с символа. " символ и продолжается до тех пор, пока не будет найдено совпадение " ( экранирование делает это более сложным), что идентификатор представляет собой буквенно-цифровую последовательность (буквы и цифры, обычно также допускающие подчеркивание и запрещающие начальные цифры), и что целочисленный литерал представляет собой последовательность цифр. Итак, в следующем символе последовательность "abc" xyz1 23 токенами являются строка , идентификатор и число (плюс токены пробелов), поскольку символ пробела завершает последовательность символов, образующих идентификатор. Кроме того, определенные последовательности классифицируются как ключевые слова – они обычно имеют ту же форму, что и идентификаторы (обычно алфавитные слова), но классифицируются отдельно; формально у них другой тип токена. [2]

Далее следуют регулярные выражения для общих лексических правил (например, C).

Неэкранированный строковый литерал (кавычка, за которой следуют некавычки, заканчивающиеся кавычкой):

"[^"]*" 

Экранированный строковый литерал (кавычка, за которой следуют экранированные символы или не кавычки, заканчивающиеся кавычкой):

"(\.|[^\"])*" 

Целочисленный литерал:

[0-9]+ 

Десятичный целочисленный литерал (без ведущего нуля):

[1-9][0-9]*|0 

Шестнадцатеричный целочисленный литерал:

0[Xx][0-9A-Fa-f]+ 

Восьмеричный целочисленный литерал:

0[0-7]+ 

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

[A-Za-z_$][A-Za-z0-9_$]* 

См. также

[ редактировать ]
  1. ^ Буя (2009). Объектно-ориентированное программирование на Java: основы и приложения . Тата МакГроу-Хилл Образование. стр. 57–. ISBN  978-0-07-066908-6 .
  2. ^ Джеймс Гослинг (2000). Спецификация языка Java . Аддисон-Уэсли Профессионал. стр. 9–. ISBN  978-0-201-31008-5 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e49c0fcb7903e9bd8199f5ca987665f3__1683241080
URL1:https://arc.ask3.ru/arc/aa/e4/f3/e49c0fcb7903e9bd8199f5ca987665f3.html
Заголовок, (Title) документа по адресу, URL1:
Lexical grammar - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)