Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-04-28 | rebel-lang: typing: rename Coerce::Dynamic to Compare | Matthias Schiffer | |
Compare conveys what this Coercion mode is used for more accurately. | |||
2024-04-28 | rebel-lang: typing: Fix function call type checking to use Coerce::Assign | Matthias Schiffer | |
Apply the same rules to call parameters that are used for variable assignment. | |||
2024-04-28 | rebel-parse: grammar: order combined assignment operations | Matthias Schiffer | |
Test for more frequent operations earlier. | |||
2024-04-28 | rebel-parse: box expressions in statements | Matthias Schiffer | |
The size of the statement type has a noticeable effect on performance. | |||
2024-04-28 | rebel-parse, rebel-lang: rename Map types to Struct | Matthias Schiffer | |
As fields can have different types, calling this a struct is more appropriate, and it frees up the Map name for actual maps that support dynamic lookup and iteration. | |||
2024-04-28 | rebel-parse: add support for swapped-add-assign operator (`=+`) | Matthias Schiffer | |
2024-04-28 | rebel-lang: implement array subtraction | Matthias Schiffer | |
2024-04-28 | rebel-lang: add validation and typechecking benchmark | Matthias Schiffer | |
2024-04-28 | rebel-lang: scope: add Context::record_type() | Matthias Schiffer | |
Add a function for incrementally typechecking a list of statements, without actually evaluating it. | |||
2024-04-28 | rebel-lang: typing: fix Type::ast_stmt_type() parameter name | Matthias Schiffer | |
2024-04-28 | rebel-lang: repl: skip output for all Unit values, not just empty statements | Matthias Schiffer | |
2024-04-28 | rebel-lang: scope: make Module generic again | Matthias Schiffer | |
Even with the merged Contexts, we will need separate value and type namespaces. | |||
2024-04-28 | rebel-lang: scope: rename Context::run() to execute() | Matthias Schiffer | |
2024-04-28 | rebel-lang: repl: skip evaluation of empty statements | Matthias Schiffer | |
2024-04-28 | rebel-lang: typing: add support for typechecking body statements | Matthias Schiffer | |
2024-04-28 | rebel-parse: implement validation for statements | Matthias Schiffer | |
2024-04-28 | rebel-lang: repl: switch from rustyline to reedline | Matthias Schiffer | |
reedline has a nicer API than rustyline. | |||
2024-04-28 | rebel-parse: ast: add post-parse validation | Matthias Schiffer | |
2024-04-28 | rebel-lang: repl: add support for multiline input | Matthias Schiffer | |
Only multiline strings are supported, as the validator only checks if the token stream is valid, not if it is a valid expression. | |||
2024-04-28 | rebel-lang: context: typecheck interpolated expressions | Matthias Schiffer | |
2024-04-28 | rebel-lang: implement simple assignments for REPL | Matthias Schiffer | |
2024-04-28 | rebel-parse: allow expression and empty statements | Matthias Schiffer | |
2024-04-28 | rebel-lang: add type checking to REPL | Matthias Schiffer | |
2024-04-28 | rebel-lang: merge typing and evaluation Context structs | Matthias Schiffer | |
Avoid having to convert between different context types for typechecking and evaluation. During typechecking, upvalues etc. are represented as None values. | |||
2024-04-28 | rebel-lang: move code around to make following diff more readable | Matthias Schiffer | |
2024-04-28 | rebel-parse: tokenize: use positive list of allowed characters for punctuation | Matthias Schiffer | |
Speed up tokenization, and fixes treating incomplete strings' quotes as punctiation. | |||
2024-04-27 | rebel-lang: replace eval-string example with simple REPL | Matthias Schiffer | |
2024-04-27 | Update dependencies | Matthias Schiffer | |
2024-04-27 | rebel-parse: split combined assignment into assignment + binary op | Matthias Schiffer | |
2024-04-27 | rebel-lang: Remove Clone from Scope and Context | Matthias Schiffer | |
2024-04-27 | rebel-lang: new crate | Matthias Schiffer | |
Handle a lot of typechecking and evaluation of expressions. | |||
2024-04-26 | rebel-parse: shorten type names | Matthias Schiffer | |
Make the names match the in-language identifiers. Also, avoid having a String type conflicting with the std one. | |||
2024-04-26 | rebel-parse: ast: store string kind again | Matthias Schiffer | |
We need the kind after all, as different string kinds will need different escaping for interpolation. | |||
2024-04-26 | rebel-parse: tokenize: allow escaping '{' characters | Matthias Schiffer | |
2024-04-25 | rebel-parse: tokenize: allow whitespae in interpolated expressions | Matthias Schiffer | |
2024-04-25 | rebel-parse: parse-string: print "µs" instead of "us" | Matthias Schiffer | |
2024-04-25 | rebel-parse: tokenize: add support for string interpolation | Matthias Schiffer | |
2024-04-25 | rebel-parse: tokenize: handle escapes in regular strings | Matthias Schiffer | |
2024-04-25 | rebel-parse: token: represent string tokens as a Vec as well | Matthias Schiffer | |
2024-04-25 | rebel-parse: ast: represent strings as a Vec of pieces | Matthias Schiffer | |
Pieces can be characters, escapes, or interpolated subexpressions. | |||
2024-04-25 | rebel-parse: add support for !Copy tokens | Matthias Schiffer | |
2024-04-25 | rebel-parse: use git version of peg | Matthias Schiffer | |
Use the development version for now to take advantage of the latest performance improvements. | |||
2024-04-25 | Update dependencies | Matthias Schiffer | |
2024-04-25 | rebel-parse: ast: derive Eq for all types | Matthias Schiffer | |
2024-04-24 | rebel-parse: do not represent different string types in AST | Matthias Schiffer | |
2024-04-24 | rebel-parse: token: separate Number from String variants | Matthias Schiffer | |
2024-04-24 | rebel-parse: token: remove Ident struct | Matthias Schiffer | |
2024-04-23 | rebel-parse: use positional arguments for now | Matthias Schiffer | |
Keyword arguments need more design. | |||
2024-04-23 | rebel-parse: introduce method calls as an Expr variant | Matthias Schiffer | |
Methods and fields exist in separate namespaces. | |||
2024-04-22 | rebel-parse: add benchmark | Matthias Schiffer | |