Throw a TypeError if the extends expression does not evaluate to a Class
If the extends expression does not evaluate to a Class, it should throw a TypeError. Currently slash tries to access the extens expression as a Class whitout checking it first, which leads to undefined behaviour (usually resulting in a segmentation fault).
Fix segfault when calling Error.throw on x86-32
Slash produces a segfault when executing "Error.new.throw" on 32-bit systems. The problem is that sl_throw has no return value (void) but gets called as if it would return a SLVAL. The address of the return value is then added by the caller before the other parameters and if that happens, the "vm"-parameter contains the address to uninitialized SLVAL of the caller - which is of course invalid. This fix solves the problem by just wrapping the sl_throw call in a function with a matching function signature. That way the return value is "pop"-ed before the parameters. This problem does not appear on 64-bit systems because the return value has a dedicated register and does not "get in the way" of the other parameters.
String#lower and String#upper incorrectly assumed that casefolded unicode characters would have the same byte length when represented as UTF-8.
Support floats without a leading zero
Add --help option to slash-sli
Remove unneeded keyword lookahead
Flex automatically selects the longest matching regex