summaryrefslogtreecommitdiff
path: root/src/parse/mod.rs
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2021-10-31 15:01:39 +0100
committerMartin Haug <mhaug@live.de>2021-11-05 13:44:49 +0100
commit1c0ac793d2b9c403f1a8fa60a3748f4ff8623acb (patch)
treea101236a3e7b8e3407fa9bfc5e8df739e21ab942 /src/parse/mod.rs
parent84d35efee38d137a77e368c50421ac24327371c6 (diff)
Slim `NodeKind` memory footprint
Diffstat (limited to 'src/parse/mod.rs')
-rw-r--r--src/parse/mod.rs39
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,
}