Digamos, por exemplo, que eu quis pagar alguém para criar uma linguagem de programação ou linguagem de script para mim. Que tipo de documento eles precisariam para entender completamente o que é exatamente o que eu quero.
Quero dizer, existem documentos padrão que descrevem a nova linguagem de programação / script em questão?
Respostas:
O que você precisa escrever é chamado de especificação de linguagem .
Deve conter uma descrição da gramática da língua (de preferência na forma Backus-Naur estendida ) e sua semântica.
Para a última parte, você pode escrever uma descrição com suas próprias palavras (mas tome cuidado para ser preciso) ou uma semântica formal .
fonte
Você precisará do seguinte:
Como o seu idioma será diferente? Qual é a sua missão? É funcional? É orientado a objetos? É uma meta-linguagem? Quais são as suas características únicas? O que dará ao mundo que não existe (ou existe de maneira feia)? Como você quer mudar as coisas? É compilado ou interpretado? Uma linguagem DSL ou de uso geral? Essa é a sua filosofia e determina muito sobre o design do seu idioma.
Em seguida, trabalhe no desenho de sintaxe e semântica aproximadas. Esta será sua definição semântica ... escrever código falso é uma ótima maneira de desenvolver seus pensamentos. Leia "The C Programming Language" para um excelente exemplo de como isso é feito. Brinque com isso.
Você precisará definir seus tokens e sintaxe de alguma forma. Os programas então os processam em autômatos capazes de ler em strings e processar a sintaxe. Yacc e Bison usam expressões regulares e uma sintaxe de estilo BNF para análises lexicais e de sintaxe, respectivamente. Existem também ferramentas Yacc e Bison para outros idiomas.
Você também precisará de uma base na teoria da linguagem / compiladores para saber o que NÃO deve fazer. Os exemplos incluem gramáticas ambíguas, problemas de geração e manipulação de AST e geralmente como tornar a vida mais simples. Conhecer a teoria é muito importante. Eu consideraria começar o seguinte:
Compiladores: Princípios, Técnicas e Ferramentas (Dragon Book)
Implementação moderna do compilador em C ou Implementação moderna do compilador em Java
fonte
99,9% do tempo criando um novo idioma é completamente desnecessário. O retorno do investimento provavelmente seria pequeno e você teria perdido seu tempo.
Provavelmente você pode usar o Javascript como uma linguagem de script suscetível e já existem analisadores disponíveis para a maioria dos idiomas. Você também pode usar outras linguagens de script que desejar, se encontrar um analisador adequado para elas. Implementá-las em seu programa exigiria muito menos trabalho e teria um retorno maior. As pessoas não precisam aprender outro idioma, apenas precisam aprender sua API. É uma solução muito melhor.
Criar um novo idioma é quase sempre ruim.
fonte
Você pode descrever a gramática do seu idioma no BNF .
Por exemplo, esta é a gramática do Python .
fonte
se você estiver usando o .NET, aqui está algo que eu encontrei há algum tempo. Só dei uma olhada curiosa, mas talvez lhe fosse útil: ironia .
fonte