Desenvolvendo uma linguagem de programação
Eu comecei por hobby e para ganhar bem mais conhecimento, o desenvolvimento de uma linguagem de programação. Não era nada profissional, a ideia foi desenvolver uma linguagem simples e tornar ela pública (mesmo sendo um hobby), os meus requisitos eram: algo rápido, leve e seguro.
Desde então, estou desenvolvendo a "Wysb", usando a linguagem Go.
Parte do projeto, é evitar usar um lexer ou parser complexo no compilador, e então, continuo atualizando ela adicionando mais recursos. Ela está se tornando uma boa linguagem, mas claro, há bastante problemas, e os maiores são: não tem comunidade, e não tem uma ampla gama de bibliotecas built-in. Peguem leve nas críticas, eu trabalho nela semanalmente, melhorando com o tempo, se quiserem me dar um apoio (visualizando, testando ou contribuindo) acessem o repositório da Wysb. Praticamente, tudo ocorre no compilador, que funciona assim:
- Função
countKeywords
: Essa função retorna um inteiro que representa o total de vezes que a palavra chave passada com argumento (string) é repetida no texto. - Função
ReadWysb
: Essa função usa centenas de loops para percorrer o código passado (Wysb) em busca de palavras chaves, e quando encontra alguma, ele faz o processamento necessário. Os loops usam a função countKeyword para verificar quantas vezes a palavra chave se repete, e assim, faz o processamento quantas vezes for necessário.
É bem simples, mas funciona bem. Vejam um exemplo:
keywords_extends := []string{"<extends"}
counts_extends := countKeywords(string(content), keywords_extends)
for i := 1; i == counts_extends; i++ {
extender := ci.Target(string(content), "<extends ", "!>")
ReadWysb(extender)
replacer := "<extends " + extender + "!>"
content = []byte(strings.Replace(string(content), replacer, "", i))
}
Em resumo, o que preciso é de bibliotecas built-in para facilitar e ampliar o fluxo de desenvolvimento com a Wysb. Vale citar, que a linguagem é feita em grande parte com Go, mas uma pequena parte com JavaScript, via Otto. Tudo o que ocorre dentro de funções e não depende do sistema operacional (exemplo: operações aritiméticas) é feito com JavaScript na Otto, já por exemplo manipulação de arquivos, criptografia, HTTP router, e outros recursos são feitos com Go. A linguagem é rápida, e oferece um pouco de segurança, e é extremamente leve. A Wysb pode ser instalada com a Wysbup, uma ferramenta exclusiva para instalar, atualizar e usar a IDE da Wysb. A Wysbup tem cerca de 200MB, mas o código-fonte compilado da Wysb, tem apenas 18MB. Atualmente, o compilador tem cerca de 1500 linhas de código. Se alguém tiver sugestões ou tiver disponibilidade para contribuir, serei grato. Lembrando que é por enquanto um hobby, então peguem leve nas críticas.
Repositório: https://github.com/simplyYan/Wysb
Website: https://simplyyan.github.io/Wysb/root/