Como eu criei um compilador em Python (é sério)
Sim, eu criei uma linguagem de programação em Python!
Parece algo estranho de se dizer mas eu tive a mirabolante ideia de criar do zero uma linguagem de programação compilada e implementar o compilador em Python! Mas como eu fiz isso?
A mágica do LLVM...
Basicamente, essa é a resposta. Eu utilizei a biblioteca llvmlite
para fazer com que o programa fosse compilado para LLVM e ter pelo menos uma performance adequada...
A implementação atual da linguagem é de aproximadamente 800 linhas de código Python.
Recomendo que leia o meu outro post sobre LLVM para entender melhor o que ele é e como utilizá-lo para aprender mais sobre computação aqui
Como funciona?
A linguagem que eu inventei se chama Pile (pilha em Inglês) e tem tudo a ver sobre como ela funciona!
Essa linguagem utiliza um paradigma de programação praticamente esotérico e muito esquecido. É utilizado o paradigma baseado em pilha (stack-oriented) como o único e principal paradigma da linguagem. Eu recomendo que acessem o repositório oficial para darem uma olhada!
Encerramento
Muito obrigado por ler e visite o repositório original em marc-dantas/pile
Caraca q top, esse é o tipo de coisa que eu acharia legal aprender a mexer.. Acho que depende de um conjunto de conhecimentos mais baixo nível que há um tempo busco encontrar. vou dar uma olhada!
Post inspirador!
Vou dar uma olhada no seu repositório e tentar algo do tipo.
Valeu!
Eita, ainda criou uma entrada no escolang wiki! Achei bem corajoso da sua parte usar o llvm, para mim parece um bicho de 7 cabeças. e sobre linguagem de stack escrita em python, tem o Porth, ela é uma implementação de forth, que é uma lang baseada em stack, com adicioes função para low level progamming. Ela também é escrita em python, mas cria um texto em ASM, que é passado para um montador (compilador de assembly) para gerar o binário
Eu também estou aprendendo sobre compiladores e interpretadores a mais de 1 ano!
Parei pra estudar zig com este propósito. Me adicione no discord, vai que um dia a gente marque de fazer uma lang inovadora.
add lá @nexus_prime
Bacana, tenho um projeto semelhante em desenvolvimento juntamente com um colega, estamos estruturando o interpretador do Python em C++ do zero, quem quiser colaborar será bem-vindo: https://github.com/BRCode4Fun/Python-Interpreter
A vantagem de trabalhar em projetos low-level como esse é que desenvolvem um domínio absurdo da linguagem em si, além de ser um hobby pras horas vagas.
Eu tava a procura de conteúdos do tipo. Muito legal, vou fazer um semelhante pra treinar!
Sensacional! Tive que fazer também a implementação de um compilador simplificado pra um trabalho da faculdade, no meu caso, fiz utilizando o ANTLR, e foi um compilador de Go para Assembly MIPS. No fim, era possível escrever um mini programa de calculadora nele! Uma dúvida, utilizando python você achou tranquilo navegar pela AST e gerar código? Você define o parser com uma BNF também? Caso queira ver a minha implementação, está aqui: https://github.com/matheuslenke/Go-Compiler