Commit Graph

134 Commits

Author SHA1 Message Date
cd6744ab65 Minor refactor, added vm.* library
- cosmoV_pushObj() has been added
- cbaselib.h has been cleaned up a bit
2021-01-25 15:04:16 -06:00
0be6e7dff1 Minor OP_NEWARRAY fix 2021-01-24 20:33:37 -06:00
336e57e269 Added basic control.md docs 2021-01-24 20:26:54 -06:00
e38e8f335f Added operator docs 2021-01-24 12:28:53 -06:00
c82a01c968 Minor refactoring, fixed 'or' and 'and' logical operators 2021-01-24 12:17:46 -06:00
e699005a74 Added datatype docs 2021-01-24 12:00:21 -06:00
fd1481fa43 Minor VM refactor + GC bug fix
The VM now respects metamethods from proto objects connected to tables. Also the CState is frozen while being instantiated.
2021-01-23 17:16:45 -06:00
0ad0df5fba Added '__tonumber' metamethod 2021-01-23 15:30:30 -06:00
7c92749e0d Added '__count' metamethod to objects 2021-01-22 15:22:30 -06:00
6b407534c0 basic docs 2021-01-20 23:29:05 -06:00
185e6027e7 whoops 2021-01-19 22:56:52 -06:00
71e9331551 Minor baselib.c refactor; added string.charAt() 2021-01-19 22:54:06 -06:00
d690c3040d Added hex and binary character encoding to strings
Use '\b' and '\x' to encode characters in strings!
2021-01-19 12:22:20 -06:00
c7116ab752 fix for one digit numbers 2021-01-18 21:54:31 -06:00
f8884c494c Added Hexadecimal encoding and binary encoding to numbers using '0x' and '0b' 2021-01-18 19:42:15 -06:00
85503025dd Added strings.cosmo example 2021-01-17 14:11:05 -06:00
3c19079262 Added string.split() & string.find() 2021-01-17 14:07:30 -06:00
2864c7be53 Minor refactoring, added OP_GETMETHOD
You can use ':' without invoking. So you can grab a method binding to an object and later call it. Also some GC bugs were fixed.

A new preprocessor macro (VM_DEBUG) has been added. Defining this macro will print each instruction thats being executed in the VM, as
well as print each call.
2021-01-16 15:40:58 -06:00
e995bb75fb added tonumber() and tostring() to base lib 2021-01-13 14:13:55 -06:00
8cd0112c48 fixed __getter and __setter tables 2021-01-12 18:27:29 -06:00
32162ce50c Updated examples and README to use proper syntax 2021-01-12 17:49:16 -06:00
ab86e19cfe Added ':' invoke operator
You're now forced to use ':' when calling a method on an object. Some of Lua's ideas really are just better in practice /shrug
2021-01-12 17:46:22 -06:00
c510c9aebf Minor table refactor, added cosmoV_compileString and loadstring() to baselib
cosmoV_compileString is recommended since it'll push the result (<error> or <closure>) onto the stack.

also, fixed some GC-related bugs, so yay!
2021-01-10 14:38:53 -06:00
8dc8cef7dc better increment test 2021-01-10 13:20:09 -06:00
f0b666f623 better README 2021-01-08 23:53:02 -06:00
aaa37c61d0 updated increment.cosmo example 2021-01-08 23:07:44 -06:00
75b571c09a Added table support to the parser
a new instruction, OP_NEWARRAY has been added. this instruction will create a table out of the uint16_t values on the stack, with incremental keys [0-(u16-1)]
2021-01-08 22:47:36 -06:00
824c0e89b9 Dictionaries -> Tables
Tables are going to become a more generic form of data storage. While objects will be "stateful", tables will remain static.

'{}' now refers to an object declaration, '[]' will be reserved for tables.
2021-01-08 14:37:36 -06:00
e57c194837 minor fix for OP_INVOKE 2021-01-07 20:04:42 -06:00
c5ee704317 optimized OP_INVOKE, embedded the identifier in the instruction 2021-01-07 20:02:19 -06:00
1351ff63b1 Added CObj->proto support, state->protoObjects defines default protos for each COBJ type
a lot of refactoring in the VM
2021-01-07 19:50:36 -06:00
c5bd0c2478 More performant OP_GETOBJECT & OP_SETOBJECT
constant indexes are now embedded in the instruction
2021-01-07 17:19:17 -06:00
ea4654cb6e fixed multiple assignments from function calls() 2021-01-06 01:26:42 -06:00
860f30f201 removed printStack() from cosmoB_pcall() 2021-01-05 22:46:04 -06:00
eb2f50e456 Added CObjError, cosmoV_throw(), pcall(), and cosmoV_printError()
Errors are now handled very differently, parser errors and VM errors are now treated the same.
When cosmoV_error is called, cosmoV_throw is also called, which formats the error object and sets the panic state.
state->error now points to the latest CObjError when state->panic is true. To get a nice formatted Objection message, use
cosmoV_printError() and pass the state->error. pcall() was added to the standard base library. When called, the first argument
passed is called with the subsequent arguments given. If the call completed successfully, `true`,`nil` is returned. However
when an error occurs during the call, `false`,`<error>` is returned. Simply print the `<error>` to retrieve the error string.
2021-01-05 22:27:59 -06:00
417a1f15f1 fixed multiple assignment 2021-01-05 17:05:49 -06:00
ec3552a155 organized flags 2021-01-04 16:20:05 -06:00
752bd533e9 Minor VM refactor, added cosmoV_pcall() 2021-01-04 16:04:38 -06:00
4e968529dc __tostring example added 2021-01-03 17:35:52 -06:00
adb2381b4f added __tostring IString, added expressionPrecedence() to cparse.c
additional minor refactoring
2021-01-03 17:33:10 -06:00
cb1d287c93 added type() to baselib 2021-01-02 14:33:11 -06:00
0b415ad49d addUpvalue() now checks for UInt overflows 2021-01-01 23:14:47 -06:00
7e9b61e018 minor refactor, fixed many warnings 2021-01-01 23:06:24 -06:00
bccabdebd7 Fixed OP_INCOBJECT to properly handle dicts
minor refactoring in OP_INCINDEX
2021-01-01 22:52:54 -06:00
c96b155412 better unary increment support for indexes & fields 2021-01-01 22:09:42 -06:00
be7a291ff2 added SAFE_STACK flag 2021-01-01 20:02:36 -06:00
509823e1bc detect stack overflows 2021-01-01 19:20: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
58485d9375 better iterator example 2020-12-31 13:57:02 -06:00
e253129e50 added string.sub() 2020-12-31 02:26:06 -06:00