Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
76.8 Кб
Скачать

2. Описание лексического анализатора.

Вход лексического анализатора: последовательность литер.

Выход лексического анализатора: последовательность лексем. Каждая лексема состоит из двух полей:

  1. поле, хранящее класс лексемы.

  2. поле, хранящее номер лексемы внутри класса.

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. Классы лексем.

Все лексемы разделены на следующие классы:

  1. Ключевые слова.

  2. Идентификаторы переменных и констант.

  3. Идентификаторы меток.

  4. Однолитерные разделители.

  5. Двулитерные разделители.

  6. Константы.

  7. Строки.

В конечном состоянии Q0 выполняются следующие действия в зависимости от номера предыдущего состояния.

Номер предыдущего состояние

выполняемые действия

Записываем полученную строку символов в таблицу идентификаторов, (если данного идентификатора раньше не было в таблице) если следующий символ на входной цепочке ‘:’, то этот идентификатор имеет тип метки. На выходную цепочку записываем соответствующую лексему типа идентификатор.

2

Производится поиск в таблице ключевых слов. Если поиск заканчивается успешно, то это ключевое слово а иначе записываем полученную строку символов в таблицу идентификаторов, (если данного идентификатора раньше не было в таблице). На выходную цепочку записываем соответствующую лексему типа ключевое слово или типа идентификатор.

9, 11, 13, 15, 23, 17

На выходную цепочку записываем соответствующую лексему типа однолитерный разделитель.

12, 14, 16, 18, 20, 22, 10

На выходную цепочку записываем соответствующую лексему типа двулитерный разделитель.

19, 21, 25

Ошибка

4, 6, 26, 27, 28, 5

Производится поиск в таблице констант. Если поиск заканчивается неуспешно, то записываем полученную строку символов в таблицу констант. На выходную цепочку записываем соответствующую лексему типа константа.

29

Строки. Записываем полученную строку символов в таблицу строк.

2. Описание синтаксического анализатора.

3.1. Входная грамматика анализатора.

Множеством терминальных символов языка, распознаваемого анализатором, служит множество лексем, порождаемых лексическим анализатором на предыдущем этапе.

Множество правил входной грамматики анализатора.

Множество правил входной LL(1) грамматики разбито на три подграмматики:

1) Подграмматика выражений.

Нетерминалы :

V

Выражение

V’

остаток выражения

D

Дизъюнкт

D’

остаток дизъюнкта

K

Конъюнкт

K’

остаток конъюнкта

O

Отношение

O’

остаток отношения

E

Арифметическое выражение

E’

остаток арифметического выражения

T

Терм

T’

остаток терма

M

Множитель

M’

остаток множителя

Правила :

1) V ® D V' 2) V' ® e 3) V' ® || D V'

4) D ® K D' 5) D' ® e 6) D' ® && K D'

7) K ® O K' 8) K' ® e 9) K' ® == O K'

10) K' ® != O K' 11) O ® E O' 12) O' ® e

13) O' ® >= E O' 14) O' ® <= E O' 15) O' ® > E O'

16) O' ® < E O' 17) E ® T E' 18) E ® + T E'

19) E ® - T E' 20) E' ® e 21) E' ® + T E'

22) E' ® - T E' 23) T ® M T' 24) T' ® e

25) T' ® * M T' 26) T' ® / M T' 27) M ® ( V )

28) M ® i M' 29) M ® c 30) M ® length ( V )

31) M' ® e 32) M' ® [ V ]

Соседние файлы в папке Курсовая работа2