Renamed 'block stack' to scope stack for more clarified code..

Fixed: else was alloed even without if strictly preceding it

Added support for else-statements

Added support for the ternary operator.

Added floating point support for the most part. However, decimals are somehow lost during a cast..

Added support for operators &&, ||, &, | and ^

Added ! operator support. It's not really an operator since it's just checked at the beginning of the expression value but eh.

Added <<= and >>= operator support. Zandronum does not provide these, thus they are translated to their longer forms by the compiler. Also aded << and >>.

Added default label for switch

rename ObjWriter::RecordBuffer to SwitchBuffer, as it is designed specifically for switch and will break if used genericly

Added switch support... fixed more problems with marks in the process

some cleanup

Expressions now allow multiple operators

Removed mark types as they served absolutely zero purpose

Added do-while loop support

Added for-loop support

FINALLY, marks and references work smoothly without hacks. if and while work properly.

Added while loop support. However, script marks keep getting wrong position numbers..

Committed the other changes done during a failed attempt of else

Fixed mark positioning - multiple if statements should work properly now

Added if() support

Added mark/reference system to be able to refer to positions in the buffered bytecode. Labels and go-to support.

Parser can now read expressions 100% properly and can perform variable assignment. I'd call this a milestone!

Negative literal integers work properly now..

Expression parser mostly up and running!! Still work to do on it though.

Added a preprocessor with proper #include support. Macro support via #define is planned too. God, was it a B-I-T-C-H to get working right, though..

- The output cmd-line argument is now optional - one is generated from the input file if not given.

Lifted the ';'-after-events rule, though it can still be present. C++ allows it for functions, so this feels like the best solution regarding consistency.. I'm not even sure am I going overboard with this kind of stuff

Negative numbers are now considered numbers too...

Moved CharByte inside DataBuffer since that's where it belongs anyway.

Added comment support

Rid the qbyte type as I just use long everywhere anyway

(0) -50 -32 +32 +50 tip

mercurial