Абстрактное дерево синтаксиса. Я всегда слышал, что компиляция SpiderMonkey AST на Github.
Итак, это фактический стандарт синтаксического дерева JS? И там V8, это V8, используя тот же тип АСТ?
Как я могу играть с этим?
Абстрактное дерево синтаксиса. Я всегда слышал, что компиляция SpiderMonkey AST на Github.
Итак, это фактический стандарт синтаксического дерева JS? И там V8, это V8, используя тот же тип АСТ?
Как я могу играть с этим?
SpiderMonkey предлагает парсер api. Это, вероятно, самый простой способ получить доступ к синтаксическим объектам.
Там также открыты парсы js-js, такие как Esprima (это ECMAScript, правда, но он находится прямо вверх по переулку)
1.Вы можете посмотреть AST explorer. Онлайновый инструмент для изучения АСТ, сгенерированный более чем 10 парсерами. Это хороший инструмент для изучения дерева AST языка.
Источник исследования AST в Github.com.
2. Также вы можете вставить свой js-код в JavaScript AST visualizer и нажать кнопку "show ast", вы увидите AST visully.
demo js code:
function foo(d) {
d += 3;
return d+999
}
function bar(d) {
return d*100
}
Если вы хотите опробовать анализатор акронов от профессора Марийна https://github.com/marijnh попробуйте эту ссылку: https://astexplorer.net/
Это небольшой, быстрый JavaScript-парсер, полностью написанный на JavaScript.
Вышеупомянутый JavaScript-визуализатор JavaScript использует движок Esprima и также написан на JavaScrpt.
JavaScript доминирует в анализе АСТ, потому что JavaScript-оптимизаторы сегодня оптимизированы. https://en.wikipedia.org/wiki/JavaScript_engine
SpiderMonkey AST стандарт синтаксического дерева JS? Является ли V8 одним и тем же типом AST?
Оба этих механизма веб-браузера имеют обработку АСТ внутри написанной на С++. Вот почему код JavaScrpt будет работать быстро в большинстве случаев, за исключением eval
.
Я знаю только одну спецификацию Javascript AST: https://github.com/estree/estree
Он возник из публикации Дейва Хермана из Mozilla и с тех пор стал стандартом сообщества. Так что он должен в какой-то степени соответствовать SpiderMonkey, но я не уверен насчет V8 и JSC.
Буду признателен, если кто-то может предоставить больше информации по этому вопросу.