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. 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.

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.

3. Decida qual problema seu idioma está resolvendo. É abordando um problema específico de domínio, ou é uma linguagem de propósito geral?

4. Pense na semântica da sua língua e dos conceitos disso.

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".

6. Experimente as ideias de sintaxe (o texto da linguagem) para os exemplos acima.

7. Escreva uma gramática formal para a sintaxe.

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.

9. Escreva o scanner e o analisador front-end ou encontre uma ferramenta que o ajude com isso.

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.

11. Escreva o executor ou o gerador de código que liga tudo junto.

12. Escreva muitos programas de teste para testar o idioma.

13. Considere como o usuário vai depurar seus próprios programas.

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.

15. Publique sua linguagem, junto com a especificação para ele e alguns exemplos do que você pode fazer nele.
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: