parser online javascript parsing generator lexer

javascript parser online



Lexer escrito en Javascript? (10)

Algo como http://jscc.phorward-software.com/ , tal vez?

JS / CC es el primer sistema de desarrollo de analizador disponible para JavaScript y ECMAScript -derivados. Se ha desarrollado, ambos, con la intención de construir un sistema de desarrollo de compilador productivo y con la intención de crear un entorno académico fácil de usar para las personas interesadas en cómo la generación de la tabla sintáctica se hace de forma general en el análisis ascendente.

Las uniones de software independiente de la plataforma: un generador de analizador léxico basado en expresiones regulares que combina tokens individuales de la secuencia de caracteres de entrada y un generador de analizadores LALR(1) , calcula las tablas de análisis para una especificación de gramática libre de contexto dada y construye un stand- solo, analizador de trabajo. La gramática libre de contexto alimentada a JS / CC se define en un metalenguaje basado en Backus-Naur-Form y permite evaluar la inserción de un código semántico individual en una reducción de regla.

JS / CC en sí se ha escrito completamente en ECMAScript por lo que se puede ejecutar de muchas maneras diferentes: como JavaScript independiente de la plataforma, incrustado en un sitio web, como una aplicación de Windows Script Host, como un ejecutable JScript.NET compilado, como una aplicación interpretada de Mozilla / Rhino o Mozilla / Spidermonkey, o una secuencia de comandos de shell V8 en Windows, * nix, Linux y Mac OSX. Sin embargo, para una ejecución productiva, se recomienda utilizar las versiones de línea de comandos. Estas versiones son capaces de ensamblar un compilador completo a partir de una especificación del analizador JS / CC, que luego se almacena en un archivo fuente JavaScript .js.

Tengo un proyecto donde un usuario necesita definir un conjunto de instrucciones para una interfaz de usuario que está completamente escrito en JavaScript. Necesito tener la habilidad de analizar una cadena de instrucciones y luego traducirlas en instrucciones. ¿Hay bibliotecas para analizar que sean 100% javascript? ¿O un generador que se generará en javascript? ¡Gracias!


Aquí hay un ejemplo de un analizador para un lenguaje de instrucciones "pseudo" natural, que se implementó en JavaScript puro con Chevrotain Parsing DSL :

https://github.com/SAP/chevrotain/blob/master/examples/parser/inheritance/inheritance.js

Este ejemplo incluso incluye soporte para múltiples idiomas naturales (inglés y alemán) usando herencia gramatical.

Chevrotain cae dentro de la categoría de "bibliotecas para analizar que son 100% javascript" ya que no genera código . Usar Chevrotain es similar a "crear a mano" un analizador sintáctico decente recursivo, solo que sin la mayoría del dolor de cabeza como:

  • Creación de funciones de anticipación (decidir qué alternativa tomar)
  • Recuperación automática de errores.
  • Detección de recursión izquierda
  • Detección de ambigüedad
  • Información de posición
  • ...

como Chevrotain maneja eso automáticamente.


Estaba buscando algo similar que no tuviera agujeros de seguridad y encontré dos recursos. No analizan el script, sino que lo ejecutan en un entorno "seguro", algo que no puedes garantizar al usar la función eval . Por lo tanto, no sé si es exactamente lo que está buscando, pero eche un vistazo:

  1. jsandbox - Javascript sandbox
  2. Google Caja - iframe virtual.



Si desea generar analizadores de JavaScript y generadores de código, consulte la implementación de MetaII en Javascript.

Un tutorial de MetaII Compiler lo guiará en la creación de un sistema de compilación completamente autónomo que puede traducirse a sí mismo y a otros idiomas:

Tutorial MetaII Compiler

Todo esto está basado en un asombroso pequeño artículo técnico de 10 páginas de Val Schorre: META II: Un lenguaje de escritura compilador sintaxis de honesto a dios 1964. ¡La autodescripción completa del compilador de MetaII es de aproximadamente 30 líneas! Aprendí cómo compilar compiladores a partir de esto en 1970. Cuando finalmente comprendes cómo el compilador puede regenerarse, hay un momento alucinante ...

El tutorial explica MetaII, cómo funciona e implementa MetaII compilando MetaII en JavaScript. Puede modificar fácilmente este compilador para analizar otros idiomas y producir Javascript diferente.

Conozco al autor del sitio web de mis días universitarios, pero no tengo nada que ver con el sitio web.


Si quieres un Lexer y nada más que un Lexer, eche un vistazo a esto: https://github.com/aaditmshah/lexer

Es un lector de JavaScript puro con muchas características potentes escritas en unas pocas líneas de código.


Si realmente estás buscando solo un Lexer, intenta prettify .



Dependiendo del diseño del "conjunto de instrucciones", es posible que pueda utilizar la función de eval incorporada de Javascript, que analiza la fuente de Javascript; puede escribir un traductor simple para convertir las instrucciones a código Javascript.

Por cierto, ten mucho cuidado con los agujeros XSS.