JavaScript-парсер в JavaScript

Мне нужно добавить легкий синтаксический сахар к исходному коду JavaScript и обработать его с использованием системы сборки на основе JavaScript. Есть ли JavaScript-скрипты с открытым исходным кодом, написанные на JavaScript? И являются ли они достаточно быстрыми при запуске поверх V8 или подобной высокоэффективной реализации JavaScript?

Спасибо за любые указатели, которые вы можете предоставить!

Ответ 1

Полумесяц Свежий ответил на этот вопрос в комментариях:

JSLint содержит парсер JavaScript, написанный на JavaScript. См. JSlint от Дугласа Крокфорда В строке 2712 начинается парсер. JSLint записывается так же, как и обрабатывать html, поэтому вам придется замаскировать эти части

Ответ 2

UglifyJS (JS-компрессор/декодер в JavaScript) содержит полный парсер JavaScript, который предоставляет простой API. Он сильно тестировался и использовался в некоторых крупных проектах (WebKit).

Ответ 3

самый быстрый Парсер Javascript в Javascript был esprima.

Он также дает вам

Разумный формат абстрактного синтаксического дерева (AST), совместимый с API-интерфейсом Mozilla Parser

Ответ 4

acorn - очень быстрый JavaScript-парсер, написанный на JavaScript. Он даже быстрее, чем esprima. Результаты, которые я получил в Chrome странице сравнения скорости esprima:

Source            Esprima    UglifyJS2    Traceur    Acorn
Underscore 1.4.1  15.1       23.8         14.2       7.6
Backbone 1.0.0    17.1       30.2         16.7       7.9
jQuery 1.9.1      241.1      247.2        125.4      81.4
Total             273.3 ms   301.2 ms     156.3 ms   96.9 ms

Он совместим с API-интерфейсом Mozilla Parser, поэтому вы можете использовать escodegen для генерации JavaScript из деревьев синтаксического анализа.

Ответ 5

Это не сам JavaScript-анализатор, но существует проект под названием Jison (например, Bison) для генерации парсеров, написанных в JS.

Ответ 6

Единственный metacircular interpreter, который я видел в JavaScript, - это Narcissus Двигатель.

Он был разработан также Бренданом Эйхом, они использовали множество нестандартных расширений, которые характерны для SpiderMonkey, я думаю, что он не будет работать на V8.

Ответ 7

Microsoft разработала компилятор TypeScript в TypeScript. Поскольку TypeScript является строгим надмножеством JavaScript, а TypeScript компилируется в JavaScript, результирующий компилятор является технически компилятором JavaScript, написанным на JavaScript.

Это, конечно, зависит от вашего определения "компилятор". Но если компилятор, принимающий надмножество языка A, не является компилятором языка A, который исключает GCC, Clang и почти любой другой компилятор.

Ответ 8

https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API:

Недавние сборки автономной оболочки SpiderMonkey включают отражение анализатора SpiderMonkey, доступное как JavaScript API.

Обратите внимание, что это только API в JavaScript, парсер - это С++.

Ответ 9

JS/CC - Генератор парсера и лексического анализатора LALR (1) для JavaScript, написанный на JavaScript - http://jscc.phorward-software.com/