Descrição formal de uma nova linguagem de programação específica de domínio


8

Estou prestes a implementar uma linguagem específica de domínio para representação de convenções de aprendizagem social. Parte da implementação é uma descrição formal de uma linguagem - seu 'cálculo', símbolos e expressões lógicas.

Minha abordagem seria descrever a linguagem descrevendo sua gramática, mas também existem conceitos como relações, diálogos, expectativas que exigem uma abordagem mais teórica e a descrição da lógica.

Gostaria de pedir um exemplo e uma recomendação de literatura (artigos, livros) que me ajudassem com essa descrição. Sinto-me relativamente competente ao abordar esta tarefa, por isso não estou pedindo uma mão total, mas a ajuda de um teórico nessa área seria MUITO apreciada.


Os sons são realmente muito interessantes. Descrever a gramática é fácil. Fornecer semântica para conceitos específicos de domínio é uma área de pesquisa aberta. Você pode começar pesquisando no Google: "idiomas específicos do domínio da semântica".
24412 Dave Clarke

O que você já sabe sobre escrever semântica de linguagem formal?
Dave Clarke

Respostas:


10

Há duas partes da semântica que você precisará descrever:

  • semântica estática : estrutura de programas bem formados

  • semântica dinâmica : significado da execução de programações

A semântica estática geralmente assume a forma de sistemas de tipos. Eu recomendo olhar os livros de Benjamin C Pierce e Robert Harper . Como alternativa, você pode escrever as regras de programas bem formados como uma coleção de instruções (formais ou informais) que descrevem as condições de validade do seu programa. A abordagem formal adotada pelos sistemas de tipos fornece uma estrutura bem conhecida para essas especificações.

Existem muitos formalismos para expressar a semântica dinâmica a ser considerada como sua base:

  • semântica denotacional --- dá significado em termos de domínios semânticos
  • semântica operacional --- dá significado em termos de mudanças nos estados abstratos de uma máquina
  • semântica axiomática --- dá significado em termos de afirmações sobre o estado da máquina
  • semântica algébrica --- a semântica é definida em termos de leis algébricas.

Deve haver muitos livros sobre esses tópicos. Uma boa introdução é Nielson e a Semantics with Applications de Nielson . Uma versão para download está disponível no site dos autores . Há também uma edição mais recente, mas ainda não a vi.

Dentro de cada uma delas, há opções a serem feitas. Por exemplo, se você decidir usar a semântica operacional, existem semânticas de etapas grandes, semânticas de etapas pequenas, semânticas baseadas em sistemas de transição rotulados, semânticas baseadas na lógica de reescrita.

Que tipo de abordagem você deve adotar dependerá do tipo de linguagem que seu DSL é, que tipo de experiência você tem com o design da semântica e sua preferência pessoal.

Sem detalhes concretos, não posso ajudar mais.


@ Edmon, eu estaria interessado em saber mais.
Dave Clarke

Eu certamente compartilharei à medida que progredir. Talvez eu faça isso no meu blog e também envolva você e o resto da comunidade aqui, pois encontro áreas nas quais preciso de ajuda. Obrigado pela ótima resposta.
Edmon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.