-
Notifications
You must be signed in to change notification settings - Fork 116
Open
Description
src/main.rs:
peg::parser!(grammar p() for str {
rule number() -> f64 = s:$(['0'..='9']) { s.parse().unwrap() }
pub rule preced() -> f64 = precedence! {
a:(@) "+" b:@ { a+b }
--
a:(@) "*" b:@ { a*b }
--
n:number() { n }
"(" e:preced() ")" { e }
}
});
fn main() {
let _ = dbg!(p::preced("1*2+3*4"));
}Current output:
[PEG_TRACE] Attempting to match rule `preced` at 1:1
[PEG_TRACE] Attempting to match rule `number` at 1:1
[PEG_TRACE] Matched rule `number` at 1:1 to 1:2
[PEG_TRACE] Entering level 0
[PEG_TRACE] Attempting to match rule `number` at 1:3
[PEG_TRACE] Matched rule `number` at 1:3 to 1:4
[PEG_TRACE] Entering level 2
[PEG_TRACE] Leaving level 2
[PEG_TRACE] Attempting to match rule `number` at 1:5
[PEG_TRACE] Matched rule `number` at 1:5 to 1:6
[PEG_TRACE] Entering level 1
[PEG_TRACE] Attempting to match rule `number` at 1:7
[PEG_TRACE] Matched rule `number` at 1:7 to 1:8
[PEG_TRACE] Entering level 2
[PEG_TRACE] Leaving level 2
[PEG_TRACE] Leaving level 1
[PEG_TRACE] Leaving level 0
[PEG_TRACE] Matched rule `preced` at 1:1 to 1:8
Expect output:
[PEG_TRACE] Attempting to match rule `preced` at 1:1
[PEG_TRACE] Attempting to match rule `number` at 1:1
[PEG_TRACE] Matched rule `number` at 1:1 to 1:2
[PEG_TRACE] Entering rule `preced` level 0
[PEG_TRACE] Attempting to match rule `number` at 1:3
[PEG_TRACE] Matched rule `number` at 1:3 to 1:4
[PEG_TRACE] Entering rule `preced` level 2
[PEG_TRACE] Leaving rule `preced` level 2
[PEG_TRACE] Attempting to match rule `number` at 1:5
[PEG_TRACE] Matched rule `number` at 1:5 to 1:6
[PEG_TRACE] Entering rule `preced` level 1
[PEG_TRACE] Attempting to match rule `number` at 1:7
[PEG_TRACE] Matched rule `number` at 1:7 to 1:8
[PEG_TRACE] Entering rule `preced` level 2
[PEG_TRACE] Leaving rule `preced` level 2
[PEG_TRACE] Leaving rule `preced` level 1
[PEG_TRACE] Leaving rule `preced` level 0
[PEG_TRACE] Matched rule `preced` at 1:1 to 1:8
Manually enter the name, or obtain it from nearby rules?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels