VOOZH about

URL: https://dev.to/callebe_josuecantu/estou-criando-minha-propria-linguagem-de-programacao-em-python-57e2

⇱ Estou criando minha própria linguagem de programação em Python - DEV Community


Há algum tempo comecei um projeto chamado Exper.

A ideia era simples: aprender mais sobre interpretadores e design de linguagens criando minha própria linguagem de programação.

No início ela era extremamente simples, mas aos poucos foi ganhando recursos como:

  • Variáveis
  • Funções
  • Structs
  • Loops
  • Condicionais
  • Listas
  • Interpolação de strings

Hoje a Exper já consegue executar programas relativamente grandes.

O que mais tem me ajudado no desenvolvimento não são exemplos pequenos, mas sim um RPG de texto que estou criando para testar a linguagem.

Esse RPG força a implementação de recursos reais:

  • Inventário
  • Objetos
  • Combate
  • Estruturas de dados
  • Passagem por referência
  • Manipulação de listas

Curiosamente, a maior parte dos bugs aparece apenas quando tentamos construir algo real.

Por exemplo, recentemente descobri problemas relacionados a passagem por referência e mutabilidade ao implementar um sistema de inventário para poções.

Esse tipo de problema dificilmente apareceria em exemplos simples de calculadora.

Exemplo da linguagem

struct Player {
 name,
 hp = 100
}

player = Player()
player.name = "Callebe"

console.log("{player.name} possui {player.hp} HP")

O que aprendi até agora

Criar uma linguagem é muito mais difícil do que parece.

Quando você acredita que terminou:

  • Surge um problema de escopo.
  • Depois um problema de mutabilidade.
  • Depois um problema de parsing.
  • Depois um problema de listas.
  • Depois um problema de referências.

Mas é justamente isso que torna o projeto interessante.

Próximos passos

  • Melhorar suporte a métodos
  • Operadores compostos
  • Sistema de módulos
  • Classes
  • Exceções

O objetivo não é criar um concorrente para Python ou JavaScript.

O objetivo é aprender como essas linguagens funcionam internamente.

E, até agora, a Exper tem sido uma excelente professora.

Código completo aqui