Commit Graph

111 Commits

Author SHA1 Message Date
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 9babc75995 Fixed issues with some grammatical constructs, updated copyright year and minor changes to funDecl 2022-03-11 16:46:51 +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 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 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 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
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 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 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 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 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 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 93fdb6bd10 Statically resolved locals are now popped off the stack (whoops) 2021-11-17 21:14:41 +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 fa2e19583d Removed debugging echo statements 2021-11-16 15:50:01 +01:00
Nocturn9x 1515a53cd0 Initial support for global dynamic variable declarations 2021-11-16 15:46:55 +01:00
Nocturn9x 8c3b98f0c6 Added ownership field to declarations 2021-11-16 15:21:05 +01:00
Nocturn9x 3b08932403 Improved error handling for declarations inside functions 2021-11-16 13:32:12 +01:00
Nocturn9x 09766ab243 Added missing exports 2021-11-15 14:27:32 +01:00
Nocturn9x 8bac5fe657 Fixed typos, added more docs. Renamed Local in compiler.nim to a more generic Name. Removed 'raise' from main.nim 2021-11-15 14:26:31 +01:00
nocturn9x 44b52949e4 Fixed bug with collections 2021-11-13 20:47:46 +01:00
nocturn9x 1b3ae004bc Fixed crash when the input file is empty 2021-11-13 20:00:13 +01:00
nocturn9x 318e72b9e1 Compiler support for BuildList, BuildSet, BuildDict and BuildTuple 2021-11-13 19:48:17 +01:00
Nocturn9x 5f33af5b2c Updated copyright notices to include contributors to the project 2021-11-13 11:32:48 +01:00
Nocturn9x 5cc2a60c8c Fixed many bugs in the serializer and added (de)serialization output to main.nim 2021-11-12 17:47:11 +01:00
Nocturn9x afa4369321 Made the serializer follow the spec (the 3 byte header was missing) 2021-11-12 16:56:41 +01:00
Nocturn9x df67e7db64 Initial work for loadBytes and removed dumpBytes 2021-11-12 16:35:55 +01:00
Nocturn9x 3d4680e94d Updated bytecode spec to take singletons into account 2021-11-12 16:27:12 +01:00
Nocturn9x 3fde477de6 Added serialization for singletons and updated bytecode spec 2021-11-12 16:15:30 +01:00
Nocturn9x cdd529dbd0 Fixed some compiler bugs with emitting constants (bin/oct/hex), added string constants to literal() (whoopsie) and implemented basic serialization in Serializer.dumpBytes 2021-11-12 15:37:00 +01:00
Nocturn9x b252749d0e Added compiler support for collection literals 2021-11-12 14:20:14 +01:00
Nocturn9x 23fe444a9e Added binary operations in compiler. Minor changes to bytecode spec. Initial ground work on the serializer 2021-11-12 13:29:26 +01:00
Nocturn9x ac8b21f21b Added support for unary + for consistency, initial working compiler for unary operations and literals (the optimizer has been disabled to show the work of the compiler) 2021-11-12 11:52:35 +01:00
nocturn9x e249f0bf7b Further ground work in the compiler 2021-11-08 10:14:46 +01:00
nocturn9x 08f68f09df Added opcodes to build collection literals 2021-10-31 10:43:45 +01:00
nocturn9x 033aac50c2 Further initial work on the compiler + fixed some parsing bugs with unterminated collection literals. Added initial serializer module for bytecode caching to file. Made token objects value types 2021-10-31 10:43:02 +01:00
Nocturn9x 53741cb0df Started ground work for the compiler 2021-10-30 13:21:54 +02:00
Nocturn9x df59bc8f0d Fixed bug in the optimizer when folding exponentiation with negative exponents 2021-10-30 11:48:46 +02:00
Nocturn9x 125e41864f Fixed license headers (whoops), started working on bytecode chunks, removed empty modules. Added config.nim and debugger.nim from japl v1 to start merging the two projects together 2021-10-30 14:38:46 +02:00
Nocturn9x cce5047a61 Got rid of Parser.context attribute (using Parser.currentFunction now) and added basic docs on the Parser object 2021-10-29 19:51:09 +02:00