Commit Graph

28 Commits

Author SHA1 Message Date
db8ed21746 fixed typo in 'break' and 'continue' err. msg 2020-12-24 13:55:27 -06:00
a408353c25 added "break" and "continue" statements
a LoopState was added to the CCompilerState struct which keeps track of breaks, start chunk index, and the start scope of the active loop.
Also, break.cosmo was added to the examples directory, 'continue' and 'break' work as expected.
2020-12-24 00:41:00 -06:00
f6aaeb3417 fixed typos 2020-12-19 13:32:43 -06:00
eede892eb0 made OP_ITER and OP_NEXT use CObjMethods 2020-12-16 03:51:50 -06:00
e5eca7bed6 Added iterable objects
__iter and __next are now reserved IStrings, OP_NEXT and OP_ITER have also been added. A new token (TOKEN_IN) has been added to the lexer. The parser now supports the for each loop (for i, ... in <object> do ... end).
savedPushed has been removed from the CCompilerState struct.
2020-12-15 21:21:51 -06:00
4f3f594b82 added multiple return value support to the parser 2020-12-14 14:38:46 -06:00
48ceca1834 multiple return value support added to VM 2020-12-12 21:53:12 -06:00
181ef8a18c Added dictionaries {}
Objects are now separate from {} dictionaries

the . operator now only indexes fields on objects, the [] operator can only be used on objects if the __index or __newindex functions are defined

Additionally 4 new instructions have been added to the VM: OP_NEWDICT, OP_INDEX, OP_INCINDEX, and OP_NEWINDEX.

The syntax to create a dictionary is as follows { <key> : <value>, <otherkey> : <othervalue> } eg. { "hello" : "world", "foo" : 1337 }

The Lexer & Parser was extended to add the TOKEN_COLON ':' token.
2020-12-09 20:32:42 -06:00
6445dae04c added module names for functions 2020-12-09 12:23:16 -06:00
9aa7fa1381 replaced facttest.lua with fibtest.lua
Optimized the NaN box to be byte aligned, performance under the fibtest.lua script improved by ~2.5 seconds (~31 before ~28.5 after on cpunch's machine)
also cleaned up some misc. comments
2020-12-07 23:26:55 -06:00
9ca67c8408 changed class -> proto 2020-12-05 17:58:56 -06:00
08c640cd58 added # operator, improved error messages 2020-11-30 12:32:04 -06:00
9dcd1c909a fixed needless pop in _main chunk 2020-11-27 19:42:00 -06:00
e784933517 fixed lexer errors 2020-11-26 12:54:45 -06:00
0745fd10a9 extended lexer, fixed table shrinking 2020-11-25 23:34:02 -06:00
85e7deae7b better support for OP_INCOBJECT 2020-11-20 14:50:43 -06:00
46b99ab390 minor refactoring, added inc and dec operators 2020-11-19 14:41:21 -06:00
3727d6bb7c OP_NEWOBJECT uses long operand 2020-11-18 14:35:58 -06:00
9ebae876f6 minor refactoring, OP_INVOKE performance boost 2020-11-13 17:39:47 -06:00
08b6dcbf4c CObjMethod refactor 2020-11-12 23:04:09 -06:00
93130ede65 fixed another stack error 2020-11-12 16:23:56 -06:00
65662e94f2 fixed stack error 2020-11-11 23:10:53 -06:00
c42a72dfad Major refactoring, added classes, many bug fixes 2020-11-09 19:44:12 -06:00
aa975b7330 minor refactoring + non-zero int fixed 2020-11-05 19:53:55 -06:00
4cd5c89d28 extended lexer to support 'this' 2020-11-05 18:43:21 -06:00
e1d33855c3 added basic objects 2020-11-03 22:10:51 -06:00
8e71cab642 fixed segfault on parser objection 2020-10-28 18:29:50 -05:00
2e1b745624 Initial commit 2020-10-28 00:16:30 -05:00