Был разработан новый синтаксический анализатор JavaScript, который поддерживает синтаксический анализ версий от ES6 до ES2020 и языковые особенности. Разработчик описывает его как «идеальный пиксель» и на 100% соответствующий спецификации.
Tenko был разработан Питером ван дер Зи, бывшим разработчиком Facebook, который работал над Infra JS. Он выбрал для проекта имя Тенко, потому что это анаграмма от Token, а по-японски это божественный зверь — небесная лиса.
На практике Tenko поддерживает все, что угодно, от стадии 4 до ES11 / ES2020, а также глубокий синтаксис Regex. Он поддерживает множество режимов синтаксического анализа, от строгого и модульного до небрежного / нестрогого, а также веб-совместимый / AnnexB.
поставляется с необязательной (но включенной по умолчанию) поддержкой абстрактных синтаксических деревьев (AST). AST по умолчанию, который включен, — Estree, но также есть поддержка Acorn и любой стадии 4 Babel, за исключением комментариев. Ван дер Зи говорит, что опциональное объединение AST в цепочку работает, но спецификация AST, похоже, все еще находится в разработке. AST поддерживает данные о местоположении, соответствующие Acorn или Babel для справки.
Вы можете настроить сборку без AST, которая, по словам разработчика, будет проверять JavaScript почти так же идеально, как и обычная сборка, за исключением определенных случаев проверки, когда для нее требуется AST. В частности, это двоичный оператор после строки с телом блока; регулярные выражения на новой строке после стрелки с телом блока; оператор обновления — все, что доступно для записи, но не является допустимым выражением переменной или члена; и удалить с идентификатором, заключенным в круглые скобки.
Tenko поставляется с 33000 входных синтаксических тестов и проходит набор ES test262 от марта 2020 года. Он имеет веб-интерфейс REPL, который может отображать выходные данные в режимах синтаксического анализа, упомянутых ранее (строгий, модульный, небрежный, веб-совместимый и версии ES с 6 по 11. REPL может работать только в браузерах, которые имеют встроенную поддержку загрузки модуля ES. .
Стоит отметить, что, хотя Tenko имеет открытый исходный код, разработчики не выбрали лицензию с открытым исходным кодом, поэтому не могут быть рекомендованы для каких-либо производственных проектов.