MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseDictionarySourceClause

Method parseDictionarySourceClause

parser/parser_table.go:2198–2246  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

2196}
2197
2198func (p *Parser) parseDictionarySourceClause(pos Pos) (*DictionarySourceClause, error) {
2199 if err := p.expectKeyword(KeywordSource); err != nil {
2200 return nil, err
2201 }
2202
2203 if err := p.expectTokenKind(TokenKindLParen); err != nil {
2204 return nil, err
2205 }
2206
2207 sourceName, err := p.parseIdent()
2208 if err != nil {
2209 return nil, err
2210 }
2211
2212 if err := p.expectTokenKind(TokenKindLParen); err != nil {
2213 return nil, err
2214 }
2215
2216 var args []*DictionaryArgExpr
2217 // Parse optional arguments
2218 for !p.matchTokenKind(TokenKindRParen) {
2219 arg, err := p.parseDictionaryArgExpr(p.Pos())
2220 if err != nil {
2221 return nil, err
2222 }
2223 args = append(args, arg)
2224
2225 // If there's no right paren, we expect another arg (no comma needed)
2226 if p.matchTokenKind(TokenKindRParen) {
2227 break
2228 }
2229 }
2230
2231 if err := p.expectTokenKind(TokenKindRParen); err != nil {
2232 return nil, err
2233 }
2234
2235 rParenPos := p.Pos()
2236 if err := p.expectTokenKind(TokenKindRParen); err != nil {
2237 return nil, err
2238 }
2239
2240 return &DictionarySourceClause{
2241 SourcePos: pos,
2242 Source: sourceName,
2243 Args: args,
2244 RParenPos: rParenPos,
2245 }, nil
2246}
2247
2248func (p *Parser) parseDictionaryArgExpr(pos Pos) (*DictionaryArgExpr, error) {
2249 name, err := p.parseIdent()

Callers 1

Calls 6

expectKeywordMethod · 0.95
expectTokenKindMethod · 0.95
parseIdentMethod · 0.95
matchTokenKindMethod · 0.95
PosMethod · 0.95

Tested by

no test coverage detected