- More forced line breaks.
- Don't use extra parentheses in places where it can still be unambiguous
without them.
- Don't print the UserType for basic-types that aren't ZCC_UserType.
- Being able to omit optional function arguments is not such a nonsensical
thing after all. However, the previous grammar was still inadequate for
representing this in a useful way.
- Fixed: Trying to define a function without any parameters would silently
discard the function, because the declarator tested FuncParams instead
of FuncName to decide if it was a function.
- Fixed: state_call needs to enclose func_expr_list in LPAREN/RPAREN
itself, because func_expr_list doesn't include them. This means it also
needs a separate production to accept calls without a parameter list.
- The variable_name production now accepts an optional array size
argument. (Not yet passed to the AST.)
- The notation for using dotted ID lists as types has been changed from
[id1.id2] to .id1.id2, beacuse the former conflicts with the notation
for arrays.
- Changed Actor's Damage property into an actual function. All access to the damage property
must now be done through GetMissileDamage. actor->GetMissileDamage(0, 1) is equivalent
to the former actor->Damage, for the case where actor->Damage was not an expression. (I
suppose I will probably need to make a thunk for DECORATE expressions that want to read it.)
- Cleaned up some decorate expression evaluation functions that are no longer used.
SVN r3919 (scripting)
one name in its label. This avoids the alloca and security cookie calls.
- Consolidated lots of copy-pasted code in thingdef_expression.cpp to install helper functions
into FindDecorateBuiltinFunction().
SVN r3907 (scripting)
become ungodly slow when using mods with complex DECORATE. The GCC debug builds run just
fine, however. Hopefully this is something that can be fixed later with an assembly-optimized
version of the main VM loop, because I don't relish the thought of being stuck with GDB
for debugging.)
- Fixed: The ACS_Named* action specials were erroneously defined as taking strings instead of
names.
- Fixed: Copy-paste error caused FxMultiNameState::Emit to generate code that called
DecoNameToClass instead of DecoFindMultiNameState.
- Updated FxActionSpecialCall::Emit for named script specials.
- Fixed inverted asserts for FxMinusSign::Emit and FxUnaryNotBitwise::Emit.
SVN r3893 (scripting)
Maybe TODO: Find a simple LISP pretty printer that isn't written in LISP so that the output
isn't all on one big long line.
- zcc-parse.lemon now returns the complete AST through the parse state.
- Fixed crash in PrintEnumNode().
SVN r3773 (scripting)
function will pass its results directly to this function's caller. Eventually, this should
be changed to do a proper tail call for scripted functions.
SVN r3769 (scripting)
of the type declaration rather than split it up after the variable name.
- More AST work. At this rate, maybe I'll finally be building a complete AST by the end of the
month!
SVN r2499 (scripting)
me realize I would be better off creating a type-agnostic AST for the entire input instead
of trying to tentatively create types before they're seen.)
SVN r2354 (scripting)
running with the checked VM can be quite slow, since it has asserts everywhere. Some other
fixes were needed before the code actually worked:
- A_CallSpecial needs to have its arguments cast to ints.
- Some functions that set pnum/paramnum directly did not decrement it by 1. This also applies
to A_Jump, though it just uses the value of paramnum instead of changing it.
- Renamed pnum in the PARAM macros to paramnum, since pnum is already used in a few other
places for something different, so this makes searching for it easier.
This has not been tested especially thoroughly, but a first glance seems to indicate success.
SVN r2163 (scripting)
can actually be used. In the end, all temporaries should be assigned to
unique virtual registers, and a register allocator can alias them to real
registers, but as long as we don't do any CSE, this is good enough for now.
SVN r1920 (scripting)