Pergunta

Para um pequeno projeto noite eu gostaria de escrever um componente de validação que poderia ser usado na aplicação .NET para fazer a validação de costume e tedioso de objeto, os parâmetros de entrada e pós-condições.

A minha primeira ideia era despejar toda a lógica de configuração esta validação em um arquivo configuation XML e fornecer uma interface líquido para as pessoas que gostariam de tê-lo no código.

Porque eu gostaria de entregar algo que é pensamento realmente utilizável I sobre o fornecimento de um DSL especializado (linguagem específica de domínio). A questão é o que ferramentas devo usar para fazer isso?

Eu pensei sobre analisá-lo à mão usando regex. Mas pessoalmente eu gostaria de ter algo mais ... utilizável.

Então, o que você sugeriria?

Foi útil?

Solução

Se você está procurando especificamente para um DSL, ter um olhar para o href="http://www.antlr.org/" rel="nofollow noreferrer"> ANTLR projeto . Nós usamos isso na minha empresa com bastante sucesso no passado.

Outras dicas

A coisa com DSL é que eles raramente são eficazes em isolamento. Para ser útil para escrever software real, você realmente precisa para ser capaz de incorporar o DSL dentro de uma linguagem hospedeira. Compare, por exemplo, a forma como Linq funciona vs apenas SQL reta. Outro bom exemplo é característica literal XML em VB. Ambos permitem que você escrever código real, em um propósito geral PL e inter tecer-lo com simples código de DSL declaritive.

O resultado é algo muito mais poderoso do que o autônomo SQL ou um editor XML simples.

A desvantagem para isso, infelizmente, é que nem C # ou VB ofertas quaisquer recursos de programação meta, então a única maneira de fazer isso para dominante .net devs é construir seu próprio idioma. Se isso é algo que você está fazendo apenas por diversão que você pode ser capaz de modificar o mono compilador C # para adicionar os recursos que você está interessado em que a linguagem. Outra alternativa poderia ser a de tentar rubi. Ele tem uma sintaxe flexível whic lhe permite sair com um monte de loucura. Pessoalmente, porém, eu preferiria a abordagem hackeada C #.

pode querer verificar para fora Edifício Domain Specific Languages ??em Boo (Boo é uma linguagem CLR, conceitos devem transitar para C #). Um projeto de exemplo é Simples Máquina de Estado .

Dê uma olhada Oslo da Microsoft, não tenho certeza se ele faz o que você quer, mas eu sei que você pode construir analisadores DSL e especificar gramáticas e tê-lo gerar bibliotecas de classes que podem analisar os dados com base na gramática.

Mais detalhes da linguagem "M" e como usá-lo são aqui

Por que ir tão longe? Comece usando os genéricos e uma interface fluente. Comece simples e trabalhá-lo através de alguma produção. Se o atrito é muito alto negociação com uma interface fluente, então olhar para utilizar uma ligação DSL.

Você pode tentar DSL Tools para Visual Studio.

Você deve olhar para projeto Ironia em http://irony.codeplex.com/

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