Writing this Lisp lexer is giving me an epiphany. The output turns out to consist only of 3 different symbols:
Left parenthesis
Right parenthesis
Symbol
Where a symbol is anything except parentheses, a whitespace, a double quote or a backslash (escape character).
For instance, a string (a sequence of character data that shouldn't be evaluated, such as a bit of text) is just a symbol with a quote flag set on it.
The parentheses enclose lists of whitespace-delimited symbols.
...and that's it.