//  File: emain.C
//
//  Using the ETree class

#include <stdio.h>
#include <stdlib.h>
#include "token.h"
#include "etree.h"

main() {
   token_t num, op ;
   ETree *root, *temp1, *temp2, *temp3 ;

   num.kind = NUMBER ;
   op.value = 0 ;

   num.value = 2 ;
   temp1 = new ETree(&num) ; 
   num.value = 3 ;
   temp2 = new ETree(&num) ;
   op.kind = PLUS ;
   temp3 = new ETree(&op, temp1, temp2) ;

   printf("temp3:\n") ;
   temp3->Inorder() ;
   printf(" = %d\n", temp3->Evaluate() ) ;

   num.value = 5 ;
   temp1 = new ETree(&num) ;
   op.kind = TIMES ;
   root = new ETree(&op, temp3, temp1) ;

   printf("\nroot:\n") ;
   root->Inorder() ;
   printf(" = %d\n", root->Evaluate() ) ;

   printf("\nExpression tree in postorder:\n") ;
   root->Postorder() ;
   printf("\n") ;

   printf("\nExpression tree in preorder:\n") ;
   root->Preorder() ;
   printf("\n") ;
}
