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

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

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

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

  • Идентификаторы – пользовательские имена объектов программы.

  • Константы – числовые, логические или строковые значения, указанные явно.

  • Ключевые слова – зарезервированные идентификаторы, имеющие строго определённый смысл.

  • Знаки операций – символы, обозначающие унарные и бинарные операции.

  • Специальные символы – квадратные и круглые скобки, точки и запятые и т.д.

  • Разделители – пробелы и символы новой строки. Если в тексте программы, в каком-либо месте, может стоять хотя бы один разделитель, то в этом месте может стоять сколько угодно разделителей.

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

Токен

Лексемы

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

_ID

str, count

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

_NUM

10, 1023

Целое без знака

_STR

‘Введите i:’

Строка

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

_PROG

program

Соответствующие ключевые слова

_CONST

const

_TYPE

type

_VAR

var

_LABEL

label

_BEGIN

begin

_END

end

_IF

if

_THEN

then

_ELSE

else

_GOTO

goto

_REPEAT

repeat

_UNTIL

until

_READ

read

_WRITE

write

_WRITES

writes

_WRITEM

writem

_BOOL

boolean

_INT

integer

_ARRAY

array

_OF

of

_TRUE

true

_FALSE

false

Знаки операции

-

-

Арифметические

+

-

_MID

*, div, mod

and

Логические

_OR

or

_NOT

not

_INV

inv

Над матрицами

_MOP

con, alt

_SIZE

size

_REL

<, <=, >=,

>, <>, =

Отношения

_EQ

:=

Присваивания

Специальные символы

_DDOT

..

Соответствующие символы

=

=

(

(

)

)

[

[

]

]

;

;

:

:

,

,

.

.

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

Классы литер, которые используются для написания лексем

  • буква: прописные и строчные буквы латинского алфавита

  • цифра: десятичные цифры

  • подчеркивание: символ «_»

  • не_идентификатор: все литеры за исключением латинских букв, цифр и символа «_»

  • не_знак_отношения: все литеры за исключением символов >, <, =

Автоматные грамматики, описывающие синтаксис лексем, и графы конечных автоматов

Символ S – начальный символ, а F – символ, соответствующий концу разбора лексемы.

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

S → буква C

C → буква С

C → цифра C

C → подчеркивание C

С → не_идетификатор

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

S → цифра N

N → цифра N

N → не_идетификатор

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

S → > A

S → < B

S → =

A → =

A → не_знак_отношения

B → =

B → >

B → не_знак_отношения

Операция присваивания

S → : E

E → =

Операция двойная точка

S → . E

E →.

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

+, -, *, (, ), [, ], ;, :, ,, .

Соседние файлы в папке report