Разработка языка, предназначенного для программирования потоковых вычислений, страница 8

Пополнение таблицы идентификатор происходит, если текущий идентификатор не является предопределённым словом языка и не установлен флаг ThisNameBlock.

В результате работы лексического анализатора на экран выводятся таблица идентификаторов для каждого блока и таблица констант. Код вывода приведён ниже:

<br>

<div align=center>Таблица идентификаторов</div>

<% Enumeration eBlock = identTableBlock.keys(); Object keyBlock;%>

<% for(int Cnt=0; Cnt<NameBlock.size(); Cnt++ )

{%><div align=center><%=(keyBlock=NameBlock.get(Cnt))%></div>

<table align=center border=2>

<tr><td align=center>Ключ лексемы</td> <td align=center>Индекс слова в группе</td><td align=center>Значение</td></tr>

<%ident = ((Hashtable)(identTableBlock.get(keyBlock)));Enumeration e=ident.keys();Object key;%>

<% for(; e.hasMoreElements(); )

{%><tr><td align=center><%=(key=e.nextElement())%></td> <td align=center><%=(word=((lexem)(ident.get(key))).wordIndex)%></td><td align=center><%=(ResultHash.get(new Integer(word)))%></td></tr><%}%></table><%}%>

</br>

<br>

<div align=center>Таблица констант</div>

<table align=center border=2>

<tr><td align=center>Ключ лексемы</td> <td align=center>Индекс слова в группе</td></tr>

<%Enumeration  e = constHash.keys();Object key; %>

<% for(; e.hasMoreElements(); )

{%><tr><td align=center><%=(key=e.nextElement())%></td> <td align=center><%=(((lexem)(constHash.get(key))).wordIndex)%></td></tr><%}%>

</table>

<br>

Результаты работы лексического анализатора

Таблица идентификаторов

1vars1

Ключ лексемы

Индекс слова в группе

Значение

b

2

null

a2

1

null

a1

0

null

1do1

Ключ лексемы

Индекс слова в группе

Значение

x3

7

null

x2

5

null

x1

4

null

in2

6

null

tmp_6

15

null

in1

3

null

tmp_5

14

null

tmp_4

13

null

tmp_3

12

null

tmp_2

11

null

tmp_1

10

null

out1

9

null

x4

8

null

2do2

Ключ лексемы

Индекс слова в группе

Значение

v3v2

18

null

tmp_16

31

null

v3v1

17

null

tmp_15

30

null

tmp_14

29

null

tmp_13

28

null

tmp_12

27

null

tmp_9

24

null

tmp_11

26

null

tmp_8

23

null

stek1

20

null

tmp_10

25

null

tmp_7

22

null

in2

19

null

in1

16

null

out1

21

null

3do3

Ключ лексемы

Индекс слова в группе

Значение

x42

34

null

x41

32

null

tmp_19

40

null

tmp_18

39

null

tmp_17

38

null

tmp_29

50

null

tmp_28

49

null

tmp_27

48

null

tmp_26

47

null

tmp_25

46

null

tmp_24

45

null

tmp_23

44

null

tmp_22

43

null

tmp_21

42

null

out41

33

null

tmp_20

41

null

x45

37

null

x44

36

null

x43

35

null