Pegjs: ¿Preprocesador? Regenerar el código fuente

Creado en 12 nov. 2017  ·  5Comentarios  ·  Fuente: pegjs/pegjs

Estoy creando extensiones para un lenguaje existente como preprocesador. No pude averiguar si hay una manera de hacer que pegjs regenere el código fuente. Básicamente, quiero que analice la fuente, quiero modificar el AST y luego regenerar la fuente. ¿De todos modos esto es posible?

discussion question

Comentario más útil

@YemSalat tiene razón, PEG.js es solo un generador de analizador.

  1. Cree un analizador con PEG.js (asegúrese de que las acciones devuelvan AST)
  2. Analice su idioma con el analizador generado para construir un AST
  3. Modifique el AST usando transform pass's
  4. Regenerar el código fuente

Como puede ver, PEG.js solo está involucrado en el primer paso, por lo que si desea regenerar la fuente, debe construir un compilador usted mismo, o si ya existe un compilador o generador (cadena de herramientas) para el lenguaje, sugiero o devuelve AST compatible con la cadena de herramientas o agrega una transformación que altera el AST para que sea más compatible con la cadena de herramientas.

Cerrando, ya que esto no es realmente un problema con PEG.js, pero le invitamos a continuar la discusión.

Todos 5 comentarios

@mattkanwisher lo siento, no entiendo muy bien a qué te refieres con "regenerar" la fuente.
¿Podría aclarar un poco? Si te refieres a producir código basado en el AST, tendrías que escribir esa lógica tú mismo, ya sea directamente en la gramática o como una pieza separada.

Sí, producir código basado en el AST, así que tengo que generar un compilador a la fuente original si quiero preprocesar usando esto.

Hmm, si desea la fuente _original_, aún la tendrá sin necesidad de generarla, ¿verdad?
Pero si desea una versión modificada, tendrá que escribir la lógica de generación de código usted mismo.
( @Mingun @futagoza por favor

@YemSalat tiene razón, PEG.js es solo un generador de analizador.

  1. Cree un analizador con PEG.js (asegúrese de que las acciones devuelvan AST)
  2. Analice su idioma con el analizador generado para construir un AST
  3. Modifique el AST usando transform pass's
  4. Regenerar el código fuente

Como puede ver, PEG.js solo está involucrado en el primer paso, por lo que si desea regenerar la fuente, debe construir un compilador usted mismo, o si ya existe un compilador o generador (cadena de herramientas) para el lenguaje, sugiero o devuelve AST compatible con la cadena de herramientas o agrega una transformación que altera el AST para que sea más compatible con la cadena de herramientas.

Cerrando, ya que esto no es realmente un problema con PEG.js, pero le invitamos a continuar la discusión.

Así que lo descubrí. Para cualquiera que aterrice en esta publicación de error en el futuro. Simplemente lea el código fuente de "The super tiny compiler". Después de eso, pude usar pegjs para construir mi preprocesador en unas pocas horas

https://github.com/thejameskyle/the-super-tiny-compiler

¿Fue útil esta página
0 / 5 - 0 calificaciones