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

В Информатика, а лексическая грамматика это формальная грамматика определение синтаксис из жетоны. Программа написана с использованием символов, которые определяются лексической структурой используемого языка. Набор символов эквивалентен алфавиту, используемому в любом письменном языке. Лексическая грамматика устанавливает правила, определяющие, как последовательность символов делится на подпоследовательности символов, каждая часть которых представляет отдельный токен. Это часто определяется в терминах обычные выражения.[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.

внешняя ссылка