2011-02-24 13 views

Respuesta

3

Quizás desee jison, un generador de analizadores js. En términos de autocompletar/sugerir automáticamente ... la mayoría de las cosas que conozco se basan más en la finalización de palabras que en la finalización del código. Pero una vez que tienes un analizador ejecutándose, no creo que esa parte sea demasiado difícil.

+0

¿Puede proporcionarnos alguna pista sobre cómo se puede proporcionar la finalización de la palabra contextual utilizando jison? Como tomar un ejemplo de SQL: CREATE (ctrl + espacio) debería mostrar * TABLE * y así sucesivamente. –

1

Esto es difícil. Estoy haciendo el mismo tipo de cosas yo mismo.

Un enfoque es:

lo que necesita es un programa de análisis que le dará una matriz de los actualmente posibles AST para el texto hasta el token antes de la posición actual del cursor.

Desde allí puede ver que el siguiente token puede ser de varios tipos (generalmente solo uno), y completarlo, según el texto parcial.

Si alguna vez hago funcionar mi analizador incremental, le enviaré un enlace.

Buena suerte, y avíseme si encuentra un paquete que hace esto.

Chris.

+3

¿alguna vez se las arregló para hacer un analizador incremental? – Shlomi

2

un ejemplo de contenido la aplicación de asistencia (auto-completar) usando Chevrotain análisis de JavaScript DSL:

https://github.com/SAP/chevrotain/tree/master/examples/parser/content_assist

chevrotain fue diseñado específicamente para construir analizadores utilizados (como parte de) herramientas de servicios de idiomas en Editores/IDEs. Algunas de las características relevantes son:

  • automática Recuperación de Errores/tolerancia a fallos porque los editores y entornos de desarrollo deben ser capaces de manejar las entradas '' mayormente válidos.
  • Todas las reglas de Gramática se pueden usar como regla de inicio, ya que un Editor/IDE solo puede querer implementar el análisis incremental por razones de rendimiento.
+0

El análisis (incluso con recuperación de errores) es necesario, pero apenas suficiente. Los marcos de análisis en consecuencia nunca son realmente suficientes para resolver el problema. Consulte Vida después de analizar: http://www.semanticdesigns.com/Products/DMS/LifeAfterParsing.html –

+0

El analizador en el ejemplo proporcionado recopila la información sintáctica y el contexto para un procesamiento posterior en un ** paso separado **. La asistencia de contenido semántico se realiza por separado del análisis sintáctico. Las bibliotecas/marcos de análisis no son suficientes para crear servicios de lenguaje para editores/IDE.Editaré mi publicación para que quede más claro Chevrotain fue diseñado para ser ** parte ** de una cadena de herramientas para la construcción de editores. y no es una solución completa. – bd82

Cuestiones relacionadas