ba9c8b4e56Fixed parsing code in funDecl for arguments, fixed funDecl in compiler
master
Nocturn9x
2022-03-21 15:40:13 +0100
1da75aed5cEmpty VM module
Nocturn9x
2022-03-21 15:05:11 +0100
bfc2695771Added type dispatching module
Nocturn9x
2022-03-21 15:04:59 +0100
10df2d3c17Initial work on the type system. Added ImplicitReturn bytecode optimization. Made checkDecl a template instead of a procedure
Nocturn9x
2022-03-21 15:04:45 +0100
1afe2f2f47Renamed pointr to p in memory/allocator.nim
Nocturn9x
2022-03-14 09:10:52 +0100
13a6d71cfaMinor formatting and language changes to bytecode spec
Nocturn9x
2022-03-14 09:09:42 +0100
bfdfb73fc9The else clause now must be located right after the last except clause in try blocks
Nocturn9x
2022-03-14 08:53:23 +0100
9babc75995Fixed issues with some grammatical constructs, updated copyright year and minor changes to funDecl
Nocturn9x
2022-03-11 16:03:51 +0100
8e94891d37Added 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
Nocturn9x
2022-03-10 17:56:21 +0100
43f5cea905Initial experimental work on function declarations. Minor formatting fixes
Nocturn9x
2022-02-15 11:22:56 +0100
8ceea4e84fInitial dummy/template work on defer
Nocturn9x
2022-02-14 17:49:15 +0100
28c6032458Initial work on function and class declarations
Nocturn9x
2022-02-14 17:36:17 +0100
65053b7a05Updates to the bytecode spec. Started working a bit on the type system
Nocturn9x
2022-02-03 15:14:31 +0100
6e2070899bMinor fixes to error reporting
Nocturn9x
2022-01-31 15:21:46 +0100
fdfe87ad42Fixed a bug in patchJump(). Added basic functionality for many keywords. Initial work on continue and break
nocturn9x
2022-01-06 16:53:06 +0100
e5173435f5Added del statement
nocturn9x
2022-01-04 17:51:59 +0100
19df7e84a1Added support for in-place operators, removed all inplace opcodes, renamed DeleteNameFast to DeleteFast and the Update* opcodes to Store*. Updated grammar accordingly
nocturn9x
2021-12-30 16:03:29 +0100
6070d69d00Integrated jale inside the test REPL for nicer behavior
nocturn9x
2021-12-28 16:47:20 +0100
cb34a22a53Fixed a bug in the debugger when visualizing encoded dictionary elements and simplified dispatching code inside Compiler.expression() for literals
nocturn9x
2021-12-28 16:37:30 +0100
71dfac87ddMinor QoL improvements to main.nim
nocturn9x
2021-12-26 20:05:44 +0100
0a3d93512cUpdated commit in config.nim
nocturn9x
2021-12-22 17:22:27 +0100
e234c8caafRemoved 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
nocturn9x
2021-12-22 17:13:03 +0100
44fdfe50a6Updated commit in config.nim
nocturn9x
2021-12-22 16:22:31 +0100
bfacd24bceFixed string serialization and reverted .escape() call in AST and Token string representation
nocturn9x
2021-12-22 16:21:56 +0100
ed13304809Began deserializing the constants table and the code section of bytecode files. Minor fixes to debugger and bytecode.nim
Nocturn9x
2021-12-17 17:54:22 +0100
195045e4f2Minor additions and fixes (preparation for break and continue in the compiler)
nocturn9x
2021-12-11 15:57:28 +0100
f90f732a66Added 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
Nocturn9x
2021-11-21 12:50:41 +0100
12afed8419Initial work on bytecode code section
Nocturn9x
2021-11-21 11:37:20 +0100
a1698ef892Fixed 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)
Nocturn9x
2021-11-20 18:12:49 +0100
690d4d364aAdded a brief description of what JAPL adds on top of lox
Nocturn9x
2021-11-20 17:43:26 +0100
2ab4bdc46dAdded 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
Nocturn9x
2021-11-20 13:17:16 +0100
8bac5fe657Fixed typos, added more docs. Renamed Local in compiler.nim to a more generic Name. Removed 'raise' from main.nim
Nocturn9x
2021-11-15 14:26:31 +0100
44b52949e4Fixed bug with collections
nocturn9x
2021-11-13 20:47:46 +0100
1b3ae004bcFixed crash when the input file is empty
nocturn9x
2021-11-13 20:00:13 +0100
2d9260fc95Made the commit hash truncation 1 byte longer for consistency with JAPL's help message
nocturn9x
2021-11-13 19:50:18 +0100
087443c7f9Removed 'raise' statement from loop
nocturn9x
2021-11-13 19:48:38 +0100
318e72b9e1Compiler support for BuildList, BuildSet, BuildDict and BuildTuple
nocturn9x
2021-11-13 19:48:17 +0100
15a2403120Quality of life improvements and untested support for debugging the new BuildList/Set/Tuple/Dict instructions
nocturn9x
2021-11-13 19:47:59 +0100
4f400d7aabChanged all references of NimVM to JAPL's
nocturn9x
2021-11-13 19:47:22 +0100
5f33af5b2cUpdated copyright notices to include contributors to the project
Nocturn9x
2021-11-13 11:32:48 +0100
5cc2a60c8cFixed many bugs in the serializer and added (de)serialization output to main.nim
Nocturn9x
2021-11-12 17:47:11 +0100
afa4369321Made the serializer follow the spec (the 3 byte header was missing)
Nocturn9x
2021-11-12 16:56:41 +0100
df67e7db64Initial work for loadBytes and removed dumpBytes
Nocturn9x
2021-11-12 16:35:55 +0100
3d4680e94dUpdated bytecode spec to take singletons into account
Nocturn9x
2021-11-12 16:27:12 +0100
3fde477de6Added serialization for singletons and updated bytecode spec
Nocturn9x
2021-11-12 16:15:18 +0100
cdd529dbd0Fixed some compiler bugs with emitting constants (bin/oct/hex), added string constants to literal() (whoopsie) and implemented basic serialization in Serializer.dumpBytes
Nocturn9x
2021-11-12 15:37:00 +0100
b252749d0eAdded compiler support for collection literals
Nocturn9x
2021-11-12 14:19:58 +0100
23fe444a9eAdded binary operations in compiler. Minor changes to bytecode spec. Initial ground work on the serializer
Nocturn9x
2021-11-12 13:29:13 +0100
ac8b21f21bAdded 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)
Nocturn9x
2021-11-12 11:52:35 +0100
e249f0bf7bFurther ground work in the compiler
nocturn9x
2021-11-08 10:14:46 +0100
08f68f09dfAdded opcodes to build collection literals
nocturn9x
2021-10-31 10:43:45 +0100
033aac50c2Further 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
nocturn9x
2021-10-31 10:41:42 +0100
53741cb0dfStarted ground work for the compiler
Nocturn9x
2021-10-30 13:21:54 +0200
df59bc8f0dFixed bug in the optimizer when folding exponentiation with negative exponents
Nocturn9x
2021-10-30 11:48:46 +0200
125e41864fFixed 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
Nocturn9x
2021-10-30 14:38:46 +0200
cce5047a61Got rid of Parser.context attribute (using Parser.currentFunction now) and added basic docs on the Parser object
Nocturn9x
2021-10-29 19:51:09 +0200
ce3fbe6cedFixed bug that always parsed function bodies as empty blocks
Nocturn9x
2021-10-29 12:38:59 +0200
fd336b5761Minor documentation change in the lexer
Nocturn9x
2021-10-29 12:35:47 +0200
d81948ed23Significantly improved generator/coroutine detection in the parser, extending it to all expressions variants. Fixed a bug where the lexer would spin up an infinite loop with unterminated string literals
Nocturn9x
2021-10-29 12:33:07 +0200
759c4a4214Updared grammar for try statement
Nocturn9x
2021-10-29 11:47:18 +0200
f80ac42101Minor changes to error message for missing initializer in constant declaration
Nocturn9x
2021-10-29 10:51:27 +0200
48087419b2Improved error handling and parsing for try statements
Nocturn9x
2021-10-29 09:54:38 +0200
73020fd48bAdded exception handling parse handlers and slicing support
Nocturn9x
2021-10-28 15:48:23 +0200
c1a0ecca91Minor reordering and numerous small fixes to grammar. Added try/except/finally/else syntax
Nocturn9x
2021-10-28 09:57:03 +0200
dc7c6b5f6dAdded parser support for the 'defer' keyword
Nocturn9x
2021-10-27 18:47:16 +0200
16f1ffb7d0Added lambda functions as expressions. Added 'as', 'is' and 'of' binary operators. Added collection literals. Renamed isLiteral to isConstant to better reflect usage. Added isLiteral for all literals, including collections. Fixed some edge cases with nested function scopes. Simplified some representation of AST nodes
nocturn9x
2021-10-24 19:08:17 +0200
e6dbc3cad6Added 'is', 'as' and 'of'
nocturn9x
2021-10-24 17:01:03 +0200
d0a252e13cFixed assignment expression, made lambda an expression
nocturn9x
2021-10-24 16:39:12 +0200
151b8da0d5Initial (semi-broken) support for await and yield statements/expressions. Minor changes to the lexer and grammar
Nocturn9x
2021-10-25 11:50:12 +0200
74b8328bf7Implemented yield expressions vs yield statements
Nocturn9x
2021-10-23 12:51:30 +0200