Pregunta

Nunca he escrito una conexión DSL, pero estoy considerándolo como una característica para un nuevo proyecto (hipotética). Sería para los usuarios finales puedan expresar en conceptos de lenguaje natural tales como días de semana entre 10 y 11, excepto el primer lunes del mes .

Los usuarios holandeses podrían escribir weekdagen tussen 10 es 11 behalve op de Eerste maandag van de maand . En este caso, la posición de las palabras parece coincidir, pero puede haber expresiones donde la posición de los verbos / sustantivos etc. podría ser diferente entre los idiomas.

Me doy cuenta de que la respuesta obvia ( Depende ). Soy un desarrollador de .NET y considero que el uso de Boo, pero estoy abierto a sugerencias. Necesito entender wether cada traducción requiere volver a escribir una parte de la aplicación (que parte) o si hay una manera de hacer traducciones reales, tal vez en algún tipo de preprocesador.

¿Fue útil?

Solución

No vas a encontrar un traductor que es capaz de hacer esto por más de unos pocos idiomas (digamos entre uno o dos idiomas y Inglés), especialmente teniendo en cuenta Inglés que a su vez podría tener al menos 3 formas de escribir la misma.

Si desea escribir un DSL, tiene que subir con las normas de producción primero (lo que puede que escribir) y luego trabajar en una forma de expresarlo en Inglés / holandés / marciana / etc.

Por ejemplo: Horario: = Frame Inclusión [Excepción]

que sería:

  • Marco: Mes, Año, Semana, los días laborables, fines de semana, días del mes, días de fiesta, etc.
  • Inclusión: Entre, no dentro, alrededor Contiene, etc.
  • Excepción: Excepto [Programa], pero no [Programa], A menos que [Programa]

A continuación, puede preocuparse por un analizador léxico / analizador que corrige una gramática específica y lo pone en esa forma de producciones.

Estos son la parte superior de la cabeza y ni siquiera cerca, pero debería ser suficiente para empezar.

Otros consejos

Un DSL creados con las Específico de dominio Herramientas del idioma puede ser localizado. Se colocan todas las cadenas en archivos .resx.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top