Pergunta

Eu nunca escrevi uma DSL, mas estou considerando -a como um recurso para um novo projeto (hipotético). Seria para os usuários finais poder expressar em conceitos de linguagem natural, como dias da semana entre 10 e 11, exceto na primeira segunda -feira do mês.

Usuários holandeses podem escrever WeekDagen Tussen 10 en 11 Behalve op de Eerste maandag van de maand. Nesse caso, a posição das palavras parece corresponder, mas pode haver expressões em que a posição dos verbos/substantivos etc. pode ser diferente entre os idiomas.

Eu percebo a resposta óbvia (depende). Sou desenvolvedor .NET e considero usar o Boo, mas estou aberto a sugestões. Preciso entender se cada tradução requer reescrever uma parte da implementação (que parte) ou se existe uma maneira de fazer traduções reais, talvez em algum tipo de pré -processador.

Foi útil?

Solução

Você não encontrará um tradutor capaz de fazer isso por mais de alguns idiomas (digamos entre um ou dois idiomas e o inglês), especialmente considerando o inglês que poderia ter pelo menos três maneiras de escrevê -lo.

Se você quiser escrever uma DSL, precisa criar as regras de produção primeiro (o que posso você escreve) e depois trabalha em uma maneira de expressá -lo em inglês/holandês/marciano/etc.

Por exemplo: cronograma: = inclusão de quadros [exceção

qual seria:

  • Quadro: mês, ano, semana, durante a semana, fins de semana, dias do mês, feriados, etc
  • Inclusão: entre, não em, em torno, contendo, etc.
  • Exceção: exceto [cronograma], mas não [cronograma], a menos que [cronograma

Você pode se preocupar com um Lexer/analisador que corrige uma gramática específica e a coloca nessa forma de produções.

Estes estão fora do topo da minha cabeça e nem perto, mas devem ser suficientes para começar.

Outras dicas

Um DSL criado com o Ferramentas de linguagem específicas de domínio pode ser localizado. Eles colocam todas as cordas em arquivos .Resx.

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