Age | Commit message (Collapse) | Author | |
---|---|---|---|
3 days | rebel-parse, rebel-lang: allow creating none values | Matthias Schiffer | |
5 days | rebel-parse, rebel-lang: allow naming option types | Matthias Schiffer | |
11 days | rebel-parse, rebel-lang: a unit should be an empty tuple | Matthias Schiffer | |
The empty tuple becomes the representation of the unit. An empty struct is still another way to construct a unit, but never stored as a struct. | |||
11 days | rebel-lang: implement function typechecking and evaluation | Matthias Schiffer | |
Upvalues are not supported yet. | |||
11 days | rebel-parse: token: add fn keyword | Matthias Schiffer | |
12 days | rebel-parse: ast: use derive-into-owned crate to derive into_owned() and ↵ | Matthias Schiffer | |
borrowed() methods | |||
12 days | rebel-parse: replace &str with Cow<str> in ast | Matthias Schiffer | |
Allow creating owned copies of the AST. | |||
14 days | rebel-parse: add support for struct definition shorthand syntax | Matthias Schiffer | |
14 days | rebel-parse, rebel-lang: remove struct keyword again | Matthias Schiffer | |
In addition, the order of match rules is adjusted to check structs before blocks for improved performance in common cases - structs are likely more frequent than block expressions in most code, and the struct rule can be rejected quickly. | |||
14 days | rebel-parse: make fetch bodies struct-like rather than block-like | Matthias Schiffer | |
Fetch statements can't have parameters, so we don't need a code block where a simple data structure would suffice. | |||
14 days | rebel-parse, rebel-lang: switch to use ':' for fields in struct literals | Matthias Schiffer | |
Match Rust and make struct literals and block expressions easily distinguishable even without a struct keyword. | |||
14 days | rebel-parse, rebel-lang: allow specifying explicit map types | Matthias Schiffer | |
2024-05-05 | rebel-parse: grammar: check rules in the same order for types and expressions | Matthias Schiffer | |
2024-05-05 | rebel-parse, rebel-lang: add support for map literals | Matthias Schiffer | |
2024-05-04 | rebel-parse, rebel-lang: switch to rustc-hash | Matthias Schiffer | |
2024-05-04 | rebel-parse, rebel-lang: implement if-else expressions | Matthias Schiffer | |
2024-05-04 | rebel-parse: token: add for, if and else keywords | Matthias Schiffer | |
2024-05-04 | rebel-parse, rebel-lang: add support for block expressions | Matthias Schiffer | |
Our scopes are now actually nested and track bindings lexically. | |||
2024-05-04 | rebel-parse, rebel-lang: use struct keyword for struct types and literals | Matthias Schiffer | |
2024-05-01 | rebel-lang: reuse assignment code for let statements | Matthias Schiffer | |
This should ensure that let with expression is always equivalent to let + separate initialization. | |||
2024-05-01 | rebel-parse: recipe: allow negative integer literals | Matthias Schiffer | |
Parsing a number as a negative literal instead of a positive number with negation fixes parsing of i64::MIN. The rule is only used for this specific case though, as the unary_op + number rule will succeed first otherwise. | |||
2024-05-01 | rebel-parse: store number literals as i64 instead of u64 | Matthias Schiffer | |
Avoid a useless conversion during eval. | |||
2024-05-01 | rebel-parse, rebel-lang: rename base "expr"/"pat" fields to "base" in ↵ | Matthias Schiffer | |
index/field projection | |||
2024-05-01 | rebel-parse: implement pattern validation | Matthias Schiffer | |
2024-05-01 | rebel-parse: handle more pattern types | Matthias Schiffer | |
Add support for parsing parentheses, field access and index operations in patterns, and distinguish let and destructuring pattern. | |||
2024-05-01 | rebel-parse: add type and pat modes to parse-string | Matthias Schiffer | |
2024-05-01 | rebel-parse: add support for different path roots | Matthias Schiffer | |
Distinguish relative (unprefixed), absolute (`::` prefix) and section-specific (`recipe::`, `task::`) paths. | |||
2024-05-01 | rebel-parse: sort keyword enum variants by name | Matthias Schiffer | |
2024-04-30 | rebel-parse, rebel-lang: remove array length from types | Matthias Schiffer | |
Tuples are sufficient for fixed-length data. For arrays, the small increase in type safety is not worth the large increase in complexity - both for the typechecker, and the usage of the language. The Coerce parameter of unify() is preserved for now, as it may become useful again for other types like sets. | |||
2024-04-29 | rebel-parse, rebel-lang: distinguish let statements and simple assignments | Matthias Schiffer | |
2024-04-29 | rebel-parse, rebel-lang: rename "body" to "block" | Matthias Schiffer | |
2024-04-29 | rebel-parse: recipe: actually store fetch block in AST | Matthias Schiffer | |
2024-04-29 | rebel-parse: ast: typ: allow to distinguish between free and dynamic array ↵ | Matthias Schiffer | |
length | |||
2024-04-29 | rebel-parse: limit explicit array length specification to u32 | Matthias Schiffer | |
2024-04-29 | rebel-parse: token: reserve "let" and "mut" keywords | Matthias Schiffer | |
2024-04-29 | rebel-parse: replace TypedExpr with TypedPat | Matthias Schiffer | |
2024-04-29 | rebel-parse: create separate types to represent types | Matthias Schiffer | |
2024-04-28 | rebel-parse: rename struct field name from key to name | Matthias Schiffer | |
2024-04-28 | rebel-parse: split expr out of ast module | Matthias Schiffer | |
2024-04-28 | rebel-parse: use phf for faster keyword parsing | Matthias Schiffer | |
2024-04-28 | rebel-parse: reserve struct, map and set keywords | Matthias Schiffer | |
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-parse: implement validation for statements | Matthias Schiffer | |
2024-04-28 | rebel-parse: ast: add post-parse validation | Matthias Schiffer | |
2024-04-28 | rebel-parse: allow expression and empty statements | 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 | Update dependencies | Matthias Schiffer | |