Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бАКАЛАВР_РАБОТА.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.13 Mб
Скачать

4.1.2 Спецификация токенови входного алфавита символов

В качестве языка спецификации шаблонов лексем используются регулярные выражения. Регулярные выражения могут использоваться для описаниятолько фиксированного (или неопределенного) количества повторений определенной конструкции.

Обозначения,используемые для записи регулярных выражений, приведены в табл. 4.1.

Таблица 4.1– Обозначения для записи регулярных выражений

Регулярное выражение

Описание

Пример лексем

a*

Множество строк из нуля и более a

ε, a, aa, …

a+

Множество строк из одного и более a

a, aa, …

[a]

Множество строк из нуля или одного a (необязательная конструкция)

ε, a

a | b

Альтернатива (“a или b”)

a, b

ab

Конкатенация a и b

ab

Входной алфавит языка ∑LISMA содержит следующие типы терминальных символов: буква (<letter>, l), цифра (<digit>, d), остальные допустимые символы (<other>). Перечисленные классы символов задаются правилами:

<letter>-> ‘a’|‘b’|‘c’|‘d’|‘e’|‘f’|‘g’|‘h’|‘i’|‘j’|

‘k’|‘l’|‘m’|‘n’|‘o’|‘p’|‘q’|‘r’|‘s’|‘t’|

‘u’|‘v’|‘w’|‘x’|‘y’|‘z’|‘A’|‘B’|‘C’|‘D’|

‘E’|‘F’|‘G’|‘H’|‘I’|‘J’|‘K’|‘L’|‘M’|‘N’|

‘O’|‘P’|‘Q’|‘R’|‘S’|‘T’|‘U’|‘V’|‘W’|‘X’|

‘Y’|‘Z’|‘_’

<digit>-> ‘0’|‘1’|‘2’|‘3’|‘4’|‘5’|‘6’|‘7’|‘8’|‘9’

<other>-> ‘>’|‘<’|‘=’|‘!’|‘[’|‘]’|‘(’|‘)’|‘.’|‘,’|

‘;’|‘’’|‘~’|sp|tab|ns|eof

,где sp, tab, ns , eof соответственно символы пробела, табуляции, перевода каретки, признака конца входного потока.

Типы лексем языка LISMA, соответствующие им регулярные выражения и обозначения приведены в табл. 4.2.

Таблица 4.2­– Регулярные конструкции языка LISMA+

п/п

Описание типалексемы

Имя токена

Регулярное выражение (шаблон)

Пример

1

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

ID

l (l | d)*

x, var2, _in

2

Целое число

NUM

d+

22

3

Число с плавающей точкой

REAL

d+. d+| d+ (E | e) [(+ | -)] d+

22.5, 22.5E-3

4

Знаки арифметических действий

+

+

+, *, /

/

/

*

*

5

Знаки логических операций

NE

!= | <>

>, <=, !=

EQ

==

<

<

>

>

LE

<=

GE

>=

6

Разделитель фактических параметров функции

,

,

,

8

Признак окончания оператора (инструкции)

;

;

;

9

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

(

(

(

10

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

)

)

)

11

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

[

[

[

12

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

]

]

]

13

Признак уравнения

‘, ~

~

~

14

Знак равенства

=

=

=

15

Минус

-

-

-

16

Бинарные булевы функции

AND

and

and, or

OR

or

17

Унарные булевы функции

NOT

not

not

18

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

CONST

const

const

19

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

MACRO

macro

macro

20

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

IF

if

if

21

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

THEN

then

then

22

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

ENDIF

endif

endif

23

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

IS

is

is

24

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

FROM

from

from

25

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

ARRAY

array

array

26

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

COUNT

count

count

27

Конец потока терминальных символов

END

eof (или любой другой признак конца файла)

eof