Commit Graph

20 Commits

Author SHA1 Message Date
75d27afe2c WIP: major error handling refactoring
switching to setjmp instead of the really bad global 'panic' flag
2023-08-28 21:13:00 -05:00
155e0829fb minor refactoring 2023-06-03 01:39:35 -05:00
8ac8085d20 syntax: 'var'->'let' 'function'->'func'
- 'var' has some weird scoping connotations with users of JS. better to change it to 'let', which will decide whether to make the variable a local or a global
- 'func' looks visually appealing lol
- some minor refactoring done in cparse.c
2023-02-09 15:58:25 -06:00
6056f8eb5b added clang-format 2023-02-09 12:32:48 -06:00
1539a7e676 Added power operator '^', added OP_POW
- added TOKEN_CARROT to clex.[ch]
2021-02-10 17:26:20 -06:00
f8884c494c Added Hexadecimal encoding and binary encoding to numbers using '0x' and '0b' 2021-01-18 19:42:15 -06:00
7e9b61e018 minor refactor, fixed many warnings 2021-01-01 23:06:24 -06:00
84f7895684 Added modulo operator '%'
- added OP_MOD, which performs a modulo operation on the 2 <number> values on the stack. Pops the 2 values and pushes the result.
- also added TOKEN_PERCENT to the lexer, and extended binary() in cparse.c to support it.
2021-01-01 00:47:15 -06:00
090cc62cce Added variadic functions
TOKEN_DOT_DOT_DOT was added to the lexer
variadic.cosmo was added to the examples directory
2020-12-26 22:01:22 -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
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
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
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
fe2bcf8ae6 fixed GC bug, extended strings 2020-11-27 19:34:54 -06:00
0745fd10a9 extended lexer, fixed table shrinking 2020-11-25 23:34:02 -06:00
46b99ab390 minor refactoring, added inc and dec operators 2020-11-19 14:41:21 -06:00
c42a72dfad Major refactoring, added classes, many bug fixes 2020-11-09 19:44:12 -06:00
4cd5c89d28 extended lexer to support 'this' 2020-11-05 18:43:21 -06:00
2e1b745624 Initial commit 2020-10-28 00:16:30 -05:00