#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)...{ } #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 #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 256typedef 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;}