 
        
        
          Добавил:
          
          
        
        
    
            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
          
      
    
    
    
          