#ifndef VSLC_H
#define VSLC_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdarg.h>


// Numbers and names for the types of syntax tree nodes
#include "nodetypes.h"

// Definition of the tree node type
#include "ir.h"

// Token definitions and other things from bison, needs def. of node type
#include "y.tab.h"

/* This is generated from the bison grammar, calls on the flex specification */
int yyerror ( const char *error );

/* These are defined in the parser generated by bison */
extern int yylineno;
extern int yylex ( void );
extern int yylex_destroy( void );
extern char yytext[];

/* Global state */
extern node_t *root;

/* Global routines, called from main in vslc.c */
void simplify_syntax_tree ( void );
void print_syntax_tree ( void );
void destroy_syntax_tree ( void );
#endif
