Строки и языки
E = M * C + 2
Атрибуты токенов
Если шаблону токена соответствует несколько лексем, лексический анализатор должен обеспечить дополнительную информацию о лексемах для дальнейшей работы. Лексический анализатор сохраняет информацию о токенах в атрибутах , связанных с этими токенами. На практике токены имеют обычно один атрибут – указатель на запись в таблице символов. В этой записи хранится информация о токене.
Например, нам могут понадобиться лексемы идентификаторов, номера строк, где эти идентификаторы встретились впервые и т.п. Вся эта (и другая) информация хранится в хаписях таблицы символов (таблице имен).
Пример. Токены и связанные с ними значения атрибутов для инструкции
Токен | Значение атрибута |
id | указатель на запись в таблице символов для E |
assign_op | - |
id | указатель на запись в таблице символов для M |
mult_op | - |
id | указатель на запись в таблице символов для C |
plus_op | - |
num |
Это можно рассматривать как пары < токен, значение атрибута >. В некоторых парах нет надобности в значениях атрибута. Тогда <токен, - >
Для определения токенов (для задания шаблонов) используются регулярные выражения.
Алфавит – конечное непустое множество символов.
Обычно алфавит обозначается символом .
Пример.
- бинарный или двоичный алфавит.
- множество строчных букв английского алфавита.
Строка над алфавитом конечная последовательность символов из алфавита .
Пример.
01101 – строка над алфавитом .
Синонимы термина «строка» - слово, предложение, цепочка.
Пустая строка – это строка, не содержащая ни одного символа. Пустая строка обозначается - .
Длина строки – количество символов в строке, с учетом их повторения.
Пример.
обозначение для множества всех строк длины , состоящих из символов алфавита .
Пример.
.
- независимо от алфавита .
- …
Между и есть небольшое отличие. алфавит, множество всех строк единичной длины, построенных из символов алфавита .
Множество всех строк над алфавитом принято обозначать . По другому это множество можно записать в виде
Пример. . .
обозначение множества всех строк над алфавитом , кроме пустой строки, т.е.
Имеют место следующие равенства:
Пусть и строки.
Конкатенация строк и является строкой, сформированной путем дописывания строки
обозначение конкатенации строк и .
Пример.
.
.
Пустая строка – нейтральный элемент по отношению к операции конкатенация, т.е. для любой строки справедливо соотношение .
Язык – подмножество строк из .
Иначе: если алфавит и , то это язык над или в .
Примеры языков.
- . язык, состоящий из всех строк, в которых единиц следуют за нулями для некоторого :
. - . множество строк, содержащих поровну нулей и единиц:
. - язык, для любого алфавита .
- пустой язык в любом алфавите.
- язык, содержащий лишь пустую строку.