JavaScript парсер в JavaScript [закрыто]



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



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

518   9  

9 ответов:

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

Crescent Fresh ответил на этот вопрос в комментариях:

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

The быстрый JavaScript парсер в Javascript был esprima.

Это также дает вам

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

Жолудь - Это очень быстрый парсер JavaScript, написанный на JavaScript. Это даже быстрее, чем esprima сейчас. Результаты, которые я получил в Chrome form страница сравнения скорости 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, поэтому вы можете использовать escodegen для генерации JavaScript из деревьев разбора.

Это не сам синтаксический анализатор JavaScript, но есть проект под названием Jison (как бизон) для генерации парсеров, которые написаны в JS.

только metacircular переводчик что я видел, реализовано в JavaScript-это Нарцисс двигатель.

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

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

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

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

последние сборки автономной оболочки SpiderMonkey включают в себя отражение парсера SpiderMonkey, сделанного доступным как JavaScript ПРИКЛАДНОЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС.

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

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

Comments

    Ничего не найдено.