Интерпретация блок-схем

// переменной

};

struct CONSTANTA

{

unsigned char type;// тип константы

int __long_int; // константа типа long int

int __int; // константа типа int

char __char; // константа типа char

float __float; // константа типа float

double __double; // константа типа double

char* __string; // константа типа string

struct CONSTANTA* next;// указатель на следующий элемент таблицы

};

struct SVERTKA

{

unsigned char type; // тип свертки

unsigned char intype; // подтип свертки (номер операции, функции,

// процедуры в списке функций)

struct VARIABLE* variable;// если это не переменная то variable==NULL

// если переменной не существует в таблице

// переменных то variable == NULL

struct CONSTANTA* constanta;//указатель на таблицу констант

// если это не константа то constanta==NULL

// если такой константы не существует в таблице

// констант то constanta == NULL

struct SVERTKA* next; // указатель на следующий элемент свертки

int result; // счетчик числа операндов операции или функции

};

#endif

‘a’;

Переменная1;

сортировка1(x, y, z);

метка1;

“Переменная y=”,y;

“Переменная x=”,x;

a<=x && (x != f || f == z );

a=b*(c+d)-w;

f=g;

f, s, a;

метка1;

Int x,y,max;

x,y;

x<y;

max=y;

max=x;

“max=”,max;

конец

Входная программа

Поиск блока “начало”

Построение свертки текста блока

Проверка синтаксиса блока “начало”

Выделение памяти под переменные

Построение сверток всех блоков

Проверка синтаксиса блоков

Построение ПолИЗа

Установка связей между блоками

Проверка правильности связей

Трансляция и выполнение

Пошаговая трансляция

При переводе на вутренний язык тран-слятора сначала вы-полняется лексиче-ский анализ, а затем синтаксический

Этап семантического анализа

Входная программа

Сканер

Класс символов

L,T

4 2 3 1 0 -1

Формиро-вание кода ошибки

L-служебное слово ?

Занесение в таблицу имен

Занесение в таблицу констант

Формирование дескриптора

Конец входной программы ?

Конец

Синтаксический анализ

+

x

3

+

-

1. Выборка очередного символа из обратной польской записи

2.

S – операнд ?

3. CO[i]=S;

i=i+1;

4. S – знак операции ?

8.

конец ?

5. Определение минимального номера рабочей переменной

6. Выполнение подпрограммы формирования машинных команд

7. CO[i-k]=rl;

i=i-k+1;

j=l+1;

9. Занесение в таблицу ошибок.

10. i==2 &&

CO[l]= rl?

Выход

Входная программа

Анализ

Трансляция

Оптимизация

Программа на внутреннем языке

Анализ

Трансляция

Оптимизация

Программа на объектном (машинном) языке

Y

2

1

0 1 2 3 4

-3 -2 -1 0 X

-1

-2