MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / parse_map

Method parse_map

src/sql-parser/src/parser.rs:6883–6910  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

6881 }
6882
6883 fn parse_map(&mut self) -> Result<Expr<Raw>, ParserError> {
6884 if self.consume_token(&Token::LParen) {
6885 let subquery = self.parse_query()?;
6886 self.expect_token(&Token::RParen)?;
6887 return Ok(Expr::MapSubquery(Box::new(subquery)));
6888 }
6889
6890 self.expect_token(&Token::LBracket)?;
6891 let mut exprs = vec![];
6892 loop {
6893 if let Some(Token::RBracket) = self.peek_token() {
6894 break;
6895 }
6896 let key = self.parse_expr()?;
6897 self.expect_token(&Token::Arrow)?;
6898 let value = if let Some(Token::LBracket) = self.peek_token() {
6899 self.parse_map()?
6900 } else {
6901 self.parse_expr()?
6902 };
6903 exprs.push(MapEntry { key, value });
6904 if !self.consume_token(&Token::Comma) {
6905 break;
6906 }
6907 }
6908 self.expect_token(&Token::RBracket)?;
6909 Ok(Expr::Map(exprs))
6910 }
6911
6912 fn parse_sequence<F>(&mut self, mut f: F) -> Result<Vec<Expr<Raw>>, ParserError>
6913 where

Callers 1

parse_prefixMethod · 0.45

Calls 7

consume_tokenMethod · 0.80
expect_tokenMethod · 0.80
peek_tokenMethod · 0.80
parse_exprMethod · 0.80
MapInterface · 0.50
parse_queryMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected