#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE true
#define FALSE false
// A consistent approach to error reporting is adopted and it involves
// specifying error severity and an appropriate message. errorKind
// describes the four severiy levels. Message strings may be
// constructed dynamically and follows the formatted printf() string
// specification.
enum errorKind {WARNING, ERROR, ABORT, INTERNAL};
void error(errorKind, char *, ...);
// For example, a severe error without recovery options might be the
// failure to open the input specification file. This can be specified
// as:
// error(ABORT, "Cannot open specification file '%s'", argv[1]);
// Each error reported increments an error count and may be interrogated
// via the funciton errorsFound(). As in most compilers, the presence
// of errors disables further processing, eg code generation.
int errorsFound();
// Heap memory is allocated via a consistent interface function
// allocate() by specifying the heap size required. Processing
// is aborted if there is insufficient free memory space.
char* allocate(int);
syntax highlighted by Code2HTML, v. 0.9.1