#include
"
PrimaryExpression.h
"
static const CPrimaryExpression_VMT vmt = ... { CPrimaryExpression_Generate } ;
void CPrimaryExpression_Initialize(CPrimaryExpression * this )
... {
CExpression_Initialize((CExpression*)this);
((CExpression*)this)->vmt = (const CExpression_VMT*)&vmt;
}
void CPrimaryExpression_Generate(CPrimaryExpression * this , FILE * output)
... {
}
static const CPrimaryExpression_VMT vmt = ... { CPrimaryExpression_Generate } ;
void CPrimaryExpression_Initialize(CPrimaryExpression * this )
... {
CExpression_Initialize((CExpression*)this);
((CExpression*)this)->vmt = (const CExpression_VMT*)&vmt;
}
void CPrimaryExpression_Generate(CPrimaryExpression * this , FILE * output)
... {
}
#ifndef _STREXPRESSION_H
#define _STREXPRESSION_H
#include " PrimaryExpression.h "
typedef struct StrExpression_t CStrExpression;
typedef struct StrExpression_VMT ... {
void (*generate)(CStrExpression*, FILE*);
} CStrExpression_VMT;
struct StrExpression_t ... {
CPrimaryExpression super;
char *image;
} ;
extern void CStrExpression_Initialize(CStrExpression * , char * );
extern void CStrExpression_Generate(CStrExpression * , FILE * );
#endif
#define _STREXPRESSION_H
#include " PrimaryExpression.h "
typedef struct StrExpression_t CStrExpression;
typedef struct StrExpression_VMT ... {
void (*generate)(CStrExpression*, FILE*);
} CStrExpression_VMT;
struct StrExpression_t ... {
CPrimaryExpression super;
char *image;
} ;
extern void CStrExpression_Initialize(CStrExpression * , char * );
extern void CStrExpression_Generate(CStrExpression * , FILE * );
#endif
#ifndef _PRIMARY_EXPRESSION_H
#define _PRIMARY_EXPRESSION_H
#include " Expression.h "
typedef struct PrimaryExpression_t CPrimaryExpression;
typedef struct ... {
void (*generate)(CPrimaryExpression*, FILE*);
} CPrimaryExpression_VMT;
struct PrimaryExpression_t ... {
CExpression super;
} ;
extern void CPrimaryExpression_Initialize(CPrimaryExpression * );
extern void CPrimaryExpression_Generate(CPrimaryExpression * , FILE * );
#endif
#include
"
Expression.h
"
#include < stdlib.h >
#define SYMTAB_MAX 256
typedef struct Symtab_t Symtab;
struct Symtab_t ... {
char* name[SYMTAB_MAX];
CExpression* value[SYMTAB_MAX];
int count;
} ;
extern Symtab * create_symtab( void );
extern CExpression * search(Symtab * , char * );
extern int regist(Symtab * , char * , CExpression * );
#include < stdlib.h >
#define SYMTAB_MAX 256
typedef struct Symtab_t Symtab;
struct Symtab_t ... {
char* name[SYMTAB_MAX];
CExpression* value[SYMTAB_MAX];
int count;
} ;
extern Symtab * create_symtab( void );
extern CExpression * search(Symtab * , char * );
extern int regist(Symtab * , char * , CExpression * );
#include
"
symtab.h
"
#include " memory.h "
Symtab * create_symtab()
... {
Symtab *obj = (Symtab*)get_memory(sizeof(Symtab));
obj->count = 0;
return obj;
}
CExpression * search(Symtab * this , char * name)
... {
int i;
for(i=0; i<this->count; i++)...{
if (!strcmp(this->name[i], name))...{
return this->value[i];
}
}
return 0;
}
int regist(Symtab * this , char * name, CExpression * value)
... {
if(search(this, name))...{
return 0;
}
else...{
if (this->count < SYMTAB_MAX)...{
this->name[this->count] = name;
this->value[this->count] = value;
this->count++;
return 1;
}
else...{
fprintf(stderr,"Symtab is Overflow!!! ");
exit(-1);
}
}
return 0;
}
#include " memory.h "
Symtab * create_symtab()
... {
Symtab *obj = (Symtab*)get_memory(sizeof(Symtab));
obj->count = 0;
return obj;
}
CExpression * search(Symtab * this , char * name)
... {
int i;
for(i=0; i<this->count; i++)...{
if (!strcmp(this->name[i], name))...{
return this->value[i];
}
}
return 0;
}
int regist(Symtab * this , char * name, CExpression * value)
... {
if(search(this, name))...{
return 0;
}
else...{
if (this->count < SYMTAB_MAX)...{
this->name[this->count] = name;
this->value[this->count] = value;
this->count++;
return 1;
}
else...{
fprintf(stderr,"Symtab is Overflow!!! ");
exit(-1);
}
}
return 0;
}