surql_parser/upstream/syn/parser/stmt/
create.rs1use crate::upstream::sql::CreateStatement;
2use crate::upstream::syn::parser::{ParseResult, Parser};
3use crate::upstream::syn::token::t;
4use reblessive::Stk;
5impl Parser<'_> {
6 pub async fn parse_create_stmt(&mut self, stk: &mut Stk) -> ParseResult<CreateStatement> {
7 let only = self.eat(t!("ONLY"));
8 let what = self.parse_what_list(stk).await?;
9 let data = self.try_parse_data(stk).await?;
10 let output = self.try_parse_output(stk).await?;
11 if self.eat(t!("VERSION")) {
12 stk.run(|stk| self.parse_expr_field(stk)).await?;
13 }
14 let timeout = self.try_parse_timeout(stk).await?;
15 Ok(CreateStatement {
16 only,
17 what,
18 data,
19 output,
20 timeout,
21 })
22 }
23}