#ifndef ABSYN_HEADER
#define ABSYN_HEADER

/* C++ Abstract Syntax Interface generated by the BNF Converter.*/

/********************   TypeDef Section    ********************/
typedef int Integer;
typedef char Char;
typedef double Double;
typedef char* String;
typedef char* Ident;


/********************   Forward Declarations    ********************/

struct Exp_;
typedef struct Exp_ *Exp;


/********************   Abstract Syntax Classes    ********************/

struct Exp_
{
  enum { is_EAdd, is_ESub, is_EMul, is_EDiv, is_EInt } kind;
  union
  {
    struct { Exp exp_1, exp_2; } eadd_;
    struct { Exp exp_1, exp_2; } esub_;
    struct { Exp exp_1, exp_2; } emul_;
    struct { Exp exp_1, exp_2; } ediv_;
    struct { Integer integer_; } eint_;
  } u;
};

Exp make_EAdd(Exp p0, Exp p1);
Exp make_ESub(Exp p0, Exp p1);
Exp make_EMul(Exp p0, Exp p1);
Exp make_EDiv(Exp p0, Exp p1);
Exp make_EInt(Integer p0);



#endif
