2010-03-31 22 views
66

Necesito agregar un poco de azúcar sintáctico liviano al código fuente de JavaScript y procesarlo usando un sistema de compilación basado en JavaScript. ¿Hay analizadores de JavaScript de código abierto escritos en JavaScript? ¿Y son razonablemente rápidos cuando se ejecutan sobre V8 o una implementación de JavaScript de alto rendimiento similar?Analizador de JavaScript en JavaScript

¡Gracias por cualquier información que pueda proporcionar!

+2

"Tengo que añadir un poco de azúcar sintáctica ligera de código JavaScript de origen" ¿En serio? ¿Como que? –

+0

lo necesita para la exposición del código o para el editor? –

+1

Objective-J lo hace. es posible que desee verificar su código fuente abierto. Pero usa una sintaxis totalmente diferente similar a Objective-C e interpreta a Javascript en tiempo de ejecución afaik. – Anurag

Respuesta

24

Media Luna fresca respondió a esta pregunta en los comentarios:

JSLint contiene un analizador JavaScript escrito en JavaScript. Ver JSlint by Douglas Crockford Alrededor de la línea 2712 comienza el analizador. JSLint está escrita para manejar también html por lo que tendría que pasar por alto aquellas partes

+0

Media Luna fresca, si desea volver a publicar su comentario como respuesta, lo aceptaré y upvote. – emk

+4

Código fuente reciente, el enlace anterior fue 404: https://github.com/douglascrockford/JSLint – sibidiba

+0

Respuesta actualizada (https://github.com/douglascrockford/JSLint/blob/master/jslint.js) –

8

No es un programa de análisis en sí JavaScript, pero hay un proyecto llamado Jison (como bisonte) para la generación de analizadores que está escrito en JS.

+1

Bueno, la pregunta ** estaba ** para un analizador de JavaScript ... ?? –

7

El único metacircular interpreter que he visto implementado en JavaScript es el motor Narcissus.

Fue desarrollado también por Brendan Eich, que utiliza una gran cantidad de extensiones no estándar que son específicos de SpiderMonkey, creo que no funcionará en V8.

+0

¡Interesante! Supongo que hay un analizador sintiéndose escondido en alguna parte. :-) Lamentablemente, estoy buscando algo que se ejecute en V8. Pero gracias por el enlace muy interesante! – emk

32

UglifyJS (JS compresor/embellecedor en JavaScript) contiene un analizador completo de JavaScript que expone una API sencilla. Está fuertemente probado y utilizado en algunos proyectos grandes (WebKit).

+3

UglifyJS es genial y Gracias por esto. Gracias también por HTMLArea, lo cual fue una gran referencia para mí la hora de desarrollar un editor WYSIWYG hace unos 7 u 8 años. Sugeriría mencionar su interés cuando vincule a UglifyJS. –

+3

Solo me gustaría señalar que este analizador está listo para funcionar, y parece funcionar perfectamente. Está contenido en un archivo separado, por lo que no es necesario pasar por jslint.js para extraer partes que no necesita. +1 – Tex

0

JS/CC - La LALR (1) generador de análisis y analizador léxico para JavaScript, escrito en JavaScript - http://jscc.phorward-software.com/

+0

Es un enlace inactivo – Mahdi

+0

El enlace funciona desde la última edición – Shawn

22

El analizador fastest Javascript en Javascript era esprima.

También le da

formato Sensible para el árbol de sintaxis abstracta (AST), compatible con la API de Mozilla Analizador

5

Microsoft ha desarrollado el compilador de TypeScript en TypeScript. Dado que TypeScript es un superconjunto estricto de JavaScript, y TypeScript se compila en JavaScript, el compilador resultante es técnicamente un compilador de JavaScript escrito en JavaScript.

Eso, por supuesto, depende de su definición de "compilador". Pero si un compilador que acepta un superconjunto del lenguaje A no es un compilador del lenguaje A, eso excluye a GCC, Clang y casi todos los demás compiladores.

9

acorn es un analizador de JavaScript muy rápido escrito en JavaScript.Ahora es incluso más rápido que esprima. Los resultados que obtuve en forma Chrome esprima's speed comparison page:

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 

Es compatible con la API de analizador de Mozilla, por lo que puede utilizar para generar escodegen JavaScript desde los árboles de análisis sintáctico.

Cuestiones relacionadas