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

Method parseTableArgExpr

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

Source from the content-addressed store, hash-verified

727}
728
729func (p *Parser) parseTableArgExpr(pos Pos) (Expr, error) {
730 switch {
731 case p.matchTokenKind(TokenKindIdent):
732 ident, err := p.parseIdent()
733 if err != nil {
734 return nil, err
735 }
736 switch {
737 // nest identifier
738 case p.matchTokenKind(TokenKindDot):
739 dotIdent, err := p.tryParseDotIdent(p.Pos())
740 if err != nil {
741 return nil, err
742 }
743 return &NestedIdentifier{
744 Ident: ident,
745 DotIdent: dotIdent,
746 }, nil
747 case p.matchTokenKind(TokenKindLParen):
748 argsExpr, err := p.parseTableArgList(pos)
749 if err != nil {
750 return nil, err
751 }
752 return &TableFunctionExpr{
753 Name: ident,
754 Args: argsExpr,
755 }, nil
756 default:
757 return ident, nil
758 }
759 case p.matchTokenKind(TokenKindLParen):
760 return p.parseSubQuery(p.Pos())
761 case p.matchTokenKind(TokenKindInt), p.matchTokenKind(TokenKindString), p.matchKeyword(KeywordNull):
762 return p.parseLiteral(p.Pos())
763 default:
764 return nil, fmt.Errorf("unexpected token: %q, expected <Name>, <literal>", p.last().String)
765 }
766}
767
768func (p *Parser) parseTableArgList(pos Pos) (*TableArgListExpr, error) {
769 if err := p.expectTokenKind(TokenKindLParen); err != nil {

Callers 1

parseTableArgListMethod · 0.95

Calls 9

matchTokenKindMethod · 0.95
parseIdentMethod · 0.95
tryParseDotIdentMethod · 0.95
PosMethod · 0.95
parseTableArgListMethod · 0.95
parseSubQueryMethod · 0.95
matchKeywordMethod · 0.95
parseLiteralMethod · 0.95
lastMethod · 0.95

Tested by

no test coverage detected