
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа2 / Tetrads
.h// Purpose: Определение типов данных для представление тетрад
//*****************************************************************************
#ifndef _TETRADES_H_
#define _TETRADES_H_
//-----------------------------------------------------------------------------
#include <string>
#include <vector>
//-----------------------------------------------------------------------------
// Операции промежуточного языка
enum TET_OPERATION
{
// объявление метки
TET_OP_DEF_LABEL,
// безусловный переход на метку
TET_OP_GOTO,
// условный переход, если аргумент равен нулю
TET_OP_GOTO_ZERO,
// Целочисленные операции
TET_OP_ADD,
TET_OP_SUBTRACT,
TET_OP_MULT,
TET_OP_DIV,
TET_OP_UMINUS,
// Операции с плавающей точкой
TET_OP_ADD_F,
TET_OP_SUBTRACT_F,
TET_OP_MULT_F,
TET_OP_DIV_F,
TET_OP_UMINUS_F,
// Целочисленное сравнение
TET_OP_REL_E,
TET_OP_REL_G,
TET_OP_REL_GE,
TET_OP_REL_NE,
TET_OP_REL_L,
TET_OP_REL_LE,
// Целочисленное сравнение
TET_OP_REL_E_F,
TET_OP_REL_G_F,
TET_OP_REL_GE_F,
TET_OP_REL_NE_F,
TET_OP_REL_L_F,
TET_OP_REL_LE_F,
// приведение целого к вещественному
TET_OP_ITOF,
TET_OP_CHAR_TO_STR,
// Логические операции
TET_OP_AND,
TET_OP_OR,
TET_OP_NOT,
// Операции присваивания
TET_OP_ASSIGN_INT,
TET_OP_ASSIGN_ENUM,
TET_OP_ASSIGN_FP,
TET_OP_ASSIGN_CH,
TET_OP_ASSIGN_STR,
TET_OP_ASSIGN_BOOL,
TET_OP_ASSIGN_STACK, // ???
// Операции ввода
TET_OP_READ_INT,
TET_OP_READ_REAL,
TET_OP_READ_CHAR,
TET_OP_READ_STR,
// Операции вывода
TET_OP_WRITE_INT,
TET_OP_WRITE_REAL,
TET_OP_WRITE_CHAR,
TET_OP_WRITE_STR,
TET_OP_WRITELN,
// Инкремент целого числа
TET_OP_INC_INT,
// Конкатенация строк
TET_OP_STR_CONCAT,
// Операции со стеком
TET_OP_STACK_PUSH,
TET_OP_STACK_POP,
TET_OP_STACK_TOP,
TET_OP_QUANTITY
};
//-----------------------------------------------------------------------------
#define TET_STRING_LEN 127
//-----------------------------------------------------------------------------
struct STetrad
{
TET_OPERATION operation;
std::string operand1;
std::string operand2;
std::string result;
//------------------------
STetrad(TET_OPERATION op, std::string op1, std::string op2, std::string res);
const char *OperationToStr();
void Print(char * pBuffer);
};
//-----------------------------------------------------------------------------
// Структура данных для хранения тетрад, назовём её по старой доброй традиции "потоком" :)
class CTetradStream
{
public:
typedef std::vector<STetrad> t_container;
typedef t_container::iterator iterator;
private:
t_container m_container;
public:
void Add(STetrad &tet) { m_container.push_back(tet); }
iterator begin() { return m_container.begin(); }
iterator end() { return m_container.end(); }
void clear() { m_container.clear(); }
};
//-----------------------------------------------------------------------------
#endif
Соседние файлы в папке Курсовая работа2