Скачиваний:
9
Добавлен:
01.05.2014
Размер:
527.87 Кб
Скачать

3. Описание этапа лексического анализа.

3. 1. Определение типов лексем.

Типы лексем, выделяемых лексическим анализатором из программы на входном языке, определяются входным языком. Лексический анализатор исключает из текста исходной программы комментарии, незначащие пробелы, символы табуляции и перевода строки и выделяет лексемы следующих типов:

  • идентификаторы;

  • целые и вещественные беззнаковые константы;

  • ключевые слова входного языка;

  • однолитерные и двулитерные разделители.

Соотношение между токенами и лексемами.

Токен

Лексемы

Языковая конструкция

id

count, index

Идентификатор

nat

0, 1, 10, 100

Целое число без знака

num

1.2, 1e-10, 1e10

Вещественное число без знака

program, begin, end, label, const, var, type, real, integer, complex, vector, read, readln, write, writeln, goto, if, then, else, while, do, length, sum, dif, multscal, multconst, abs, im, re, and, or, not

program, begin, end, label, const, var, type, real, integer, complex, vector, read, readln, write, writeln, goto, if, then, else, while, do, length, sum, dif, multscal, multconst, abs, im, re, and, or, not

Ключевые слова program, begin, end, label, const, var, type, real, integer, complex, vector, read, readln, write, writeln, goto, if, then, else, while, do, length, sum, dif, multscal, multconst, abs, im, re, and, or, not

:=

:=

Оператор присваивания

rel

<, >, <=, >=, <>

Операция отношения

+

+, -

Операция типа «сложение»

*

*, /

Операция типа «умножение»

(

(

Открывающая круглая скобка

)

)

Закрывающая круглая скобка

[

[

Открывающая квадратная скобка

]

]

Закрывающая квадратная скобка

#

#

Скобка, ограничивающая комплексное число

=

=

Символ «=»

;

;

Символ «;»

,

,

Символ «,»

:

:

Символ «:»

.

.

Символ конца программы

3. 2. Определение синтаксиса лексем.

Определение автоматных грамматик, описывающих синтаксис лексем.

3. 2. 1. Классы литер, с помощью которых записываются программы на входном языке:

  • класс «буква»: a Az Z

  • класс «цифра»: 0 1 2 3 4 5 6 7 8 9

  • класс «однолитерные разделители»: ; , + - * / = ( ) [ ]

  • класс «литеры однолитерных и двулитерных разделителей»: < > = :

3. 2. 2. Составление автоматных грамматик, описывающих синтаксис лексем.

Терминальными символами грамматики являются классы литер, а начальным символом грамматики – символ S.

  1. Автоматная грамматика, описывающая синтаксис лексем «идентификатор» и «ключевое слово». Здесь “Буква” – класс «буква», “Цифра” – класс «цифра», “1 – класс, включающий все литеры, за исключением букв и цифр.

Правила грамматики:

S

Буква Id

Id

Буква Id

Id

Цифра Id

Id

1

  1. Автоматная грамматика, описывающая синтаксис лексемы «целая константа без знака». Здесь “Цифра” – класс «цифра», “2 – класс, включающий все литеры, за исключением цифр.

Правила грамматики:

S

Цифра C

C

Цифра C

C

2

  1. Автоматная грамматика, описывающая синтаксис лексемы «вещественная константа без знака». Здесь “2 – класс, включающий все литеры, за исключением цифр.

Правила грамматики:

S

Цифра C

C

Цифра C

C

. T

C

e T

C

e + T

C

e – T

T

Цифра D

D

Цифра D

D

2

  1. Автоматные грамматики, описывающие синтаксис лексем «однолитерный разделитель» и «двулитерный разделитель». Здесь “Знак” – классы «однолитерные разделители» и «литеры однолитерных и двулитерных разделителей», “3 – класс, включающий все литеры.

Правила грамматики:

однолитерные разделители:

S

Знак L

L

3

лексема «:=»

S

: Next

Next

= E

E

3

лексема «<=»

S

< Next

Next

= E

E

3

лексема «>=»

S

> Next

Next

= E

E

3

лексема «<>»

S

< Next

Next

> E

E

3

Соседние файлы в папке Курсовик по ТЯПру