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