S = «&«B0.
B0 = «B» B1.
B1 = дB2.
B2 = дB2!». «B3! е.
B3 = дB4.
B4 = дB4! е.
е = «"! «*»!» –"! «+»! «*»! «/"! «^»!»)"! «=»! «<»! «>».
· ид_р
S = бА! «B» A! «H» A.
А = бА! нА! дА! «A» A! «B» A! «C» A! «D» A! «E» A! «F» A! «H» A! «%«A2! «&«A2! «$«A2.
A2 = е.
е = «"! «*»!» –"! «+»! «*»! «/"! «^»!»)"! «=»! «<»! «>».
"s" |
"i" |
"n" |
е4 |
· left
S = «l» A7.
A7 = «e» A8.
A8 = «f» A9.
A9 = «t» A10.
A10 = е4.
е4 = р! «(».
· not
S = «n» A11.
A11 = «o» A12.
A12 = «t» A13.
A13 = е4.
е4 = р! «(».
· and
S = «a» A14.
A14 = «n» A15.
A15 = «d» A16.
A16 = е4.
е4 = р! «(».
· or
S = «o» A17.
A17 = «r» A18.
A18 = е4.
е4 = р! «(».
· xor
S = «x» A19.
A19 = «o» A20.
A20 = «r» A21.
A21 = е4.
е4 = р! «(».
е4 |
· разделитель
S = рR1.
R1 = рR1! e0
e0 – любой символ из ТТС1
e3 |
· *
S = «*«U1.
U1 = e3.
e3 = б! «B»! «H»! д! н! р! «&»! «(».
· mod
S = «mod» U1.
U1 = e3.
e3 = б! «B»! «H»! д! н! р! «&»! «(».
S = «^«U1.
U1 = e3.
e3 = б! «B»! «H»! д! н! р! «&»! «(».
· оо
S = «<«O1! «>«O2! «=«O3.
O1 = «>«O4! «=«O4! e3.
O2 = «=«O5! e3.
O4 = e3.
O5 = e3.
O3 = e3.
e3 = б! «B»! «H»! д! н! р! «&»! «(».
· (
S = «(«K1.
K1 = e2.
e2 = б! «B»! «H»! д! н! р! «+»!» –"! «&»! «(».
· )
S =»)«K2.
K2 = e.
е = «"! «*»!» –"! «+»! «*»! «^»!»)"! «=»! «<»! «>».
4) Описываем использованные в сканере подпрограммы:
end – Процедура окончания работы сканера
podgot – Процедура производит общую подготовку сканера к работе
tip – Процедура устанавливает тип литеры
vkl – Процедура добавляет текущую литеру в текущую лексему
cll – Процедура считывает из файла очередную литеру
zaptab – Процедура проверяет наличие текущей лексемы в таблице ключевых слов
out – Процедура заполняет основные таблицы
6) Пример работы сканера
Исходное выражение:
(sin (2*aa%-&B01)<bb#) and (2+3+4<10) xor &H0
Заполненные в результате работы сканера таблицы:
Табл.10. Таблица идентификаторов | ||||||||
ТИ | ||||||||
ид | описатели | адр | ||||||
тип | точка | точность | осн | |||||
Aa% | Integer | 0 | 2 | 10 | 0 | |||
Bb# | Double | 1 | 16 | 10 | 2 | |||
Табл.11. Таблица констант | ||||||||
ТК | ||||||||
конст | Описатели | |||||||
тип | точка | точность | осн | |||||
2 | Integer | 0 | 0 | 10 | ||||
&B01 | Bin | 0 | 0 | 2 | ||||
2 | Integer | 0 | 0 | 10 | ||||
3 | Integer | 0 | 0 | 10 | ||||
4 | Integer | 0 | 0 | 10 | ||||
10 | Integer | 0 | 0 | 10 | ||||
&H0 | Hex | 0 | 0 | 16 | ||||
Табл.12. Таблица операций и специальных символов | ||||||||
ТОС | ||||||||
Символ | ||||||||
( | ||||||||
Sin | ||||||||
( | ||||||||
* | ||||||||
- | ||||||||
) | ||||||||
< | ||||||||
) | ||||||||
And | ||||||||
( | ||||||||
+ | ||||||||
+ | ||||||||
< | ||||||||
) | ||||||||
Xor | ||||||||
5. Синтаксический анализ выражения, которое использовалось в п. 2