#ifndef GRAM_H #define GRAM_H #include #include #include using namespace std; typedef vector strings; enum gram_type { TYPE_INT,TYPE_LIST}; struct gram_t { strings res; string var; string s; int val; gram_type type; /*~PROTOBEG~ gram_t */ public: gram_t concat (const gram_t&v)const; gram_t func (const string&name, gram_t *arg); gram_t (const gram_t&c); gram_t (void); gram_t operator & (const gram_t&v)const; gram_t operator + (const gram_t&v)const; gram_t operator - (const gram_t&v)const; void operator = (const gram_t&c); gram_t operator ^ (const gram_t&v)const; void print (void); /*~PROTOEND~ gram_t */ }; void gram_setvar (const char *v, const strings &vals); void gram_setvar (const char *v, const char *val); int gram_getvars(strings &vars); gram_t *gram_getvar (const char *var); gram_t *gram_eval (const char *line, string &error); #endif