- •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) , а в значении может быть ссылка на базовый тип последовательность идентификаторов
идентификатор |
номер в таблице идентификаторов |
|
|
последовательность операторов
оператор |
номер в таблице операторов |
|
|
(таблица операторов формируется из совокупности таблиц операторов по приоритетам)