Compiler Source Code:
The code is now split into the following parts:
oxygen
Oxygen main with dll exportable functions.
o2cmpl
compilation compatibility macros for freebasic compiling and self compiling.
o2assm
Assembler which translates assembly code into oxygen script.
o2keyw
Oxygen primary keywords, intrinstic macros and functions.
o2enco
Encoder: translate phrases to Assembler and o2
o2fini
Adds prolog and epilog code for Basic and headers for PE files.
o2link
The original oxygen machine code renderer / linker.
o2glob
Structures, constants,macros, global variables.
o2lexi
Lexing and parsing functions.
o2meta
Metacommands: evaluating constants and selecting code blocks
o2pars
Parsing: lower translation functions.
o2reso
PE file resources encoding (not operational yet).
o2runt
Runtime procedures used by compiled programs.
o2decl
Declarations dims enumerations.
o2expr
Expressions including operator precedence.
o2sema
Preprocessor / compiler translating high level code.
HIERARCHY:
Oxygen is the library level containing all the functions for compiling, linking and executing.
O2Sema performs the top level translation of Basic and macros into Assembly code.
O2Decl records types and classes, and maps dimmed variables.
O2Expr handles expressions including operator prececedence
O2Enco turns operators,operands and procedures into Assembly code.
O2Par parses, identifies and classifies words, also expanding macros.
O2Lex reads words, symbols and identifies lines and nested block structures.
Oxygen-->o2Sema-->o2Decl+o2Expr-->o2Enco-->o2Par-->o2Lex
COMPILING STAGES:
Basic and Macros are converted to Assembly code.
Prologs, epilogs, PE headers and sections are added.
Assembly code is converted to Oxygen script.
Oxygen script is converted to binary and linked.
The executable binary image is then (optionally compacted into a PE file.
o2Sema-->o2fini-->o2Assm-->o2Link-->(makeEXE/DLL)