summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-04-28rebel-lang: typing: rename Coerce::Dynamic to CompareMatthias Schiffer
Compare conveys what this Coercion mode is used for more accurately.
2024-04-28rebel-lang: typing: Fix function call type checking to use Coerce::AssignMatthias Schiffer
Apply the same rules to call parameters that are used for variable assignment.
2024-04-28rebel-parse: grammar: order combined assignment operationsMatthias Schiffer
Test for more frequent operations earlier.
2024-04-28rebel-parse: box expressions in statementsMatthias Schiffer
The size of the statement type has a noticeable effect on performance.
2024-04-28rebel-parse, rebel-lang: rename Map types to StructMatthias 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-28rebel-parse: add support for swapped-add-assign operator (`=+`)Matthias Schiffer
2024-04-28rebel-lang: implement array subtractionMatthias Schiffer
2024-04-28rebel-lang: add validation and typechecking benchmarkMatthias Schiffer
2024-04-28rebel-lang: scope: add Context::record_type()Matthias Schiffer
Add a function for incrementally typechecking a list of statements, without actually evaluating it.
2024-04-28rebel-lang: typing: fix Type::ast_stmt_type() parameter nameMatthias Schiffer
2024-04-28rebel-lang: repl: skip output for all Unit values, not just empty statementsMatthias Schiffer
2024-04-28rebel-lang: scope: make Module generic againMatthias Schiffer
Even with the merged Contexts, we will need separate value and type namespaces.
2024-04-28rebel-lang: scope: rename Context::run() to execute()Matthias Schiffer
2024-04-28rebel-lang: repl: skip evaluation of empty statementsMatthias Schiffer
2024-04-28rebel-lang: typing: add support for typechecking body statementsMatthias Schiffer
2024-04-28rebel-parse: implement validation for statementsMatthias Schiffer
2024-04-28rebel-lang: repl: switch from rustyline to reedlineMatthias Schiffer
reedline has a nicer API than rustyline.
2024-04-28rebel-parse: ast: add post-parse validationMatthias Schiffer
2024-04-28rebel-lang: repl: add support for multiline inputMatthias 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-28rebel-lang: context: typecheck interpolated expressionsMatthias Schiffer
2024-04-28rebel-lang: implement simple assignments for REPLMatthias Schiffer
2024-04-28rebel-parse: allow expression and empty statementsMatthias Schiffer
2024-04-28rebel-lang: add type checking to REPLMatthias Schiffer
2024-04-28rebel-lang: merge typing and evaluation Context structsMatthias Schiffer
Avoid having to convert between different context types for typechecking and evaluation. During typechecking, upvalues etc. are represented as None values.
2024-04-28rebel-lang: move code around to make following diff more readableMatthias Schiffer
2024-04-28rebel-parse: tokenize: use positive list of allowed characters for punctuationMatthias Schiffer
Speed up tokenization, and fixes treating incomplete strings' quotes as punctiation.
2024-04-27rebel-lang: replace eval-string example with simple REPLMatthias Schiffer
2024-04-27Update dependenciesMatthias Schiffer
2024-04-27rebel-parse: split combined assignment into assignment + binary opMatthias Schiffer
2024-04-27rebel-lang: Remove Clone from Scope and ContextMatthias Schiffer
2024-04-27rebel-lang: new crateMatthias Schiffer
Handle a lot of typechecking and evaluation of expressions.
2024-04-26rebel-parse: shorten type namesMatthias Schiffer
Make the names match the in-language identifiers. Also, avoid having a String type conflicting with the std one.
2024-04-26rebel-parse: ast: store string kind againMatthias Schiffer
We need the kind after all, as different string kinds will need different escaping for interpolation.
2024-04-26rebel-parse: tokenize: allow escaping '{' charactersMatthias Schiffer
2024-04-25rebel-parse: tokenize: allow whitespae in interpolated expressionsMatthias Schiffer
2024-04-25rebel-parse: parse-string: print "µs" instead of "us"Matthias Schiffer
2024-04-25rebel-parse: tokenize: add support for string interpolationMatthias Schiffer
2024-04-25rebel-parse: tokenize: handle escapes in regular stringsMatthias Schiffer
2024-04-25rebel-parse: token: represent string tokens as a Vec as wellMatthias Schiffer
2024-04-25rebel-parse: ast: represent strings as a Vec of piecesMatthias Schiffer
Pieces can be characters, escapes, or interpolated subexpressions.
2024-04-25rebel-parse: add support for !Copy tokensMatthias Schiffer
2024-04-25rebel-parse: use git version of pegMatthias Schiffer
Use the development version for now to take advantage of the latest performance improvements.
2024-04-25Update dependenciesMatthias Schiffer
2024-04-25rebel-parse: ast: derive Eq for all typesMatthias Schiffer
2024-04-24rebel-parse: do not represent different string types in ASTMatthias Schiffer
2024-04-24rebel-parse: token: separate Number from String variantsMatthias Schiffer
2024-04-24rebel-parse: token: remove Ident structMatthias Schiffer
2024-04-23rebel-parse: use positional arguments for nowMatthias Schiffer
Keyword arguments need more design.
2024-04-23rebel-parse: introduce method calls as an Expr variantMatthias Schiffer
Methods and fields exist in separate namespaces.
2024-04-22rebel-parse: add benchmarkMatthias Schiffer