2008-09-19 11 views
7

Estoy creando una DSL con un editor tipo plantilla, muy parecido a los sistemas de reglas en Alice. Los usuarios podrán seleccionar relaciones de una lista así como los objetos para aplicar la relación. Estas dos listas deben filtrarse en función de los tipos aceptables; por ejemplo, si la relación es "mayor que", los objetos disponibles deben ser de un tipo para el que se implemente "mayor que".Implementación del comportamiento similar a IntelliSense en editores personalizados para lenguajes específicos de dominio

Del mismo modo, si se selecciona un objeto que es no comparable con mayor que, entonces esa relación no debe estar en la lista de relaciones potenciales. Creo que el corazón de este problema es un verificador de tipos, pero no estoy seguro de la mejor manera de incorporar ese tipo de lógica en mi aplicación. ¿Alguien conoce las bibliotecas de comprobación de tipos existentes para DSL?

Estoy especialmente interesado en las tecnologías de código abierto y multiplataforma. Java es probablemente el lenguaje que terminaremos usando, pero eso no es fijo.

+0

Me pregunto qué pasó con esto? ¿Encontraste una buena solución? En mi opinión, Intellisense sería monstruosamente difícil de implementar desde el punto de vista de la usabilidad. Encontrar el equilibrio adecuado entre receptividad e intrusión parece una tarea increíblemente complicada. Según mi experiencia, la implementación de Microsoft está muy por encima de cualquier otra cosa. La implementación de Eclipse se siente tan torpe. Me interesaría mucho saber si encontraste algo bueno. – Alex

+0

Este fue un proyecto de trabajo, y me detuvieron para trabajar en otro proyecto, por lo que mis esfuerzos en este (sortof) desaparecieron. Aparte de eso, creo que (Alex) y yo estamos interesados ​​en diferentes aspectos de 'intellisense'. En lugar de trabajar en la interfaz de usuario real, estaba más preocupado por el diseño detrás de un sistema de autocompletar de propósito general. (La IU vendría más tarde). – rcreswick

Respuesta

2

Puede consultar Scintilla. Es el componente de edición utilizado por Notepad ++, entre otras herramientas. Tiene algo de apoyo para hacer autocompletado, aunque no he intentado usarlo yo mismo, así que no estoy seguro de qué tan bien funciona. Es de código abierto, por lo que si no satisface tus necesidades, creo que puedes ampliarlo sin demasiada molestia.

Cuestiones relacionadas