2.1. Классы литер.
Разделим множество литер на следующие классы:
|
Класс 0 |
неопознанный символ |
|
Класс 1 |
заглавные и строчные буквы латинского алфавита, кроме E, e |
|
Класс 2 |
цифра |
|
Класс 3 |
/ |
|
Класс 4 |
* |
|
Класс 5 |
> |
|
Класс 6 |
< |
|
Класс 7 |
= |
|
Класс 8 |
! |
|
Класс 9 |
& |
|
Класс 10 |
| |
|
Класс 11 |
E, e |
|
Класс 12 |
. |
|
Класс 13 |
( ) , { } [ ] ; : |
|
Класс 14 |
\n \t \v \32 - знаки пробел, перевод каретки, горизонтальная и вертикальная табуляция |
|
Класс 15 |
“ |
|
Класс 16 |
+ |
|
Класс 17 |
- |
2.2. Классы лексем.
Все лексемы разделены на следующие классы:
Ключевые слова.
Идентификаторы переменных и констант.
Идентификаторы меток.
Однолитерные разделители.
Двулитерные разделители.
Константы.
Строки.
В конечном состоянии Q0 выполняются следующие действия в зависимости от номера предыдущего состояния.
|
Номер предыдущего состояние |
выполняемые действия |
|
3 |
Записываем полученную строку символов в таблицу идентификаторов, (если данного идентификатора раньше не было в таблице) если следующий символ на входной цепочке ‘:’, то этот идентификатор имеет тип метки. На выходную цепочку записываем соответствующую лексему типа идентификатор. |
|
2 |
Производится поиск в таблице ключевых слов. Если поиск заканчивается успешно, то это ключевое слово а иначе записываем полученную строку символов в таблицу идентификаторов, (если данного идентификатора раньше не было в таблице). На выходную цепочку записываем соответствующую лексему типа ключевое слово или типа идентификатор. |
|
9, 11, 13, 15, 23, 17 |
На выходную цепочку записываем соответствующую лексему типа однолитерный разделитель. |
|
12, 14, 16, 18, 20, 22, 10 |
На выходную цепочку записываем соответствующую лексему типа двулитерный разделитель. |
|
19, 21, 25 |
Ошибка |
|
4, 6, 26, 27, 28, 5 |
Производится поиск в таблице констант. Если поиск заканчивается неуспешно, то записываем полученную строку символов в таблицу констант. На выходную цепочку записываем соответствующую лексему типа константа. |
|
29 |
Строки. Записываем полученную строку символов в таблицу строк. |
