Parse a PromQL expression from a token stream.
(tokens: &[Token])
| 12 | |
| 13 | /// Parse a PromQL expression from a token stream. |
| 14 | pub fn parse(tokens: &[Token]) -> Result<Expr, PromqlError> { |
| 15 | let mut p = Parser::new(tokens); |
| 16 | let expr = p.parse_expr(0)?; |
| 17 | if !p.at_eof() { |
| 18 | return Err(PromqlError::UnexpectedToken { |
| 19 | expected: "end of expression".to_string(), |
| 20 | found: format!("{:?}", p.peek()), |
| 21 | }); |
| 22 | } |
| 23 | Ok(expr) |
| 24 | } |
| 25 | |
| 26 | struct Parser<'a> { |
| 27 | tokens: &'a [Token], |