2012-05-29 14 views
5

Soy nuevo en el analizador de Rhino. ¿Puedo usar este analizador de rinocerontes en código javascript para extraer el Árbol de sintaxis abstracta del código javascript en cualquier archivo html? Si es así, ¿por qué debo comenzar esto? Esto es para Analizar AST del código para calcular la relación entre palabras clave y palabras usadas en JavaScript, para identificar esquemas de descifrado comunes y para calcular las ocurrencias de ciertas clases de llamadas a funciones como fromCharCode() , eval() y algunas funciones de cadena que se usan comúnmente para el descifrado y la ejecución de exploits de unidad por descarga.Usando el analizador de Rhino en el código de javascript para analizar las cadenas en javascript

+0

FYI: Una API AST se añadió en [Rhino 1.7R3] (https://developer.mozilla.org/en-US/ docs/New_in_Rhino_1.7R3) – McDowell

Respuesta

3

Hasta donde yo sé, no se puede acceder al AST desde JavaScript en Rhino. Sin embargo, miraría el analizador Esprima. Es un analizador de JavaScript completo escrito en JavaScript y tiene una API simple para hacer análisis de código.

Aquí es un ejemplo sencillo que calcula la palabra clave para identificadora ratio:

var tokens = esprima.parse(script, { tokens: true }).tokens; 
var identifierCount = 0; 
var keywordCount = 0; 

tokens.forEach(function (token) { 
    if (token.type === 'Keyword') { 
     keywordCount++; 
    } 
    else if (token.type === 'Identifier') { 
     identifierCount++; 
    } 
}); 

var ratio = keywordCount/identifierCount; 
+0

Este analizador fue muy bueno. El código anterior funcionó para mí. Gracias. ¿Puede proporcionar un tutorial para este analizador para que pueda extraer el AST del código javascript de una página web en javscript – user1335906

+0

? No he hecho mucho con él todavía, así que no tengo ninguna experiencia con ese tipo de cosas. La función 'parse' devuelve el AST, por lo que no debería ser demasiado difícil. La documentación está en http://esprima.org/doc/index.html y el blog del autor (http://ariya.ofilabs.com/) tiene algunos ejemplos de cómo usarlo. Espero que esos ayuden. –

Cuestiones relacionadas