Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2023-10-25 | Improve error for invalid name used in `endblock` | Guillaume Gomez | 2 | -2/+30 | |
2023-10-25 | Create `ErrorContext` type | Guillaume Gomez | 3 | -95/+183 | |
2023-09-28 | Pass `Node` parsing level to expressions | René Kijewski | 2 | -16/+16 | |
2023-09-28 | Limit nesting in parser nodes, too | René Kijewski | 2 | -4/+23 | |
2023-09-28 | Require Expr::parse() callers to supply Level | Dirkjan Ochtman | 2 | -16/+18 | |
2023-09-28 | Move Level into the crate root | Dirkjan Ochtman | 3 | -18/+17 | |
2023-09-28 | Yield a parser error when defining a macro named 'super' | Dirkjan Ochtman | 2 | -4/+11 | |
2023-09-28 | Limit expression nesting level to avoid stack overflows | Dirkjan Ochtman | 2 | -34/+83 | |
2023-09-11 | Use char_indices() to get byte indices for characters | Dirkjan Ochtman | 2 | -1/+8 | |
2023-09-11 | Rename some variables | Dirkjan Ochtman | 1 | -7/+7 | |
2023-08-03 | Optimize parsing boolean literals, too | René Kijewski | 1 | -9/+5 | |
2023-08-03 | Parse paths and identifiers only once | René Kijewski | 3 | -37/+53 | |
In the old implementation each variable in an expression would be parsed up to three times: * Try to parse a path because it contains a leading double colon, or infix double colons. * Try to parse it as path again by scanning for an identifier that contains an upper case character. * Fall back to scanning for any identifier. This PR turns all three steps into one, without the need for backtracking. | |||||
2023-08-02 | parser: fix white space issues in macro parsing | René Kijewski | 1 | -2/+2 | |
2023-08-02 | parser: allow negative numbers in patterns | René Kijewski | 1 | -1/+5 | |
2023-08-02 | parser: don't truncates whitespaces after arrays | René Kijewski | 1 | -1/+1 | |
2023-08-02 | parser: better error message for unknown nodes | René Kijewski | 2 | -9/+8 | |
2023-08-01 | parser: import `parser::{Expr, Node}` | René Kijewski | 2 | -5/+4 | |
2023-08-01 | parser: `node::Loop` is much bigger than the other variants | René Kijewski | 1 | -2/+2 | |
2023-08-01 | parser: move test for completeness | René Kijewski | 1 | -6/+6 | |
2023-08-01 | parser: add type for `Node::Comment` | René Kijewski | 2 | -146/+109 | |
2023-08-01 | parser: add `expr::Loop::parse()` | René Kijewski | 1 | -68/+70 | |
2023-08-01 | parser: remove re-exports `parser::{node,expr}::*` | René Kijewski | 3 | -13/+12 | |
2023-08-01 | parser: add type for `Node::Extends` | René Kijewski | 2 | -9/+16 | |
2023-08-01 | parser: add type for `Node::Include` | René Kijewski | 2 | -14/+28 | |
2023-08-01 | parser: rename `Node::Cond` into `If` and add type | René Kijewski | 2 | -35/+49 | |
2023-08-01 | parser: add type for `Node::Let` | René Kijewski | 2 | -26/+34 | |
2023-08-01 | parser: add type for `Node::Raw` | René Kijewski | 2 | -29/+38 | |
2023-08-01 | parser: add type for `Node::Lit` | René Kijewski | 3 | -49/+54 | |
2023-08-01 | parser: add type for `Node::BlockDef` | René Kijewski | 2 | -30/+45 | |
2023-08-01 | parser: add type for `Node::Match` | René Kijewski | 2 | -36/+54 | |
2023-08-01 | parser: add type for `Node::Call` | René Kijewski | 2 | -20/+40 | |
2023-08-01 | parser: add type for `Node::Import` | René Kijewski | 2 | -17/+33 | |
2023-08-01 | parser: let `Macro` know its name | René Kijewski | 1 | -52/+53 | |
2023-08-01 | parser: add `Ast::nodes()` method | René Kijewski | 1 | -0/+4 | |
2023-08-01 | parser: impement `PartialEq` for `Ast` | René Kijewski | 1 | -0/+7 | |
2023-08-01 | parser: implement `Debug` for `Parsed` | René Kijewski | 1 | -1/+9 | |
2023-08-01 | parser: use `?` | René Kijewski | 1 | -5/+1 | |
2023-08-01 | parser: ensure correct drop order for `Parsed` | René Kijewski | 1 | -2/+3 | |
According to [RFC 1857] the fields of a struct are dropped in the same order as they are declared. For `struct S { a: A, b: B }` field `a` is dropped before field `b`. Our struct `Parsed` is self referencial. Its field `ast` depends on `source`, so `source` must outlife `ast`. This PR changes the order of the fields to reflect this requirement. In practice it should not matter, because we know that the variant of `Node` won't access the string data during their `Drop`, but better safe than sorry - maybe `Node` changes in the future. [RFC 1857]: https://rust-lang.github.io/rfcs/1857-stabilize-drop-order.html | |||||
2023-08-01 | parser: remove panicking `From<&str> for Whitespace` | René Kijewski | 1 | -12/+5 | |
2023-07-31 | Fix parsing arrays | René Kijewski | 2 | -5/+90 | |
This change * allows using empty arrays `[]` in expessions, * adds a cut when the leading `[` was encountered, and * fixes the interaction between arrays and boolean OR. IMO the restriction that you couldn't use empty arrays is not needed. The missing cut made error messages slictly worse if you forget to add the closing `]`. Filter expressions must not have white spaces before the pipe `|`. The white space is used to tell a filter expressions, and `std::ops::Or` apart. | |||||
2023-07-31 | Fix parsing calls | René Kijewski | 2 | -4/+31 | |
This change: * adds a cut when the leading `(` was encountered, and * fixed the interaction between call expressions and boolean OR. | |||||
2023-07-31 | parser: rename block to nodes | Dirkjan Ochtman | 1 | -12/+13 | |
2023-07-31 | parser: reorder items in node module | Dirkjan Ochtman | 1 | -50/+50 | |
2023-07-31 | parser: move Expr parser helpers into callers | Dirkjan Ochtman | 1 | -53/+54 | |
2023-07-31 | parser: move single expr parsers into Expr impl | Dirkjan Ochtman | 1 | -63/+63 | |
2023-07-31 | parser: move binary operator parsers into Expr impl | Dirkjan Ochtman | 1 | -71/+71 | |
2023-07-31 | parser: flatten top-level Expr interface | Dirkjan Ochtman | 2 | -36/+28 | |
2023-07-31 | parser: move suffix parsers into impl block | Dirkjan Ochtman | 1 | -53/+61 | |
2023-07-31 | parser: move cond parsers into type impls | Dirkjan Ochtman | 1 | -39/+43 | |
2023-07-31 | parser: move parser helpers into callers | Dirkjan Ochtman | 1 | -35/+35 | |