diff options
| author | Martin Haug <mhaug@live.de> | 2021-10-31 15:01:39 +0100 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2021-11-05 13:44:49 +0100 |
| commit | 1c0ac793d2b9c403f1a8fa60a3748f4ff8623acb (patch) | |
| tree | a101236a3e7b8e3407fa9bfc5e8df739e21ab942 /src/parse/mod.rs | |
| parent | 84d35efee38d137a77e368c50421ac24327371c6 (diff) | |
Slim `NodeKind` memory footprint
Diffstat (limited to 'src/parse/mod.rs')
| -rw-r--r-- | src/parse/mod.rs | 39 |
1 files changed, 10 insertions, 29 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 0425f824..773f642c 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -87,18 +87,10 @@ fn markup_node(p: &mut Parser, at_start: &mut bool) { | NodeKind::NonBreakingSpace | NodeKind::Emph | NodeKind::Strong - | NodeKind::Linebreak => p.eat(), + | NodeKind::Linebreak + | NodeKind::Raw(_) => p.eat(), NodeKind::UnicodeEscape(u) => { - if !u.terminated { - p.convert(NodeKind::Error( - ErrorPosition::End, - "expected closing brace".into(), - )); - p.unsuccessful(); - return; - } - if u.character.is_none() { let src = p.peek_src(); p.convert(NodeKind::Error( @@ -112,18 +104,6 @@ fn markup_node(p: &mut Parser, at_start: &mut bool) { p.eat(); } - NodeKind::Raw(r) => { - if !r.terminated { - p.convert(NodeKind::Error( - ErrorPosition::End, - "expected backtick(s)".into(), - )); - p.unsuccessful(); - return; - } - - p.eat(); - } NodeKind::Eq if *at_start => heading(p), NodeKind::ListBullet if *at_start => list_node(p), @@ -159,6 +139,7 @@ fn markup_node(p: &mut Parser, at_start: &mut bool) { // Comments. NodeKind::LineComment | NodeKind::BlockComment => p.eat(), + NodeKind::Error(t, e) if t != &ErrorPosition::Full || e.contains(' ') => p.eat(), _ => { *at_start = false; @@ -338,6 +319,10 @@ fn primary(p: &mut Parser, atomic: bool) { Some(NodeKind::Import) => import_expr(p), Some(NodeKind::Include) => include_expr(p), + Some(NodeKind::Error(t, e)) if t != &ErrorPosition::Full || e.contains(' ') => { + p.eat(); + } + // Nothing. _ => { p.expected("expression"); @@ -363,13 +348,9 @@ fn literal(p: &mut Parser) -> bool { | NodeKind::Fraction(_) | NodeKind::Length(_, _) | NodeKind::Angle(_, _) - | NodeKind::Percentage(_) => p.eat(), - NodeKind::Str(s) => { - p.eat(); - if !s.terminated { - p.expected_at("quote"); - } - } + | NodeKind::Percentage(_) + | NodeKind::Str(_) => p.eat(), + _ => return false, } |
