Como criar uma linguagem de programação

Muitas pessoas têm dificuldades ou frustrações com as linguagens de programação que usam todos os dias. Alguns querem que as coisas sejam tratadas mais abstratamente, enquanto outras não gostam de implementar recursos que desejavam ser `padrão`. Se você é um profissional de TI ou apenas um hobbyist, muitas vezes você pode se encontrar querendo criar uma nova linguagem de programação.

Passos

  1. Criar uma linguagem de programação Passo 1
1. Tornar-se familiarizado com a tecnologia. Você não pode criar uma linguagem de programação se você não sabe como usar um computador.
  • Imagem intitulada Criar uma linguagem de programação Etapa 2
    2. Tornar-se familiarizado com a terminologia. Os escritores do compilador geralmente usam terminologia desconhecida. Leia os compiladores antes de prosseguir. Certifique-se de saber tudo o que você precisa saber.
  • Criar uma linguagem de programação Passo 3
    3. Decida qual problema seu idioma está resolvendo. É abordando um problema específico de domínio, ou é uma linguagem de propósito geral?
  • Criar uma linguagem de programação Passo 4
    4. Pense na semântica da sua língua e dos conceitos disso.
  • Você vai permitir acesso direto ao ponteiro ou não?
  • Quais são os tipos de dados do seu idioma??
  • É uma linguagem estática ou dinâmica?
  • Qual é o seu modelo de memória?? Você vai usar um coletor de lixo ou gerenciamento de memória manual? (Se você usar um coletor de lixo, prepare-se para escrever um ou adaptar um existente ao seu idioma.)
  • Como vão lidar com simultaneamente? Você vai usar um modelo simples de rosqueamento / bloqueio ou algo mais complexo como Linda ou o modelo de ator? (Desde hoje, os computadores têm vários núcleos.)
  • Existem funções primitivas incorporadas na linguagem ou terão tudo de uma biblioteca?
  • Qual é o paradigma ou paradigmas do seu idioma?? Funcional? Orientado a Objeto? Protótipo (como jаvascript)? Orientada para aspectos? Modelo orientado? Ou algo totalmente novo?
  • Como sua linguagem vai interface com bibliotecas e idiomas existentes (principalmente c)? Este ponto é importante se você estiver construindo uma linguagem específica de domínio.
  • Finalmente, algumas das respostas a essas perguntas serão respondidas pelo segundo passo e ajudarão você a responder ao próximo passo.
  • Criar uma linguagem de programação Passo 5
    5. Pense em algumas tarefas específicas que alguém gostaria de ser capaz de realizar com sua linguagem. Por exemplo, "eles podem querer direcionar um robô para seguir uma linha" ou "eles podem querer criar programas de desktop relativamente portáteis" ou "eles podem querer criar aplicativos da Web com ele".
  • Criar uma linguagem de programação Passo 6
    6. Experimente as ideias de sintaxe (o texto da linguagem) para os exemplos acima.
  • Tenha cuidado para manter seu idioma na categoria de idioma livre de contexto ou algo dentro dele. Seu gerador de parser e você vai apreciar isso mais tarde.
  • Criar uma linguagem de programação Passo 7
    7. Escreva uma gramática formal para a sintaxe.
  • Criar uma linguagem de programação Etapa 8
    8. Decidir se a linguagem será interpretada ou compilada. O que significa que no mundo interpretado, seu usuário normalmente editará seu programa em um editor e executá-lo diretamente no intérprete - enquanto estiver no mundo compilado, seu usuário editará seu programa, compilá-lo, salvar o executável resultante em algum lugar e execute-o.
  • Criar uma linguagem de programação Etapa 9
    9. Escreva o scanner e o analisador front-end ou encontre uma ferramenta que o ajude com isso.


  • Além disso, pense em como seu compilador / intérprete irá avisar seu usuário sobre programas errados e erros de sintaxe.
  • Criar uma linguagem de programação Passo 10
    10. Use as informações do analisador para escrever o código do objeto ou uma representação intermediária. Peça ao analisador Crie um AST e crie seu código de objeto a partir do AST usando três Código de Endereço ou seu Big Brother SSA, crie uma tabela de símbolos para definir suas funções, variáveis ​​globais, etc.
  • Além disso, dependendo do seu idioma, você também pode criar tabelas de ponteiro virtuais ou tabelas de informações para suas aulas (para apoiar a reflexão ou RTTI).
  • Criar uma linguagem de programação Etapa 11
    11. Escreva o executor ou o gerador de código que liga tudo junto.
  • Criar uma linguagem de programação Etapa 12
    12. Escreva muitos programas de teste para testar o idioma.
  • Você quer criar programas que enfatizem os encargos de sua gramática formal para ver que seu compilador aceita tudo o que está dentro de sua definição e rejeita tudo o que está fora dele.
  • Criar uma linguagem de programação Etapa 13
    13. Considere como o usuário vai depurar seus próprios programas.
  • Criar uma linguagem de programação Etapa 14
    14. Se o seu idioma usa uma biblioteca padrão, você vai querer escrevê-lo. Junto com um coletor de lixo ou outros recursos de tempo de execução, se você precisar.
  • Especificamente, se você escrever um compilador, precisará do código que o sistema operacional será executado para começar a executar o código do usuário (por exemplo, alocando todas as variáveis ​​globais).
  • Criar uma linguagem de programação Etapa 15
    15. Publique sua linguagem, junto com a especificação para ele e alguns exemplos do que você pode fazer nele.
  • Não se esqueça de documentar como você pode se integrar com bibliotecas existentes, idiomas e como usar os recursos de tempo de execução e / ou biblioteca padrão.
  • Vídeo

    Ao usar este serviço, algumas informações podem ser compartilhadas com o YouTube.

    Pontas

    Comece projetando seu idioma e não escreva nenhum código, até que esteja satisfeito e tenha respondido a todos (ou mais) das perguntas ou problemas relacionados ao seu design, uma vez que é mais fácil mudar o design mais cedo do que mais tarde.
  • Conheça sua plataforma de destino (sistema operacional e bibliotecas) para o seu compilador / intérprete, afinal, você vai usá-lo e manipulá-lo.
  • Avisos

    Pense se você realmente precisar de uma nova linguagem, e qual sua linguagem tem de novos que outros idiomas não têm (pode ser uma combinação de recursos ou um único recurso).
  • Escrever idiomas é difícil se você não sabe o que está fazendo. É preciso muita prática também.
  • Prepare-se para passar algum tempo em design de linguagem, já que você não terá chance de mudar sua língua, uma vez que você escreveu o compilador e passou pelo ponto de design.
  • Não tente basear suas características em uma união de vários idiomas, como dizer que sua língua será uma união da linguagem x, linguagem y e linguagem z. A história nos mostrou que as línguas criadas de tal maneira nunca encontrarão sucesso, ou todos estariam programando pl / 1 em vez de algo baseado em c.
  • Coisas que você precisa

    • Paciência.
    • Conhecimento sobre recursos de linguagem e design de linguagem (você pode querer ler conceitos de design de linguagem de programação de David A. Watt).
    • Conhecimento sobre a teoria do compilador (já que você estará escrevendo um compilador / intérprete para o seu idioma e sua implementação será a implementação de referência).
    • Usa para o seu idioma (lembre-se de que alguns dos idiomas mais usados ​​como C ou Lisp foram criados para fazer algo específico como criar UNIX ou fazendo computação simbólica).
    Compartilhe na rede social:
    Semelhante