#ifndef __AST_H__
#define __AST_H__


typedef char variable;
typedef int number;

typedef struct tree_tag {
  int code;
  number num;
  variable var;
  struct tree_tag *left, *right, *third;
} * AST;

AST astseq   (AST s1, AST s2);
AST astlet   (variable v, AST e);
AST astfor   (AST e, AST s);
AST astif    (AST e, AST s1, AST s2);
AST astprint (AST e);
AST astnum   (number n);
AST astvar   (variable v);
AST astop    (int op, AST e1, AST e2);

void prologue ();
void astcompile (AST s);
void epilogue ();


#endif
