Commit Graph

195 Commits

Author SHA1 Message Date
Nocturn9x ba9c8b4e56 Fixed parsing code in funDecl for arguments, fixed funDecl in compiler 2022-03-21 15:40:13 +01:00
Nocturn9x 1da75aed5c Empty VM module 2022-03-21 15:05:11 +01:00
Nocturn9x bfc2695771 Added type dispatching module 2022-03-21 15:04:59 +01:00
Nocturn9x 10df2d3c17 Initial work on the type system. Added ImplicitReturn bytecode optimization. Made checkDecl a template instead of a procedure 2022-03-21 15:04:45 +01:00
Nocturn9x 1afe2f2f47 Renamed pointr to p in memory/allocator.nim 2022-03-14 09:10:52 +01:00
Nocturn9x 13a6d71cfa Minor formatting and language changes to bytecode spec 2022-03-14 09:09:42 +01:00
Nocturn9x bfdfb73fc9 The else clause now must be located right after the last except clause in try blocks 2022-03-14 08:53:23 +01:00
Nocturn9x 9babc75995 Fixed issues with some grammatical constructs, updated copyright year and minor changes to funDecl 2022-03-11 16:46:51 +01:00
Nocturn9x 8e94891d37 Added implicit nil return from functions, JumpIfFalseOrPop opcode, error handling for overflowing collection literals, getStaticIndex now returns negative stack index for closed-over variables and variable() emits LoadHeap instructions for them 2022-03-10 17:56:21 +01:00
Nocturn9x 43f5cea905 Initial experimental work on function declarations. Minor formatting fixes 2022-02-15 11:22:56 +01:00
Nocturn9x 8ceea4e84f Initial dummy/template work on defer 2022-02-14 17:49:15 +01:00
Nocturn9x 28c6032458 Initial work on function and class declarations 2022-02-14 17:36:17 +01:00
Nocturn9x 65053b7a05 Updates to the bytecode spec. Started working a bit on the type system 2022-02-03 15:14:31 +01:00
Nocturn9x 6e2070899b Minor fixes to error reporting 2022-01-31 15:21:46 +01:00
Nocturn9x 8ed3cc7550 Fixed imports (whoops) 2022-01-31 15:18:06 +01:00
Nocturn9x 776a2241f7 Readded frontend 2022-01-31 15:14:26 +01:00
Nocturn9x a545341428 Swapped frontend and backend directories (wrong naming) 2022-01-31 15:14:08 +01:00
Nocturn9x 633c032601 Added Ctrl+E and Ctrl+A bindings 2022-01-31 15:10:53 +01:00
nocturn9x 29df939df3 Added some frontend stuff 2022-01-10 11:53:41 +01:00
nocturn9x 3df9bdc88f Removed debugging raise statement 2022-01-10 11:53:14 +01:00
nocturn9x 44cce0a380 Minor changes to the compiler 2022-01-07 10:57:15 +01:00
nocturn9x fec05a1291 Merge branch 'master' of 2022-01-06 16:53:50 +01:00
nocturn9x ef69de00fd Updated config.nim 2022-01-06 16:53:32 +01:00
nocturn9x fdfe87ad42 Fixed a bug in patchJump(). Added basic functionality for many keywords. Initial work on continue and break 2022-01-06 16:53:06 +01:00
Mattia 3b81831bc9
Update 2022-01-04 18:01:19 +01:00
Mattia 1670ff1518
Update 2022-01-04 17:57:42 +01:00
nocturn9x e5173435f5 Added del statement 2022-01-04 17:51:59 +01:00
nocturn9x 19df7e84a1 Added support for in-place operators, removed all inplace opcodes, renamed DeleteNameFast to DeleteFast and the Update* opcodes to Store*. Updated grammar accordingly 2021-12-30 16:03:40 +01:00
nocturn9x 6070d69d00 Integrated jale inside the test REPL for nicer behavior 2021-12-28 16:47:20 +01:00
nocturn9x cb34a22a53 Fixed a bug in the debugger when visualizing encoded dictionary elements and simplified dispatching code inside Compiler.expression() for literals 2021-12-28 16:37:30 +01:00
nocturn9x 71dfac87dd Minor QoL improvements to main.nim 2021-12-26 20:05:44 +01:00
nocturn9x 0a3d93512c Updated commit in config.nim 2021-12-22 17:22:27 +01:00
nocturn9x e234c8caaf Removed serialization for singletons as those are encoded as bytecode instructions (whoopsie), and updated the bytecode spec accordingly. Added minor QoL improvements to the parser/compiler REPL 2021-12-22 17:13:03 +01:00
nocturn9x 303a98b9e4 Removed leftover raise statements (whoops) 2021-12-22 16:23:18 +01:00
nocturn9x 44fdfe50a6 Updated commit in config.nim 2021-12-22 16:22:31 +01:00
nocturn9x bfacd24bce Fixed string serialization and reverted .escape() call in AST and Token string representation 2021-12-22 16:21:56 +01:00
Nocturn9x ed13304809 Began deserializing the constants table and the code section of bytecode files. Minor fixes to debugger and bytecode.nim 2021-12-17 17:54:22 +01:00
nocturn9x 195045e4f2 Minor additions and fixes (preparation for break and continue in the compiler) 2021-12-11 15:57:28 +01:00
Nocturn9x 302acbcaae Updated config.nim 2021-11-21 12:51:56 +01:00
Nocturn9x f90f732a66 Added control flow (if/else) and looping (for/while). Changed all *Fast instructions so they don't contain the word 'Name' anymore, as they work with stack offsets and that wording could cause confusion. Fixed bug in the parser that caused for loops to produce the wrong AST 2021-11-21 12:50:41 +01:00
Nocturn9x 12afed8419 Initial work on bytecode code section 2021-11-21 11:37:20 +01:00
Nocturn9x a1698ef892 Fixed wrong bytecode emission when compiling constants. Added a few more checks and made dynamic declarations illegal inside local scopes again (will change once closures are implemented) 2021-11-20 18:12:49 +01:00
Nocturn9x 690d4d364a Added a brief description of what JAPL adds on top of lox 2021-11-20 17:43:26 +01:00
Nocturn9x 2ab4bdc46d Added multiple inline exception support for except handlers and updated grammar accordingly. Added scopeDepth field to parser to keep track of local scopes and emit some errors about declarations. Added some more docs to bytecode instructions, fixed some issues with local scopes in the compiler and made dynamic declarations legal in functions. Added a flag for disabling compiler optimizations 2021-11-20 13:19:57 +01:00
Nocturn9x 9160cb32db Updated config.nim 2021-11-17 21:15:08 +01:00
Nocturn9x 93fdb6bd10 Statically resolved locals are now popped off the stack (whoops) 2021-11-17 21:14:41 +01:00
Nocturn9x 2582d18596 Updated config.nim 2021-11-17 20:42:56 +01:00
Nocturn9x 24c7b30271 Bugfixes to name resolution and scopes 2021-11-17 20:40:05 +01:00
Nocturn9x 352af30bee Added basic (untested) support for static and dynamic variable declarations. Minor fixes to main.nim 2021-11-17 19:05:03 +01:00
Nocturn9x 77224d707c Added encoding for collections 2021-11-17 12:10:22 +01:00