2024-11-16 15:06:38 -05:00

41 lines
1.2 KiB
Markdown

# 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.
// X: I hate it.
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.