Pergunta

Eu estou me provocou mais e mais para DSLs em desenvolvimento. Eu desenvolvi um minúsculo com F # usando fslex e fsyacc mas as mensagens de erro são imprecisas (eu também não consigo encontrar uma maneira de gerar melhores, parece haver pouca documentação sobre como lidar com casos de erro) e o fato de que eles não vão analisar cadeias Unicode adequadamente não é aceitável para mim. Para encurtar a história, eu estou olhando para obter ferramentas tornando-se muito simples para desenvolver uma DSL (as ferramentas do Visual Studio para que são realmente nada como o que eu estou atrás) e eu estou mais interessado na parte de geração de análise / AST. Eu olhei para ANTLR e misturar código e definição de gramática olhares meta-linguagem ruim para mim, por isso, não mencioná-la ou soluções que sofrem de um problema semelhante nas respostas. Além disso, eu já vi há algumas coisas para uma linguagem chamada Boo mas eu realmente não estou interessado em mexer com ainda uma outra língua (especialmente se ela tem pouco apoio) agora, de modo que não cabe qualquer um. Qualquer outra sugestão é apreciada, enquanto ele está decentemente documentado, funciona bem com .NET e por último mas não menos importante, não envolve o uso de uma linguagem ou uso do DLR tipagem dinâmica.

Foi útil?

Solução

Você quer começar a trabalhar com Oslo. Ele inclui as ferramentas para definir o DSL e ferramentas para definir gramáticas sobre o DSL. As gramáticas pode emitir um AST ou qualquer outra coisa.

Um tipo de saída pode gerar a partir do DSL é ia correspondente esquema SQL Server. Instâncias do DSL pode, portanto, ser armazenado no SQL Server Express (ou acima).

Oslo é parte de uma visão mais ampla que a Microsoft tem, mas você pode ignorar isso e apenas a começar com a parte "DSL".

Eu recomendo que você começar e manter-se activo em deixar Microsoft sabe o que você gosta e não gosta sobre ele. Você tem sua atenção agora, quer você saiba disso ou não.

Outras dicas

Talvez você poderia dar Oslo uma tentativa. Pessoalmente, eu não usei ainda, mas os exemplos estão procurando bastante interessante.

"Oslo" consiste em: Uma ferramenta que ajuda as pessoas a definir e interagir com modelos de uma forma rica e visual Uma linguagem que ajuda as pessoas a criar e usar textuais linguagens específicas de domínio e modelos de dados Um repositório relacional que faz modelos disponíveis para ambas as ferramentas e componentes da plataforma

Aqui é uma espécie de visão geral!

Você ainda pode querer olhar para o código-fonte do Boo para ver como eles fazem as coisas. Eles também usam ANTLR para gerar o analisador. Você não precisa de misturar qualquer código com ANTLR gramáticas-lo pode ser útil como completamente descritivo, contanto que é um LL (*) langauge.

A ironia - localizado em Ironia @ CodePlex pode ser uma boa solução para você - você pode construir a sua gramática utilizando a funcionalidade interna do .NET langauges em vez de tentar construir BNF arquivos de gramática separadamente.

A maneira mais fácil para criar uma DSL em Inglês quase liso: Criar seu próprio DSL for Java ou C # (parte 4): a adição de uma camada semântica

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top