Fix range grammar not being anchored

This commit is contained in:
Joscha 2021-12-19 00:57:19 +01:00
parent e9ec2998f0
commit 45a1b403e0
2 changed files with 6 additions and 4 deletions

View file

@ -69,9 +69,11 @@ fn parse_range(p: Pair<'_, Rule>) -> Result<Range> {
let mut p = p.into_inner(); let mut p = p.into_inner();
let (start, start_delta) = parse_range_start(p.next().unwrap())?; let (start, start_delta) = parse_range_start(p.next().unwrap())?;
let (end, end_delta) = parse_range_end(p.next().unwrap())?; let (end, end_delta) = match p.next() {
// For some reason, the EOI gets captured but the SOI doesn't.
assert_eq!(p.next(), None); Some(p) if p.as_rule() != Rule::EOI => parse_range_end(p)?,
_ => (None, None),
};
Ok(Range { Ok(Range {
start, start,

View file

@ -146,4 +146,4 @@ file = ${ SOI ~ (empty_line* ~ command)* ~ empty_line* ~ WHITESPACE* ~ EOI }
today = { "today" } today = { "today" }
range_start = { (datum | today) ~ delta? } range_start = { (datum | today) ~ delta? }
range_end = { (datum | today) ~ delta? | delta } range_end = { (datum | today) ~ delta? | delta }
range = { range_start ~ ("--" ~ range_end)? } range = { SOI ~ range_start ~ ("--" ~ range_end)? ~ EOI}