14
ИНФОРМАЦИОННЫЕ СТРУКТУРЫ И ИХ
ПРЕОБРАЗОВАНИЕ
В добавление ко всему сканер должен распознавать и исключать
комментарий. Комментарий начинается с двулитерного символа /
∗
и
заканчивается при первом появлении двулитерного символа
∗
/. Следующая
строка является примером одного комментария:
/
∗
Это
∗
/ / один комментарий
∗
/.
Сканер строит внутреннее представление для каждого символа. В
большинстве случаев это целое число фиксированной длины (байт,
полуслово, слово и т.д.). В других частях компилятора гораздо эффективнее
обрабатываются эти целые числа, чем цепочки переменной длины, которыми
фактически представляются символы.
2.1. Автоматные грамматики и диаграмма состояний
Рассмотрим грамматику G(Z), которая содержит правила:
Z: = U0|V1; U: = Z1|1; V: = Z0|0.
Изобразим графически процесс построения сентенциальных форм.
Назовём это диаграммой состояния, где каждый нетерминал есть некоторое
состояние. Существует также начальный символ S – начальное состояние,
S
∉
NU
∑
.. Каждому правилу вида Q:=T, где T
∈
VT, Q
∈
VN поставим в
соответствие дугу, исходящую из начального символа и направленную в
состояние, помеченное Q, а каждому правилу вида Q: = RT, где T
∈
VT,
Q,R
∈
VN поставим в соответствие дугу, исходящую из вершины R и
направленную в вершину, помеченную Q. Будем использовать диаграмму
состояний для распознавания цепочки.
Диаграмма состояний:
S
Z
V
U
1
1
1
1
0
0
0
Ошибка