13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef SCommonAST_h 23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define SCommonAST_h 33eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 43eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include <stdio.h> 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "PCCTSAST.h" 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "SASTBase.h" 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* If you use SORCERER alone, you can subclass this to get a nice tree def */ 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangclass SORCommonAST : public SORASTBase { 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangprotected: 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SORCommonAST *_right, *_down; 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang int _type; 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangpublic: 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang SORCommonAST() { _right = _down = NULL; } 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PCCTS_AST *right() { return _right; } // define the SORCERER interface 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PCCTS_AST *down() { return _down; } 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang int type() { return _type; } 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang void setRight(PCCTS_AST *t) { _right = (SORCommonAST *)t; } 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang void setDown(PCCTS_AST *t) { _down = (SORCommonAST *)t; } 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang void setType(int t) { _type = t; } 233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang virtual PCCTS_AST *shallowCopy() {return NULL;} 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}; 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif 27