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

Блок: 22

 Номер 

 Метка 

 Операция 

 Операнд1 

 Операнд2 

 Результат 

0

 + 

 cc2 

 cc1 

 tmpValue32 

1

 let 

 tmpValue32 

 null 

 y 

2

 >= 

 0 

 y 

 tmpValue33 

3

 + 

 bb1 

 cc2 

 tmpValue34 

4

 < 

 tmpValue34 

 cc1 

 tmpValue35 

5

 || 

 tmpValue35 

 tmpValue33 

 tmpValue36 

6

 JmpF 

 Label1_4 

 tmpValue36 

 null 

7

 + 

 x 

 y 

 tmpValue37 

8

 let 

 tmpValue37 

 null 

 y 

9

 Jmp 

 Label2_4 

 null 

 null 

10

 Label1_4: 

 < 

 0 

 y 

 tmpValue38 

11

 JmpF 

 Label1_5 

 tmpValue38 

 null 

12

 * 

 2 

 x 

 tmpValue39 

13

 let 

 tmpValue39 

 null 

 y 

14

 Jmp 

 Label2_5 

 null 

 null 

15

 Label1_5: 

 + 

 a1 

 x 

 tmpValue40 

16

 let 

 tmpValue40 

 null 

 x 

17

 / 

 2 

 x 

 tmpValue41 

18

 let 

 tmpValue41 

 null 

 y 

19

 Label2_5: 

 null 

 null 

 null 

 null 

20

 Label2_4: 

 null 

 null 

 null 

 null 

11. Семантический анализатор.

11.1. Построение таблицы связей.

Таблица связей содержит в себе информацию о том, значения каких входов и выходов блоков связаны. При построении таблицы используются следующие объекты:

final Vector VectJoinTotal = new Vector(); //вектор для хранения переменных всей программы

final Vector VectJoinStr = new Vector(); //вектор для хранения параметров связи текущего

  // выражения

final Vector VectJoinIn = new Vector(); //вектор для хранения имени входного блока и

 //идентификатора текущего выражения

final Vector VectJoinOut = new Vector(); //вектор для хранения имени выходного блока и

    //идентификатора текущего выражения

Построение таблицы связей осуществляется путём внесения специальных выражений в синтаксис языка.

11.2. Обработка семантических ошибок.

Обработка семантических ошибок представляет собой прерывание программы и выдачи сообщений об ошибке при обнаружении несоответствия смыслового содержания выражения установленным правилам. Разработанным алгоритмом обрабатываются следующие ошибки: