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

VectorTetrad.add(StrTetrad.clone());StrTetrad.removeAllElements();

thismetka = false;}

if(BiOp.contains(StackTetrad.peek())==true)

{if(thismetka == false)StrTetrad.add(""); StrTetrad.add(StackTetrad.pop());

StrTetrad.add(StackTetrad.pop()); StrTetrad.add(StackTetrad.pop());

StackTetrad.push("tmp_"+(++tmpidnumber));lexem Lexem1=new lexem();

Lexem1.wordIndex = my.GetCnt(); my.IncCnt();

identHash.put(StackTetrad.peek(),Lexem1); StrTetrad.add(StackTetrad.peek());

VectorTetrad.add(StrTetrad.clone());

StrTetrad.removeAllElements();thismetka = false;}

if(StackTetrad.peek()=="GF")

{if(thismetka == false)StrTetrad.add(""); StrTetrad.add(StackTetrad.pop());

StrTetrad.add(StackTetrad.pop()); StrTetrad.add(StackTetrad.pop());

StrTetrad.add("_null"); VectorTetrad.add(StrTetrad.clone());

StrTetrad.removeAllElements();

thismetka = false;}

if(StackTetrad.peek()=="GO")

{if(thismetka == false)StrTetrad.add(""); StrTetrad.add(StackTetrad.pop());

StrTetrad.add(StackTetrad.pop()); StrTetrad.add("_null");

StrTetrad.add("_null"); VectorTetrad.add(StrTetrad.clone());

StrTetrad.removeAllElements();thismetka = false; }}

Код вывода пентад приведён ниже:

<br>

<div align=center>Последовательность пентад</div>

<%eBlock = TableBlockTetrad.keys();%>

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

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

<table align=center border=2>

<tr><td align=center>Номер</td><td align=center>Метка</td><td align=center>Операция</td><td align=center>Операнд 1</td><td align=center>Операнд 2</td><td align=center>Результат</td><tr>

<%num=0;%>

<% for(; num<Tetrad.size(); num++)

{%><tr><td align=center><%=num%></td><td align=center><%=((Vector)Tetrad.get(num)).elementAt(0)%></td><td align=center><%=((Vector)Tetrad.get(num)).elementAt(1)%></td><td align=center><%=((Vector)Tetrad.get(num)).elementAt(2)%></td><td align=center><%=((Vector)Tetrad.get(num)).elementAt(3)%></td><td align=center><%=((Vector)Tetrad.get(num)).elementAt(4)%></td></tr><%}%>

</table><%}%>

<br>

Результаты преобразования ПФЗ в последовательность пентад

Последовательность пентад

1vars1

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

0

let

2

_null

a2

1

let

a2

_null

a1

2

let

2

_null

b

1do1

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

0

+

x2

x1

tmp_1

1

let

tmp_1

_null

in1

2

+

x4

x3

tmp_2

3

let

tmp_2

_null

in2

4

in2

in1

tmp_3

5

GF

Label0_1

tmp_3

_null

6

-

in2

in1

tmp_4

7

let

tmp_4

_null

out1

8

Label0_1:

in2

in1

tmp_5

9

GF

Label0_2

tmp_5

_null

10

-

in1

in2

tmp_6

11

let

tmp_6

_null

out1

12

GO

Label1_2

_null

_null

13

Label0_2:

let

0

_null

out1

14

Label1_2:

_null

_null

_null

_null