2010-10-11 33 views
9

Me gustaría escribir un embellecedor de código y pensé en usar Ruby para hacerlo. ¿Podría alguien mostrarme un lugar para comenzar? He visto muchos embellecedores de código en línea, pero nunca encontré tutoriales sobre cómo escribir uno. ¿Es esto una tarea muy desafiante para alguien que nunca ha emprendido ningún proyecto, como escribir un compilador, analizador sintáctico, etc. anteriormente?Escribiendo un embellecedor de código

(¿Hay alguna otra langauge que sería más adecuado para este tipo de tareas, con exclusión de C/C++?)

+0

Incluso si C o C++ fueran más adecuados para esta tarea, ¿aún los excluiría? –

+0

@Roger: Probablemente no sepa C/C++ muy bien es mi suposición. – Chris

+0

Roger tiene razón. No he usado C/C++ desde mis días universitarios. : p –

Respuesta

2

Python tiene una característica interesante - que expone su propio programa de análisis de secuencias de comandos. Hay are examples que usan AST - árbol de sintaxis abstracto - y hacen la bonita impresión.

No soy consciente de que Ruby expone su propio analizador a sus scripts de esa manera, pero hay analizadores sintácticos para Ruby escritos en Ruby here.

+0

curioso los votos a favor sin comentarios – Will

2

Bueno ... creo que los pasos iniciales son lo que haría para cualquier proyecto.

Escriba una lista de requisitos. Describa una interfaz de usuario para su programa, que le guste y que no le impida cumplir esos requisitos. Ahora puede escribir más de un diseño de "código" y elegir el idioma que le resulte más fácil para cumplir ese diseño.

Aquí hay algunos requisitos de la parte superior de mi cabeza:

  • Soporta código de embellecimiento de idiomas: Ruby, Python, Perl
  • Código de salida se comporta de forma idéntica a la entrada
  • La salida tiene el uso constante de las pestañas/espacios
  • de salida tiene una función consistente convención de nomenclatura
  • salida tiene convención de nomenclatura variable de coherente
  • salida tiene apoyos a juego y la sangría

hacer tantas como quiera, es su programa. ; p Estaba bromeando sobre el Perl, pero creo que todos los idiomas que admite agregarán más trabajo.

+0

+1. Se trata de encontrar sus requisitos y luego ver qué herramienta se adapta mejor a ellos, al igual que para cualquier problema. P.ej. el requisito de "Me gustaría aprender Ruby" podría ser tan importante como los demás y sesgar las cosas en esa dirección. :) –

+0

¿Podría decirme qué herramientas tengo que usar? ¿Debo usar herramientas como Lex y Yacc o las que están destinadas a otra cosa? Leí en alguna parte que necesito analizar el código en tokens o algo así y luego puedo manejarlo, pero eso es todo lo que sé. Gracias. –

+0

Las líneas Tokenizing definitivamente serán parte de su programa. Mira el rubyBeautifier germanlinux vinculado a, no es un programa largo. Usó expresiones regulares, lo cual es perfecto para esto.Son difíciles de aprender, pero muy útiles. No sé Ruby, pero parece que puedes usar la función .split (delimitador) en una cadena para cortarla en tokens. Sin embargo, las expresiones regulares son probablemente el camino a seguir. – axus

Cuestiones relacionadas