/* tree.h - definicje drzewa składni */

/* Typy drzew */
typedef enum {
             t_block, /* Dla bloku instrukcji */
             t_join,  /* Dla instrukcji wewnątrz bloku */
             t_if,    /* Dla instrukcji if */
             t_else,  /* Dla instrukcji zawartych w częściach else */
             t_assign,/* Dla przypisań */
             t_op,    /* Dla wyrażeń z operatorem */
             t_num,   /* Dla liczb */
             t_id,    /* Dla identyfikatorów */
} treetype;

typedef struct t {
  treetype type;
  int op;
  union {
    int numval;
    char *idval;
  } value;
  struct t *left;
  struct t *right;
} tree;

tree *mknum(int);
tree *mkid(char *);
tree *mknode(treetype, int, tree *, tree *);



