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

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

На входе лексического анализатора находится последовательность UNICODEсимволов представляющая программу на входном языке. Задача ЛА состоит в разделении этой последовательности на слова языка (лексемы).

  • чтение исходной программы и выделение из нее лексем;

  • построение таблиц идентификаторов и констант;

  • преобразование входной программы (поток литер) в поток токенов, в котором каждый токен представляет лексему.

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

Будем рассматривать следующие типы лексем:

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

  • Константы (числовые, строковые, символьные)

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

  • Знаки операций (арифметические, логические, отношения)

  • Разделители

Соотношение между токенами и лексемами для различных языковых конструкций:

Токен

Лексема

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

ID

<идентификатор>

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

CI

1, 1000,-20

Целочисленная константа

CR

1.15

Вещественная константа

CC

‘f’

Символьная константа

CS

“test”

Строковая константа

UAOP

++, --

Унарные арифметические операции

AAOP

+, -

Аддитивные арифметические операции

MAOP

*, /

Мультипликативные арифметические операции

NLOP

!

Отрицание (логическая операция)

OLOP

||

ИЛИ (логическая операция)

ALOP

&&

И (логическая операция)

EOLOP

^

Исключающее ИЛИ (логическая операция)

RLOP

>, <, < =, > =

Отношения (логические операции)

EQLOP

= =, ! =

Эквивалентность (логические операции)

AO

=

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

SRLP

(

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

SRRP

)

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

SRLB

[

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

SRRB

]

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

SRLCB

{

Открывающая фигурная скобка

SRRCB

}

Закрывающая фигурная скобка

SRSM

;

Точка с запятой

SRQN

?

Вопросительный знак

SRCN

:

Двоеточие

SRPT

.

Точка

SRCA

,

Запятая

KWWL

while

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

KWIF

if

KWEL

else

KWGT

goto

KWRD

read

KWWR

write

KWT

true

KWF

false

KWI

int

KWD

double

KWS

String

KWC

char

KWPG

package

KWIM

import

KWCL

class

KWVD

void

KWNW

new

KWNL

null

KWMN

Main

KWLN

length

KWCC

concat

KWSS

substring

KWRP

replace

KWFN

find

Расшифровка сокращений:

ID– identifier

CI – constant integer

CR – constant real

CC – constant char

CS – constant string

UAOP – unary arithmetic operation

AAOP – additive arithmetic operation

MAOP – multiplicative arithmetic operation

NLOP – negation logical operation

OLOP – or logical operation

ALOP – and logical operation

EOLOP – exclusive or logical operation

RLOP – relation logical operation

EQLOP – equal logical operation

AO – appropriation operation

SRLP – separator left parenthesis

SRRP – separator right parenthesis

SRLB – separator left bracket

SRRB – separator right bracket

SRLCB – separator left curly brace

SRRCB – separator right curly brace

SRSM – separator semicolon

SRQN – separator question

SRCN – separator colon

SRPT – separator point

SRCA – separator comma

KWWL – key word while

KWIF – key word if

KWEL – key word else

KWGT – key word goto

KWRD – key word read

KWWR – key word write

KWT – key word true

KWF – key word false

KWI – key word int

KWD – key word double

KWS – key word string

KWC – key word char

KWPG – key word package

KWIM – key word import

KWCL – key word class

KWVD – key word void

KWNW – key word new

KWNL – key word null

KWMN – key word main

KWKN – key word length

KWCC – key word concat

KWSS – key word substring

KWRP – key word replace

KWFN – key word find