- and --help works now correctly too default tip

- now works properly (still debugging --help)

- having fun with version macros..

- added proper commandline interface with options. synergizes very nicely with named enums. :-) added a verbosity level which does nothing just yet

- even more rework

- a bit more refactoring, adjusted the main commandline interface

- major refactoring pretty much done, compiles now

- massive refactoring continues (doesn't compile yet)

- massive refactoring

- changed all source files to use my correct legal name instead of my calling name

- corrected more instances of "OPER_erand" and stuff like that

- OPER_erator -> operator. bleh.

- add macro to string

- expand the asserts into nothingness if not in a debug build

- refactor the string class

- check for arg count before printing the header so the header doesn't appear when displaying usage

- updated also lexerScanner with the new assert

- now with a smarter assert

- commence refactoring

- added the branch name to the first line of the generated gitinfo.h to trigger regeneration on branch switch

- only use the git description if it's available and if making a debug build, use short-form version number otherwise

- print the branch name onto the header if not master

- updated .gitignore

- renamed source files to camelCase

- doubled the buffer sizes of updaterevision to prevent GIT_BRANCH from being cut short and added GIT_BRANCH.

- reserved 'constexpr' as a keyword because I know I will need it someday

- added using statement for specifying the target zandronum version. will be used later

- reformatting... again

- fixed: array assignment operators pushed the bytecode parameters the wrong way around...

- now uses a variadic template formatter instead of a macro

- changed the PROPERTY macro to a simper version and brought some refactoring with it

- removed goto, it's evil

- extended refactor to EToken (now TokenType)

- added named enumerations to botc source, this should help with debugging

- refactored enums, macros split from Main.h to Macros.h

- implemented arrays, don't quite work 100% yet

- improved error handling a tad

- highly reworked variable support, variable declarations now are declared with 'var', uses are prefixed with '$', merged constant handling into variables

- minor changes: don't allow any token for labels, run ParseStatement from the next token

- removed tkAny as the default value of Lexer::MustGetNext to prevent problems like the one last commit fixed

- whoopsie, cannot allow garbage variable names there

- variables: merged const and mutable variables into one system, added constexpr variable support. still no locals

- removed some no longer needed debug stuff

- changed the syntax of funcdef to something sane

- loop structures now work again

- worked away some limitations

- ternary operator now works properly

- fixed verification with unary operators

- expression evaluation implemented! Expressions are now complete for the most part aside from some unary operator quirks in verification.

- Expression verification done

- now compiles again, further work on expressions (proper parsing + assignment operator handling (albeit unrelated) + operator adjusting)

- committed work so far done on expressions

- don't clear marks after merging them in...

- blargh. buffers weren't initialized properly

- reformatting

- further reformat

- merged object writer into parser

- use the Skulltag 97c2 license which is slightly differently worded

- removed simple_exception, that was stupid

- removed .hgignore

- added the public-domain updaterevision so I can have access to git stuff

- further lexer corrections

- forgot to rename these header guards when i ported the lexer from an earlier project of mine

- parser now processes commands.def properly

- added .gitignore

- various corrections

- removed bots.h

- renamed files to .cxx, restructured parser.cc

more rework

- *hot stuff coming through*

- major refactoring begins

- moved sources to src/, migrated to cmake

test

So it turns out that the functions I thought were taking float are actually taking int. So, with the only reason for float removed, the float type is removed as well. I'd rather have fixed point anyway.

Added constants, these are defined with const, take their value immediately and are replaced out with their value when used. The strlen operator can be used to get a string constant's length.

Some rework on variables

Good bunch of changes

Don't try to read expressions as statements. That yields nothing useful and inevidently bombs out anyway.

Fixed: parser allowed command calls with one too few arguments

- Fixed error display - peeking was pushing recorded `cursor` position out of sync

renamed to undefined labels, not unmarked labels...

goto is now allowed to reference labels that will get defined afterwards.

only print revision in version header if it's non-zero

Added support for continue-statements

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

Mainloop and onenter definitions are now written into separate buffers first and only written to file after state ends. Why? Zandronum seems to demand that mainloop definitions MUST be written right after any onenter one. This way, mainloop and onenter definitions can be written without this restriction in the script. Also now I have a cool uchar-buffer class :)

Fixed unary operators..

Variables can now be assigned values, unfortunately not at top level.

Forgot the actual new code files out of previous commit

(0) -120 tip

mercurial