Потом у тебя есть парсер, который построит из перечня лексем как раз-таки дерево AST — структуру данных, которая собственно описывает, что там имел в виду программист (типа вот тут у нас замыкание с такими-то параметрами захваченными, тут у нас вызов функции, а тут — ключевик для вызова какого-нибудь билтина, не выразимого в самом языке)