8. Hash Preprocessor
The hash preprocessor parses and acts on lines
whose first non-whitespace character is #.
It includes support for conditional compilation,
file inclusion, and introduction of user defined
keywords, statements and expressions.
8.1. Conditional compilation
- #define
- #if
- #ifdef
- #ifndef
- #elif
- #else
- #endif
8.2. File inclusion
- #include
- #import
8.3. User defined Syntax
- #keyword
- #statement
- #nonterminal
- #infix
- #bracket
8.3.1. User defined Statements
8.3.2. User defined Operators
8.4. Tokens
$ ? ! ( ) [
] { } : , ;
+ - * / | &
< > = . % `
~ ^ # &< &> ==
!= <= >= << >> **
<: :> .. :: ++ --
+= -= *= /= %= ^=
|= &= ~= := -> =>
<- [< >] [| |] &&
|| \\& \\| \\^ #! <<=
>>= <-> &== &!= &<= &>=
... .-> --> =># #!/ all
assert axiom body call case caseno
cclass cfun class comment compound const
cparse cproc cstruct ctor ctypes def
do done elif else endcase endif
endmatch enum expect export for forget
fork functor fun gen goto halt
header ident include incomplete inf
in instance is inherit inline jump
lemma let loop lval macro module
namespace NaN new noinline nonterm noreturn
not obj open package pod private
proc property reduce ref rename requires
return struct then todo to typedef
type typeclass union use val var
virtual where when with yield _gc_pointer
_gc_type _svc _deref and as callback
code if isin match noexpand of
or parse regexp reglex regmatch the
typematch typecase whence unless _ expr
float_literal integer_literal string_literal