This commit is contained in:
2020-07-04 10:15:54 +08:00
parent 90f93df98a
commit 2b00af0aa8
4 changed files with 211 additions and 0 deletions

18
pest/src/main.rs Normal file
View File

@@ -0,0 +1,18 @@
extern crate pest_derive;
extern crate pest;
use pest::Parser as PestParser;
use pest_derive::Parser;
#[derive(Parser)]
#[grammar = "sample.pest"]
struct SampleParser;
fn main() {
let mut pairs = SampleParser::parse(Rule::expression, "111+222").unwrap_or_else(|e| panic!("{}", e));
println!("{:?}", pairs);
let a = pairs.next().unwrap().as_str().parse::<i64>().unwrap();
pairs.next();
let b = pairs.next().unwrap().as_str().parse::<i64>().unwrap();
}

2
pest/src/sample.pest Normal file
View File

@@ -0,0 +1,2 @@
number = { ('0'..'9')+ }
expression = { number ~ "+" ~ number }