- •2006 Оглавление:
- •1. Постановка задачи
- •Исходные данные:
- •2. Описание входного языка:
- •2.1. Описание синтаксиса входного языка
- •2.2. Описание семантики входного языка
- •Объявления и области действия
- •Оператор вывода
- •Оператор ввода
- •Зарезервированные функции
- •3. Описание этапа лексического анализа
- •3.1. Определение типов лексем
- •3.2. Определение синтаксиса лексем
- •3.3. Структуры данных
- •50 Таблица констант
- •3.5. Результаты работы лексического анализатора
- •4. Описание этапа синтаксического анализа:
- •4.1. Построение кс-грамматики входного языка
- •4.1.1. Определение программы
- •4.1.6. Подграмматика арифметических операций
- •4.2. Описание промежуточного языка (триады)
3.3. Структуры данных
Статические таблицы: Составная таблица ключевых слов (KW)
1 KWWL
|
0 |
while |
2 KWIF
|
0 |
if |
3 KWEL
|
0 |
else |
4 KWGT
|
0 |
goto |
5 KWRD
|
0 |
read |
6 KWWR
|
0 |
write |
7 KWT
|
0 |
true |
8 KWF
|
0 |
false |
9 KWI
|
0 |
int |
10 KWD
|
0 |
double |
11 KWS
|
0 |
String |
12 KWC
|
0 |
char |
13 KWPG
|
0 |
package |
14 KWIM
|
0 |
import |
15 KWCL
|
0 |
class |
16 KWVD
|
0 |
void |
17 KWNW
|
0 |
new |
18 KWNL
|
0 |
null |
19 KWMN
|
0 |
main |
20 KWLN
|
0 |
length |
21 KWCC
|
0 |
concat |
22 KWSS
|
0 |
substring |
23 KWRP
|
0 |
replace |
24 KWFN
|
0 |
find |
25 таблица базовых типов
|
0 |
int |
|
1 |
double |
|
2 |
char |
|
3 |
String |
26 таблица унарных операторов (UAOP)
|
0 |
++ |
|
1 |
-- |
27 таблица аддитивных операторов (AAOP)
|
0 |
+ |
|
1 |
- |
28 таблица мультипликативных операторов (MAOP)
|
0 |
* |
|
1 |
/ |
29 таблица операторов отрицания (NLOP)
|
0 |
! |
30 таблица операторов ИЛИ (OLOP)
|
0 |
|| |
31 таблица операторов И (ALOP)
|
0 |
&& |
32 таблица операторов исключающего ИЛИ (EOLOP)
|
0 |
^ |
33 таблица операторов отношения (RLOP)
|
0 |
> |
|
1 |
< |
|
2 |
>= |
|
3 |
<= |
34 таблица операторов эквивалентности (EQLOP)
|
0 |
= = |
|
1 |
! = |
35 таблица операторов присваивания (AO)
|
0 |
= |
Составная таблица разделителей (SR)
36 SRLP
|
0 |
( |
37 SRRP
|
0 |
) |
38 SRLB
|
0 |
[ |
39 SRRB
|
0 |
] |
40 SRLCB
|
0 |
{ |
41 SRRCB
|
0 |
} |
42 SRSM
|
0 |
; |
43 SRQN
|
0 |
? |
44 SRCN
|
0 |
: |
45 SRPT
|
0 |
. |
46 SRCA
|
0 |
, |
Кроме того есть 47 таблица атомарных символов.
Динамические таблицы
48 таблтца типов
|
Тип |
Базовый тип |
размер в байтах |
|
Int |
0 |
4 |
|
double |
1 |
8 |
|
char |
2 |
2 |
|
String |
3 |
… |
В таблицу типов изначально занесены базовые типы…. все типы пользователя добавляются в эту таблицу на этапе синтаксического анализатора. Каждому типу сопоставлен номер базового типа, которому он соответсвует. 49 таблица идентификаторов (ID)
|
|
идентификатор |
тип |
значение |
|
0 |
|
|
|
|
….. |
|
|
|
если идентификатор – не относится к типам, то тип 4 (последний тип + 1) , а в значении может быть ссылка на базовый тип последовательность идентификаторов
|
идентификатор |
номер в таблице идентификаторов |
|
|
|
последовательность операторов
|
оператор |
номер в таблице операторов |
|
|
|
(таблица операторов формируется из совокупности таблиц операторов по приоритетам)
