web-dev-qa-db-fra.com

Analyseur JavaScript en JavaScript

J'ai besoin d'ajouter du sucre syntaxique léger au code source JavaScript et de le traiter à l'aide d'un système de construction basé sur JavaScript. Existe-t-il des analyseurs JavaScript open source écrits en JavaScript? Et sont-ils raisonnablement rapides lorsqu'ils sont exécutés au-dessus de V8 ou d'une implémentation JavaScript hautes performances similaire?

Merci pour tous les conseils que vous pouvez fournir!

67
emk

Crescent Fresh a répondu à cette question dans les commentaires:

JSLint contient un analyseur JavaScript écrit en JavaScript. Voir JSlint de Douglas Crockford La ligne 2712 commence l’analyseur. JSLint est écrit pour gérer également le code HTML, il est donc nécessaire de survoler ces parties.

24
emk

UglifyJS (compresseur JS/beautifier en JavaScript) contient un analyseur JavaScript complet qui expose une API simple. Il est fortement testé et utilisé dans certains grands projets (WebKit).

32
mishoo

Le le plus rapide analyseur Javascript en Javascript était esprima .

Cela vous donne aussi 

Format sensible pour l’arbre de syntaxe abstraite (AST), compatible avec l’API de l’analyseur Mozilla

22
Johannes Gerer

acorn est un analyseur JavaScript très rapide écrit en JavaScript. C'est encore plus rapide que esprima maintenant. Les résultats que j'ai obtenus sous la forme Chrome la page de comparaison de vitesse d'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

Compatible avec l'API d'analyse syntaxique de Mozilla, vous pouvez utiliser escodegen pour générer du JavaScript à partir des arbres d'analyse.

9
Claudiu

Ce n'est pas un analyseur JavaScript, mais un projet appelé Jison (comme Bison) permettant de générer des analyseurs écrits en JS.

8
alunny

Le seul interpréteur métacirculaire que j’ai vu implémenté en JavaScript est le Narcisse Engine.

Il a également été développé par Brendan Eich. Ils utilisaient beaucoup d'extensions non standard spécifiques à SpiderMonkey.

7
CMS

Microsoft a développé le compilateur TypeScript dans TypeScript. Comme TypeScript est un sur-ensemble strict de JavaScript et que TypeScript est compilé en JavaScript, le compilateur résultant est techniquement un compilateur JavaScript écrit en JavaScript.

Cela dépend bien sûr de votre définition du "compilateur". Mais si un compilateur acceptant un sur-ensemble de langage A n'est pas un compilateur de langage A, il exclut GCC, Clang et pratiquement tous les autres compilateurs.

5
Janus Troelsen

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

Les versions récentes du shell autonome SpiderMonkey incluent un reflet de l’analyseur SpiderMonkey, disponible en JavaScript API.

Notez qu'il ne s'agit que d'une API en JavaScript, l'analyseur est C++.

3
Janus Troelsen

JS/CC - L'analyseur syntaxique LALR (1) et le générateur d'analyseurs lexicaux pour JavaScript, écrits en JavaScript - http://jscc.phorward-software.com/

0
Pavel Vlasov