Парсить все, кроме ридер-макросов. Токенайзеру же плевать какие там конструкции, ему нужно создать аст. А макросы уже должны вторым этапом раскрываться, причем, итерационно, пока не останется нераскрытых макросов.
Ну смотри, тот же распространенный вариант парсера на питоне:
https://norvig.com/lispy.html>>> program = "(begin (define r 10) (* pi (* r r)))"
>>> tokenize(program)
['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')']