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
Ошибка
1...,6,7,8,9,10,11,12,13,14,15 17,18,19,20,21,22,23,24,25,26,...88