Skip to main content

surql_parser/upstream/syn/parser/stmt/
create.rs

1use 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}