Курсовая работа: Разработка программы-компилятора
3. Для хранения таблицы идентификаторов используется метод с использованием хэш-функций
Для хранения таблицы констант используется массив из записей Id_tab, содержащих следующие элементы:
Ссылка на элемент цепочки.
Номер.
Лексема.
В данном случае хэш-функция вычисляется по методу деления, т.е.
h (k): = {K/α}
где K - ключ записи, α - некоторый коэффициент
Для наиболее удобного распределения данных в таблице коэффициент α примем:
α= Li +2
где L - количество символов i-той строки, в которой хранится идентификатор.
Код K рассчитывается как сумма ASCII-кодов символов строки, в которой хранится идентификатор.
4. Для хранения таблицы кодов лексем используется массив из записей Code_tab, содержащих следующие элементы:
Номер.
Тип лексемы (C - константа, I - идентификатор, T - терминальный символ).
Номер в таблице констант, идентификаторов или терминальных символов.
Лексема.
Номер в таблице кодов лексем.
Для организации поиска используется последовательный метод.
2.2 Разработка автоматных грамматик для распознавания лексем
Автоматными или регулярными грамматиками называются грамматики, продукции которых имеют одну из двух форм:
Праволинейная |
Леволинейная |
A→aB |
A→Ba |
A→a |
A→a |
где a Î Т; А, В Î N
Эти грамматики широко используются для построения лексических анализаторов. Грамматику лексических единиц обычно явно не описывают, а строят эквивалентный ей граф распознавания лексических единиц.