unsigned char Translation2(void);//второй этап трансляции//Ok
unsigned char Translation3(void);//Третий этап трансляции
struct BLOCK* BpFunction(struct BLOCK*);//выполнение связки БП//Ok
float Trigonometria(struct SVERTKA*,int&);
// обработчик тригонометрических функций//Ok
struct SVERTKA* NewSvertka(int&,unsigned char,unsigned char);
// построение новой свертки//Ok
// функции поиска блока
struct BLOCK *Poisk(struct BLOCK *);// поиск блока по адресу//Ok
struct BLOCK *Poisk(int,int);// поиск блока по заданным координатам//Ok
struct BLOCK *Poisk(unsigned int);// поиск блока по типу блока//Ok
// функции создания, добавления, вырезания и удаления блока из схемы
void Add(struct BLOCK*);//добавить блок к схеме//Ok
struct BLOCK *Create(unsigned int,int,int,int,int,int,int,char *);
// создать блок по параметрам//Ok
struct BLOCK* Cut(struct BLOCK* );//вырезать блок из схемы//Ok
void DelBlock(struct BLOCK* );//удалить блок из схемы по адресу//Ok
void DelBlock(int ,int );//удалить блок из схемы по координатам//Ok
// функции для работы с буфером обмена блоков схемы
void CopyBuffer(struct BLOCK*);//скопировать блок в буфер обмена
//по адресу//Ok
void CopyBuffer(int x,int y);//скопировать блок в буфер обмена
//по заданным координатам//Ok
void CutBuffer(struct BLOCK*);//вырезать блок из схемы и занести
//в буффер обмена по адресу //Ok
void CutBuffer(int x, int y);//вырезать блок из схемы и занести
//в буффер обмена по координатам //Ok
void PasteFromBuffer(int, int);//добавить блок в схему в позицию x,y/Ok
// функции вычисления размеров планшета(минимальных)
void SizeOfPlanhet( void );//Ok
// Функции алгоритма Ли
void AddNumber(int*,int,int,int,int,int);//добавить число//Ok
int Maximum(int*,int,int,int,int);//найти максимум//Ok
float Rastoanie(int,int,int,int);//Вычислить расстояние//Ok
void Index(int*,int,int,int,int,int,int,int,int &,int &);//Определение
//индекса//Ok
bool Algoritm(int*,int,int,int,int,int,int);//Алгоритм//Ok
int* MatrLee( int&,int&,int,int,int,int);// построение матрицы//Ok
bool StartLee(int,int,int,int);//стартовая функция Ли//Ok
// деструкторы
~ClassScheme();
};
#endif
Файл объявления основных структур программы:
Файл описание основных структур используемых интерпретатором
языка блок-схем Basic Block for Windows 95 ver 2.0.
Copyright(c) 1998, Соловьев А.С. 1998/1999 гг.
#ifndef __STRUCT_FILE
#define __STRUCT_FILE
struct NameOfVar
{
char* name;
struct NameOfVar* next;
};
struct Rects
{
int Left;
int Top;
int Right;
int Bottom;
};
struct BLOCK
{
unsigned int type; // тип блока
int x; // координата блока по оси x
int y; // координата блока по оси y
char *text; // текст блока
int true_x; // переход по ИСТИНЕ по оси x на планшете
int true_y; // переход по ИСТИНЕ по оси y на планшете
int false_x;// переход по ЛЖИ по оси x на планшете
int false_y;// переход по ЛЖИ по оси y на планшете
struct BLOCK *next; // указатель на следующий элемент схемы
bool StopRun;// прнизнак точки входа в программу
bool ErrorFlag;// признак наличия ошибок в данном блоке
bool RunBlock;// признак выполнимого блока в текущий момент
struct SVERTKA* Poliz;// полиз текста блока с учетом свертки
};
struct VARIABLE
{
AnsiString Hint; // подсказка при индексации
char* name; // имя переменной
char type; // тип переменной
unsigned int Size; // размерность массива если Size == 0,
// то это переменная
unsigned int* SizeN; // массив значений размерностей,
// если это переменная то SizeN == NULL
char* ready; // признак готовности к работе переменной
int* __int; // значение переменной типа int
long int* __long_int; // значение переменной типа long int
char* __char; // значение переменной типа char
float* __float; // значение переменной типа float
double* __double; // значение переменной типа double
struct VARIABLE* next;// указатель на следующий элемент таблицы
// переменной
};
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