Скачиваний:
11
Добавлен:
01.05.2014
Размер:
1.87 Кб
Скачать
#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