- ключи - индексы это число размером 32 бита, в отличие от указателей в 64 бита (именно ссылка на ячейку в памяти), экономим память
- а главное, само дерево это уже готовый формат для передачи на в JS и обратно - так как дерево содержит только идентификаторы, его можно передать в качестве ArrayBuffer, без какого-то парсинга на принимающей стороне. Также это можно кэшировать.
Еще прикольчик - значения-строки указывают на реальную позицию строки в исходном коде, то есть нет дублирования строк. Декодируются по требованию.
А токенизер вообще как я понял потоковый, и за раз больше одного токена не создаётся.
И в конце из самых интересных саммари:
- Pick the representation from the access pattern, then write the algorithms to fit
- Know who reads the tree