promql-rs

A PromQL parser written in Rust.

Example

The minimal usage example:

```rust use promql_rs::parser;

fn main() { let ast = parser::parse(r#"sum(rate(httprequesttotal{app="prometheus"}[5m])) by (host)"#); println!("{:#?}", ast.unwrap()); } ```

This will produce the following output:

rust AggregateExpr( AggregateExpr { op: Sum, expr: FunctionCall( FunctionCall { func: Function { name: "rate", arg_types: [ Matrix, ], return_type: Vector, }, args: [ MatrixSelector( MatrixSelector { vector_selector: VectorSelector( VectorSelector { metric: "http_request_total", label_matchers: [ LabelMatcher { op: Equal, name: "app", value: "prometheus", }, ], original_offset: 0ns, offset: 0ns, at: None, }, ), range: 300s, }, ), ], }, ), param: None, modifier: By( [ "host", ], ), }, )

TODOs