# Source files ## main.c Responsible for dispatching initialization, deinitialization and the compiler. Only deals with the highest level of abstractions and kept clean. ## eaxhla.l|y|c|h Flex/Bison scanner/parser respectively. The C source contains definitions which store the abstract state and or required to construct it `eaxhla.l` is strictly limited to raising errors which sabotage scanning. (Unterminated/partial tokens.) `eaxhla.y` is strictly limited to raising syntax errors. `eaxhla.c` is strictly limited to raising logical errors ## compile.c|h Responsible for transforming the abstract state of eaxhla.c to something that can be understood by the assembler, dispatching it and creating the executable. ## assembler.c|h Creates machine code from an array of tokens. ## debug.h Defines various debug output functions or nop alternatives for them in non-debug builds. Must be kept in symmetrical ballance regarding `#if DEBUG ==` `1` and `!1` # Builds We like Gnu Make. Debug builds might be create by defining `DEBUG` as 1. The Makefile respects `DEBUG` in the environment. Some default values are determined as appropriate for the compiling system.