Seguinte, amigo, aconselho antes de tudo a vocẽ tentar adquirir conhecimento e predefinir algumas coisas antes.
Conhecimento necessário:
- Liguagem Interpretada vs Compilada: Compreender a diferença entre esses dois tipos de linguagens é fundamental para tomar decisões sobre a implementação de sua linguagem.
- Estudo de linguagens: Conhecer os conceitos de análise léxica, análise sintática, árvores de sintaxe abstrata (AST) e otimização é essencial para projetar e implementar um compilador ou interpretador.
- Backus–Naur form: É uma notação útil para descrever a gramática da sua linguagem.
- Fases de um Compilador: Frontend, Backend
- LLVM: O LLVM é uma infraestrutura de compilador de código aberto que pode ser usada para criar compiladores. Conhecê-lo pode ser útil na implementação de sua linguagem.
- Just-In-Time Compiler (JIT): Se você planeja suportar compilação just-in-time, entender como o JIT funciona e como ele pode ser implementado é importante.
- Turing Complete: Saber o que significa que uma linguagem é Turing completa é relevante para entender a expressividade da sua linguagem.
Predefinições
- Objetivos: Definir claramente os objetivos e foco da sua linguagem é o primeiro passo importante. Isso ajudará a orientar todas as decisões de design e implementação.
- Design: Especificar a sintaxe, semântica, palavras-chave e estruturas de controle da sua linguagem é uma parte crítica do processo de criação.
- Documentação: A documentação é essencial para ajudar os desenvolvedores a entender e usar sua linguagem de forma eficaz. Isso inclui manuais do usuário, guias de referência e exemplos.
- Suporte: Considere como você fornecerá suporte técnico, resolverá problemas e atualizará sua linguagem à medida que ela evolui.
Aqui estão algumas fontes que irão lhe ajudar na construção de sua linguagem: