Describir formalmente un nuevo lenguaje de programación específico de dominio.

8

Estoy a punto de implementar un lenguaje de dominio específico para la representación de convenciones de aprendizaje social. Parte de la implementación es una descripción formal de un lenguaje: su 'cálculo', símbolos y expresiones lógicas.

Mi enfoque sería describir el lenguaje describiendo su gramática, pero también hay conceptos como relaciones, diálogos, expectativas que requieren un enfoque más teórico y la descripción de la lógica.

Me gustaría pedir un ejemplo y una recomendación de literatura (documentos, libros) que me ayudaría con esta descripción. Me siento relativamente competente al abordar esta tarea, así que no estoy pidiendo una mano total, pero la ayuda de un teórico en esta área sería muy apreciada.

Edmon
fuente
Los sonidos realmente muy interesantes. Describir la gramática es la parte fácil. Proporcionar semántica para conceptos específicos de dominio es en gran medida un área de investigación abierta. Puede comenzar buscando en Google: "lenguajes específicos del dominio semántico".
Dave Clarke el
¿Qué sabes sobre escribir semántica de lenguaje formal?
Dave Clarke el

Respuestas:

10

Hay dos partes de la semántica que deberá describir:

  • semántica estática : estructura de programas bien formados

  • semántica dinámica : significado de ejecutar programaciones

La semántica estática generalmente toma la forma de sistemas de tipos. Recomiendo mirar los libros de Benjamin C Pierce y Robert Harper . Alternativamente, puede escribir las reglas de programas bien formados como una colección de declaraciones (formales o informales) que describen las condiciones de validez de su programa. El enfoque formal adoptado por los sistemas de tipos proporciona un marco bien conocido para tales especificaciones.

Hay muchos formalismos para expresar la semántica dinámica a considerar como base:

  • semántica denotacional --- da sentido en términos de dominios semánticos
  • semántica operacional --- da significado en términos de cambios a los estados abstractos de una máquina
  • semántica axiomática --- da sentido en términos de afirmaciones sobre el estado de la máquina
  • semántica algebraica --- la semántica se define en términos de leyes algebraicas.

Debería haber muchos libros sobre estos temas. Una buena introducción introductoria es la semántica con aplicaciones de Nielson y Nielson . Una versión descargable está disponible en el sitio de los autores . También hay una edición más nueva, pero no la he visto.

Dentro de cada uno de estos, hay que tomar decisiones. Por ejemplo, si decide utilizar la semántica operativa, hay semántica de pasos grandes, semántica de pasos pequeños, semántica basada en sistemas de transición etiquetados, semántica basada en lógica de reescritura.

El tipo de enfoque que debe adoptar dependerá de qué tipo de lenguaje sea su DSL, qué tipo de experiencia tenga con el diseño de la semántica y sus preferencias personales.

Sin ningún detalle concreto, no puedo ayudar más.

Dave Clarke
fuente
@ Edmon Me interesaría saber más.
Dave Clarke el
Sin duda compartiré a medida que avance. Podría hacerlo en mi blog y también involucrarlo a usted y al resto de la comunidad aquí cuando encuentre áreas en las que necesito ayuda. Gracias por la gran respuesta.
Edmon