Commit Graph

111 Commits

Author SHA1 Message Date
Nocturn9x a8bb212092 Updated copyright notices 2021-10-29 12:41:15 +02:00
Nocturn9x ce3fbe6ced Fixed bug that always parsed function bodies as empty blocks 2021-10-29 12:38:59 +02:00
Nocturn9x fd336b5761 Minor documentation change in the lexer 2021-10-29 12:35:47 +02:00
Nocturn9x d81948ed23 Significantly 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 2021-10-29 12:33:07 +02:00
Nocturn9x f80ac42101 Minor changes to error message for missing initializer in constant declaration 2021-10-29 10:51:27 +02:00
Nocturn9x d905f319b2 Ehnanced generator detection code 2021-10-29 10:34:07 +02:00
Nocturn9x 48087419b2 Improved error handling and parsing for try statements 2021-10-29 09:54:38 +02:00
Nocturn9x 73020fd48b Added exception handling parse handlers and slicing support 2021-10-28 15:48:23 +02:00
Nocturn9x dc7c6b5f6d Added parser support for the 'defer' keyword 2021-10-27 18:47:16 +02:00
nocturn9x 16f1ffb7d0 Added 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 2021-10-24 19:08:17 +02:00
Nocturn9x 151b8da0d5 Initial (semi-broken) support for await and yield statements/expressions. Minor changes to the lexer and grammar 2021-10-25 11:50:12 +02:00
Nocturn9x 74b8328bf7 Implemented yield expressions vs yield statements 2021-10-23 12:58:23 +02:00
Nocturn9x 7dc9ea17d5 Fixed assignment bug 2021-10-23 12:44:05 +02:00
Nocturn9x ef8a26492a Added checks for break and continue outside loops in the parser + some minor fixes/typos 2021-10-23 11:55:48 +02:00
Nocturn9x 8070803d05 Generalized errors and moved them to src/meta/errors.nim. Further work in the compiler 2021-10-23 11:48:52 +02:00
Nocturn9x 7237141ec1 Parser bugfixes + small changes in initializer methods for parser and compiler. Added generic error type for NimVM parsing exceptions 2021-10-23 09:12:05 +02:00
Nocturn9x 4ad34f30e4 Laid groundwork for the compiler 2021-10-23 09:00:16 +02:00
nocturn9x a2f9456de4 Removed support for the let keyword. Made the optimizer act in-place in most cases. Constant declarations now require initialization. Slight changes to main.nim due to changes in the optimizer 2021-10-16 17:50:31 +02:00
Nocturn9x 2e42e0fcb9 Slightly optimized constant folding of block statements 2021-10-15 15:46:27 +02:00
Nocturn9x 31c6f300fa Added constant folding for default arguments in function declarations 2021-10-15 15:33:12 +02:00
Nocturn9x 13efaa5e17 Added constant folding for string multiplication 2021-10-15 15:19:23 +02:00
Nocturn9x f2cc2d0ef4 Edited docstring for Lexer.error() 2021-10-05 10:15:10 +02:00
nocturn9x 69e20e4446 Made yield expressions more consistent and allowed them as default arguments in function declarations. Fixed parser bug with nil assignments and added a warning about dynamic const declarations in the optimizer 2021-10-04 14:01:21 +02:00
nocturn9x a9c09bd585 Optimizer now folds constants in function calls. Added constant folding for string addition 2021-10-01 10:06:02 +02:00
nocturn9x 7f8574cbba \r\n is no longer automatically converted to \n or \r on non-windows platforms 2021-10-01 09:47:00 +02:00
nocturn9x 4a06f9cbf2 Added LF conversion for darwin 2021-09-30 18:46:33 +02:00
nocturn9x e0701d8d9a Added missing bitwise operators to parser. Added missing string representation for singletons AST nodes. Improved and bugfixed optimizer 2021-09-28 18:07:08 +02:00
nocturn9x 3fcdb3ec0a Better over- and underflow handling in the optimizer 2021-09-27 19:33:37 +02:00
nocturn9x 63bbf63e3e More binary operation support for the optimizer 2021-09-27 19:29:45 +02:00
nocturn9x 6625eda5ee Started to work on the optimizer and added skeleton for utility module 2021-09-27 17:45:26 +02:00
nocturn9x 1dbc0bb81c Completely redesigned the AST structure: parsing is almost complete. Formal spec should be mostly fine as well 2021-09-26 16:26:36 +02:00
nocturn9x a2caa6214f Completely rewrote AST with a less flexible, but easier to read and understand design 2021-09-14 16:14:48 +02:00
nocturn9x 3b287aad7f Added 'yield' expression support 2021-09-14 16:12:48 +02:00
nocturn9x a11e5cfb11 Removed '!' token and fixed duplicate 'inf' entry in keywords table. Removed TokenType.Inf in favor of TokenType.Infinity and renamed TokenType.NaN to TokenType.NotANumber 2021-09-14 11:05:41 +02:00
nocturn9x 63e2912d81 Removed 'dynamic' keyword 2021-09-14 11:00:50 +02:00
nocturn9x f9ce99b3ff Removed most redundant fully-qualified enum names 2021-09-14 10:53:02 +02:00
nocturn9x 1042093eeb Typo (TokenType.Function -> TokenType.Fun) 2021-09-05 19:26:27 +02:00
nocturn9x 546de1dcb6 Finished all statements, updated grammar, done variable declaration, laid out class/fun/lambda 2021-09-05 19:25:36 +02:00
nocturn9x e6e8a271a5 Added for and while loops to parser 2021-09-02 09:28:02 +02:00
nocturn9x 45385b58a2 Moved parser and lexer to exception-based error handling. Fixed bug in the parser with mul (did not match '*'). Improved escape sequence support in lexer and fixed minor bugs. Also added format strings and improved string parsing 2021-08-24 19:16:28 +02:00
nocturn9x 6c6d8236c4 Reserved keyword foreach for future use and updates AST with previously added reserved keywords 2021-08-24 15:44:40 +02:00
nocturn9x 3a25803346 Added break, return, continue and import keywords 2021-08-24 15:30:50 +02:00
nocturn9x 00dda45e48 Added support for the dynamic keyword, reserved for future use 2021-08-24 15:14:16 +02:00
nocturn9x 15774586f8 Added dummy support for async/await keywords to reserve them for the future 2021-08-24 15:13:33 +02:00
nocturn9x 85004e24b6 Added block statements 2021-08-24 12:26:38 +02:00
nocturn9x d192d5e6b7 Removed capitalization from error messages. Added support for del and assert statements 2021-08-24 11:33:52 +02:00
nocturn9x 3f1c6077bc Added apache license and updated headers 2021-08-23 20:43:18 +02:00
nocturn9x c5f1f438b7 Added support for full scientific notation on floats + octal, binary and hex integer literals 2021-08-23 20:23:35 +02:00
nocturn9x 9bb1bc8462 Added more expressions to the parser 2021-08-21 15:04:46 +02:00
nocturn9x e1a6aea05c Added assert keyword and removed unused method 2021-08-21 15:03:27 +02:00
nocturn9x 1b4e8d6fab Added basic expressions to recursive descent parser 2021-08-20 18:47:30 +02:00
nocturn9x 5bf36e5f2d Removed and, or, not keywords 2021-08-20 18:41:37 +02:00
nocturn9x 0f9c388c60 Added and, or, not keywords 2021-08-20 18:40:16 +02:00
nocturn9x bc2bec05de Fixed self.check() 2021-08-20 18:27:49 +02:00
nocturn9x 32f375c40c Minor changes to the lexer 2021-08-20 18:14:22 +02:00
nocturn9x 66b6f4521a Fixed lexer bugs, removed struct keyword, added more keywords (class, import, from, async, raise) and triple-character tokens support 2021-08-19 15:57:49 +02:00
nocturn9x 099109daa6 Added support for FloorDiv (//) and removed redundant variable from Lexer.next() 2021-07-31 10:20:16 +02:00
nocturn9x eb538f9d4b Removed 'comment' token and added FloorDiv token 2021-07-31 10:19:39 +02:00
nocturn9x 925ad52293 Added escape sequence support for string literals, string prefixes, multi-line strings. Ditched multi-line comments and changed inline comment character to '#'. Updated grammar accordingly 2021-07-27 14:11:51 +02:00
nocturn9x 1262a77fb0 Improved lexer module + began to work on the parser 2021-07-18 16:21:34 +02:00
nocturn9x 26e1727e72 Updated src directory with new project structure 2021-07-13 16:10:08 +02:00