@@ -142,13 +142,38 @@ func (p *Parser) parseIdentOrStar() (*Ident, error) {
142142 }
143143}
144144
145+ func (p * Parser ) parseIdentOrString () (* Ident , error ) {
146+ switch {
147+ case p .matchTokenKind (TokenKindIdent ):
148+ return p .parseIdent ()
149+ case p .matchTokenKind (TokenKindString ):
150+ lastToken := p .last ()
151+ _ = p .lexer .consumeToken ()
152+ return & Ident {
153+ NamePos : lastToken .Pos ,
154+ NameEnd : lastToken .End ,
155+ Name : lastToken .String ,
156+ QuoteType : SingleQuote , // Treat string literals as single-quoted identifiers
157+ }, nil
158+ default :
159+ return nil , fmt .Errorf ("expected <ident> or <string>, but got %q" , p .lastTokenKind ())
160+ }
161+ }
162+
145163func (p * Parser ) tryParseDotIdent (_ Pos ) (* Ident , error ) {
146164 if p .tryConsumeTokenKind (TokenKindDot ) == nil {
147165 return nil , nil // nolint
148166 }
149167 return p .parseIdent ()
150168}
151169
170+ func (p * Parser ) tryParseDotIdentOrString (_ Pos ) (* Ident , error ) {
171+ if p .tryConsumeTokenKind (TokenKindDot ) == nil {
172+ return nil , nil // nolint
173+ }
174+ return p .parseIdentOrString ()
175+ }
176+
152177func (p * Parser ) parseUUID () (* UUID , error ) {
153178 if err := p .expectKeyword (KeywordUuid ); err != nil {
154179 return nil , err
0 commit comments