2009-03-04 13 views
7

Estoy trabajando en un pequeño proyecto de editor de texto y quiero agregar resaltado de sintaxis básica para un par de idiomas (Java, XML ... solo por nombrar algunos) Como experiencia de aprendizaje, quería agregar uno de los analizadores de lexer de Java populares o no populares.¿Qué analizador de lexer orientado a Java para proyecto simple (ANTLR, DIY, etc.)

¿Qué proyecto me recomienda? Antlr es probablemente el más conocido, pero parece bastante complejo y pesado.

Aquí están las opciones que conozco.

  1. Antlr
  2. Ragel (sí, puede generar fuente de Java para la entrada de procesamiento)
  3. hágalo usted mismo (supongo que podría escribir un simple analizador de señal y resaltar el código fuente).
+0

ANTLR. sin duda. –

Respuesta

8

ANTLR o JavaCC serían los dos que conozco. Yo recomendaría ANTLR primero.

+0

¿Crees que es demasiado pesado o complicado?Eso es lo único que me impide utilizar Antlr. Pero es popular y parece ser muy estable. –

+0

Si estás hablando de analizar un lenguaje como Java, diría que es lo correcto. Hay gramáticas Java disponibles para usted, por lo que solo será cuestión de recorrer el AST y generar lo que desee de él. – duffymo

+0

¿Sabe o sabe? Recomendar uno sobre el otro significa que deberías haber usado ambos, ¿no crees? –

-1

No creo que necesite un lexer. todo lo que necesita es leer primero la extensión del archivo para detectar el idioma y luego, desde un archivo xml que enumera las palabras clave del idioma, encontrarlas fácilmente y resaltarlas.

+0

No, voy a necesitar al menos un lector simple para lo que voy a terminar haciendo. Además, me da cierta flexibilidad dependiendo del idioma. –

1

SableCC

Otra opción interesante (que no probé todavía) sería xtext, que utiliza Antlr pero también incluye herramientas para crear editores de Eclipse para su idioma.

0

Lo he hecho con JFlex antes y estaba bastante satisfecho con él. Pero el lenguaje que estaba resaltando era tan simple que no necesitaba un generador de analizadores sintácticos, por lo que su kilometraje puede variar.

1

ANTLR es el camino a seguir. No lo construiría a mano. También encontrará si usted mira alrededor en el sitio web antlr que grammars están disponibles para Java, XML, etc.

0

JLex y CUP son generadores analizadoras y analizador decente, respectivamente. Actualmente estoy usando ambos para desarrollar un lenguaje de scripting simple para un proyecto en el que estoy trabajando.

1

Otra opción sería Xtext. No solo generará un analizador para su gramática, sino también un editor completo con coloreado de sintaxis, marcadores de error, asistencia de contenido y vista de esquema.

3

ANTLR puede parecer complejo y pesado pero no necesita usar todas las funcionalidades que incluye; está muy bien acodado. Soy un gran fan de usarlo para desarrollar analizadores. Para empezar, puede usar el excelente ANTLRWorks para visualizar y probar las gramáticas que está creando. Es realmente agradable poder ver capturar tokens, construir árboles de análisis y avanzar en el proceso.

Para su proyecto de editor de texto, verificaría filter grammars, que podría satisfacer sus necesidades. Para las gramáticas de filtro no necesita especificar toda la estructura léxica de su idioma, solo las partes que le interesan (es decir, que necesita resaltar, colorear o indexar) y siempre puede agregar más hasta que pueda manejar un idioma completo.

+0

¡Tus enlaces realmente útiles! – tiboo

2

El código de Google tiene un nuevo proyecto acacia-lex. Escrito por mí mismo, parece simple (hasta ahora) java lexer usando anotaciones javax.

Cuestiones relacionadas