Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа2 / Attributes
.h#ifndef _ATTRIBUTES_H_
#define _ATTRIBUTES_H_
//-----------------------------------------------------------------------------
#include "Types.h"
#include "Tokens.h"
#include <string>
//-----------------------------------------------------------------------------
#define INTERNAL_NAME_LEN 15
//-----------------------------------------------------------------------------
// Набор атрибутов, хранящихся в магазинном символе
// Будем представлять как запись с вариантами
// Не очень эффективно с точки зрения потребления памяти, но зато просто
union SAttrSet
{
// для представления типов
struct
{
TYPES T;
} SType;
// Для представления атрибутов выражений
struct
{
TYPES type;
char name[INTERNAL_NAME_LEN+1];
// Если выражение содержит только константы и литералы, то оно константное
// и может быть использовано для инициализации констант
bool bConst; // выражение константное ?
} SExpr;
// Для сверток к ExprRelation
ENUM_TOKEN_VAL Operation;
// Для магазинных символов, представляющих токены
CToken *pToken;
// Для if () then ...
char label[INTERNAL_NAME_LEN+1];
// Для цикла for
struct
{
char LabBegin [INTERNAL_NAME_LEN+1]; // метка начала цикла
char LabEnd [INTERNAL_NAME_LEN+1]; // метка конца цикла
char VarName [INTERNAL_NAME_LEN+1]; // имя переменная цикла
char LastName [INTERNAL_NAME_LEN+1]; // конечное значение переменной цикла
} For;
struct
{
char LabBegin [INTERNAL_NAME_LEN+1]; // метка начала цикла
char LabEnd [INTERNAL_NAME_LEN+1]; // метка конца цикла
} While;
};
//-----------------------------------------------------------------------------
#endif
Соседние файлы в папке Курсовая работа2