linkrs_query/parser/parsing/
stmt_parser.rs1mod admin;
7mod database;
8mod dispatch;
9mod group_by;
10mod misc;
11mod pipe;
12
13#[cfg(test)]
14mod tests;
15
16use crate::parser::ast::stmt::*;
17use crate::parser::core::error::ParseError;
18use crate::parser::parsing::parse_context::ParseContext;
19
20pub struct StmtParser;
22
23impl StmtParser {
24 pub fn parse_statement(ctx: &mut ParseContext) -> Result<Stmt, ParseError> {
26 let stmt = Self::parse_single_statement(ctx)?;
27 pipe::parse_pipe_suffix(ctx, stmt)
28 }
29
30 fn parse_single_statement(ctx: &mut ParseContext) -> Result<Stmt, ParseError> {
32 if let Some(result) = dispatch::parse_keyword_statement(ctx) {
33 return result;
34 }
35 dispatch::parse_token_statement(ctx)
36 }
37}