diff --git a/src/select-query-parser.ts b/src/select-query-parser.ts
index 5f8c5a74..f5c02fda 100644
--- a/src/select-query-parser.ts
+++ b/src/select-query-parser.ts
@@ -124,12 +124,39 @@ type ReadLettersHelper = string extend
: [Acc, '']
/**
- * Parses an identifier.
+ * Reads a consecutive sequence of more than 1 double-quoted letters,
+ * where letters are `[^"]`.
+ */
+type ReadQuotedLetters = string extends Input
+ ? GenericStringError
+ : Input extends `"${infer Remainder}`
+ ? ReadQuotedLettersHelper extends [`${infer Letters}`, `${infer Remainder}`]
+ ? Letters extends ''
+ ? ParserError<`Expected string at \`${Remainder}\``>
+ : [Letters, Remainder]
+ : ReadQuotedLettersHelper
+ : ParserError<`Not a double-quoted string at \`${Input}\``>
+
+type ReadQuotedLettersHelper = string extends Input
+ ? GenericStringError
+ : Input extends `${infer L}${infer Remainder}`
+ ? L extends '"'
+ ? [Acc, Remainder]
+ : ReadQuotedLettersHelper
+ : ParserError<`Missing closing double-quote in \`"${Acc}${Input}\``>
+
+/**
+ * Parses a (possibly double-quoted) identifier.
* For now, identifiers are just sequences of more than 1 letter.
- *
- * TODO: allow for double quoted strings.
*/
-type ParseIdentifier = ReadLetters
+type ParseIdentifier = ReadLetters extends [
+ infer Name,
+ `${infer Remainder}`
+]
+ ? [Name, `${Remainder}`]
+ : ReadQuotedLetters extends [infer Name, `${infer Remainder}`]
+ ? [Name, `${Remainder}`]
+ : ParserError<`No (possibly double-quoted) identifier at \`${Input}\``>
/**
* Parses a node.