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.
Respostas:
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:
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.
Em Compor contratos: uma aventura em engenharia financeira , Simon Peyton Jones et al fornece semântica denotacional a uma DSL financeira.
A Semântica Estática e Denotacional de uma Linguagem Específica de Domínio para Design de Rede de Fluxo por Assaf Kfoury apresenta uma semântica denotacional para uma DSL de rede de fluxo
A tese de Andrei Lapets A Semântica Algébrica de Línguas Específicas de Domínio discute a semântica algébrica de DSLs.
Há muito mais: isto , aquilo , um em termos de máquinas abstratas , outro .
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.
fonte