Fix range grammar not being anchored
This commit is contained in:
parent
e9ec2998f0
commit
45a1b403e0
2 changed files with 6 additions and 4 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue