blob: e1dd433013e73aca276cb5cddeea1e51928f5df3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
use crate::pagespec::{Expr, OpCode};
grammar;
pub Expr: Box<Expr> = {
Expr Op Term => Box::new(Expr::Op(<>)),
Term,
}
Term: Box<Expr> = {
Glob => Box::new(Expr::Glob(<>)),
"page" "(" <g:Glob> ")" => Box::new(Expr::PageFunc(<>)),
"!" <t:Term> => Box::new(Expr::Negate(t)),
"(" <e:Expr> ")" => e,
}
Glob: String = {
r"(\w|[._*?/-])+" => <>.to_string(),
}
Op: OpCode = {
"and" => OpCode::And,
"or" => OpCode::Or,
}
|