Задачи лексического анализа
Теперь каждая дуга в ДС может выглядеть так:
Рис. 1. Вид дуги в ДС
Смысл ti прежний – если в состоянии A очередной анализируемый символ совпадает с ti для какого-либо i = 1, 2 ,... n, то осуществляется переход в состояние B; при этом необходимо выполнить действия D1, D2, ... ,Dm.
Лексический анализатор для М-языка
Вход лексического анализатора – символы исходной программы на М-языке; результат работы – исходная программа в виде последовательности лексем (их внутреннегопредставления).
Лексический анализатор для модельного языка будем писать в два этапа: сначала построим диаграмму состояний с действиями для распознавания и формирования внутреннего представления лексем, а затем по ней напишем программу анализатора.
Первый этап: разработка ДС
Представление лексем: все лексемы М-языка разделим на несколько классов; классы пронумеруем:
•служебные слова – 1,
•ограничители – 2,
•константы (целые числа) – 3,
•идентификаторы – 4.
Внутреннее представление лексем – это пара (номер_класса, номер_в_классе).
Номер_в_классе – это номер строки в таблице лексем соответствующего класса.
Соглашение об используемых переменных, типах и функциях
1. Вводим переменные:
•buf – буфер для накопления символов лексемы;
•c – очередной входной символ;
•d – переменная для формирования числового значения константы;
•TW – таблица служебных слов М-языка;
•TD – таблица ограничителей М-языка;
•TID – таблица идентификаторов анализируемой программы;
•TNUM – таблица чисел-констант, используемых в программе.