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