PreProcessor

There is no separate preprocessor pass.  The parser front-end calls Lex() which 
has the preprocessor built-in.  The compiler looks ahead a token, most of the 
time, so you might throw an extra semicolon after a directive if it's not taking 
affect right away.

Put an extra semicolon #exe {Cd("DirName");;} in case a #include follows.

#include ""     There is no angle bracket <> form of this directive.
#exe {}         Will execute code at compile-time and can be used to insert code 
into the stream being compiled using StreamPrint().
#define         Define string const
#assert         Print a warning during compilation if an expression is not true. 
#if             Include code if an expresion is true.
#else
#endif
#ifdef,#ifndef  Include code if a sym is defined.
#ifaot,#ifjit   Include code if in AOT compiler mode.
defined()       Is a function that can be used in expressions.
#help_index, #help_file See Help System.

See PreProcessor.