IDENTIFIER [a-zA-Z][a-zA-Z0-9_]* FLOATLIT -?\d+\.\d+ INTLIT -?\d+ STRINGLIT "([^"\\]|\\[\s\S])*" LCOMMENT //.* BCOMMENT /\*[\s\S]*?\*/ INCLUDE #include .* DEFINE #define .* LTLTEQ <<= GTGTEQ >>= ARROW -> LTEQ <= GTEQ >= EQEQ == BANGEQ != PLUSEQ \+= MINUSEQ -= STAREQ \*= SLASHEQ /= PERCENTEQ %= AMPEQ &= CARATEQ \^= PIPEEQ \|= AMPAMP && BARBAR \|\| LTLT << TILDE ~ CARAT \^ COLON : SEMICOLON ; COMMA , PERIOD \. PLUS \+ MINUS - STAR \* SLASH / PERCENT % LT < GT > EQ = AMP & BAR \| BANG ! OBRACKET \[ CBRACKET ] OPAREN \( CPAREN \) S + NL \n