Compartilhe
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18780
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: climbu - Uma linguagem simples

em Sab 16 Ago 2014, 21:21
Pode deixar um download pra testes?

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 18 Ago 2014, 15:03
Eu deixo no dropbox um arquivo compactado com o source code do upsilon quando preciso.
https://dl.dropboxusercontent.com/u/40058824/Upsilon/upsilon.rar
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 18 Ago 2014, 17:53
Estou eu aqui, outra vez, mudando a sintaxe da linguagem para verificar um melhor entendimento de primeira olhada:

O primeiro jeito:
Código:
fun[int] somar int(a) int(b)
fazer a + b

fun[] imprimir int(n)
fazer imprimir "%d" n

fun[] main
fazer imprimir "Ola, Mundo!"
      imprimir . somar 2 6

O segundo jeito:
Código:
fun somar a b
fazer a + b

fun imprimir n
fazer imprimir "%d" n

fun main
fazer imprimir "Ola, Mundo!"
      imprimir . somar 2 6

Esse segundo é viagem, tenho que usar coisas genéricas, mas não quero usar C++, vai ficar confuso, tudo confuso, acho melhor eu fazer essa parte de tipos genéricos em C. Mas enfim, qual jeito ficou melhor?
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18780
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: climbu - Uma linguagem simples

em Seg 18 Ago 2014, 18:04
@Thelost escreveu:Estou eu aqui, outra vez, mudando a sintaxe da linguagem para verificar um melhor entendimento de primeira olhada:

O primeiro jeito:
Código:
fun[int] somar int(a) int(b)
fazer a + b

fun[] imprimir int(n)
fazer imprimir "%d" n

fun[] main
fazer imprimir "Ola, Mundo!"
      imprimir . somar 2 6

O segundo jeito:
Código:
fun somar a b
fazer a + b

fun imprimir n
fazer imprimir "%d" n

fun main
fazer imprimir "Ola, Mundo!"
      imprimir . somar 2 6

Esse segundo é viagem, tenho que usar coisas genéricas, mas não quero usar C++, vai ficar confuso, tudo confuso, acho melhor eu fazer essa parte de tipos genéricos em C. Mas enfim, qual jeito ficou melhor?

Ambas as formas estão boas @_@

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 18 Ago 2014, 18:12
Não... Acho que vou fazer um algoritmo de tipagem em C, aí dá pra usar esses tipos genéricos.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Qua 20 Ago 2014, 18:12
Caralho, esse C++14 me salvou, agora eu posso fazer as pora tudo genérico do pé até a cabeça, com esse recurso de "dedução do tipo de retorno de uma função", posso usar com templates e jaé.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Sab 23 Ago 2014, 18:29
Ok, terminei umas partes boas, já.

Dá pra programar de boas pararibiana, até um certo ponto, tem algumas coisas ainda para se acertar, enfim.

Para compilar algo, tu deve criar um arquivo, como "projeto.u" e escrever o código nele, whatever, depois eu publico o compilador.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 25 Ago 2014, 15:01
Tá aqui: https://dl.dropboxusercontent.com/u/40058824/Upsilon/uc.zip

Você deve ter o G++ instalado para compilar um código em upsilon (Se não tiver, execute o instalador do mingw-w64 na pasta árvore do download).

Hello, World em u:
Código:
func principal = imprimir "Ola,Mundo!" , ret 0

Sim, está horrível, vou mudar, enfim, é apenas um teste, então...
Quero deixar algo mais legível, como isso:
Código:
func principal = imprimir "Ola, Mundo!"
    ret 0

É fácil, mas tou com preguiça agora, depois faço (aliás, não deem espaços dentro de strings, não fiz um interpretador descente ainda de texto, então, cada espaço separa as coisas em expressões.)

Alguma função em u:
Código:
func sum a b = ret a + b
func mul a b = ret a * b
func principal = imprimir . sum 4 7 , imprimir . mul 2 0x1E

Ainda não coloquei a funcionalidade de parênteses; nem tentem fazer algo mais complexo com a linguagem, está muito crua.

Ah sim, dá pra usar as funções do stdio.h chamando-as pelos respectivos nomes.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18780
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: climbu - Uma linguagem simples

em Seg 25 Ago 2014, 15:55
@Thelost escreveu:Tá aqui: https://dl.dropboxusercontent.com/u/40058824/Upsilon/uc.zip

Você deve ter o G++ instalado para compilar um código em upsilon (Se não tiver, execute o instalador do mingw-w64 na pasta árvore do download).

Hello, World em u:
Código:
func principal = imprimir "Ola,Mundo!" , ret 0

Sim, está horrível, vou mudar, enfim, é apenas um teste, então...
Quero deixar algo mais legível, como isso:
Código:
func principal = imprimir "Ola, Mundo!"
    ret 0

É fácil, mas tou com preguiça agora, depois faço (aliás, não deem espaços dentro de strings, não fiz um interpretador descente ainda de texto, então, cada espaço separa as coisas em expressões.)

Alguma função em u:
Código:
func sum a b = ret a + b
func mul a b = ret a * b
func principal = imprimir . sum 4 7 , imprimir . mul 2 0x1E

Ainda não coloquei a funcionalidade de parênteses; nem tentem fazer algo mais complexo com a linguagem, está muito crua.

Ah sim, dá pra usar as funções do stdio.h chamando-as pelos respectivos nomes.

Fazer o parser ler parenteses, colchetes, etc. é muito chato ohgodwhy

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 25 Ago 2014, 16:34
É, é meio chato, tanto que não fiz ainda por não conseguir algo legítimo. Ainda nem consegui fazer o separador legítimo do texto, interpretando tal parada e etc, transformando as strings em listas já com as expressões separadas.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)

Re: climbu - Uma linguagem simples

em Ter 26 Ago 2014, 18:01
Bls, fiz a parada, agora dá pra escrever estruturadamente:
Código:
func principal = imprimir "Hello"
    ret 0

Só funciona com tabs, se você tentar estruturar com espaços, ele não vai reconhecer (sim, eu sei, tonteira, depois eu arrumo isso ai pra aceitar espaços)

Esses tabs são açúcar sintático, você pode escrever tudo em uma linha usando um ; (ponto e vírgulua) assim:
Código:
func principal = imprimir "Hello"; ret 0

E aqui um exemplo de código:
Código:
func doStuff a b = ret a + b * 2
func div a b = ret a / b
func main =
 int x = 4
 real y = div 1 2.0
 imprimir . doStuff x y
 imprimir "Olá,Mundo!"
 ret 0

Só falta arrumar as strings para não quebrar com espaços e arrumar a concatenação de funções.
https://dl.dropboxusercontent.com/u/40058824/Upsilon/uc.zip
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário
  • Reputação da mensagem: 100% (2 votos)

Re: climbu - Uma linguagem simples

em Qui 04 Set 2014, 17:07


Última edição por Thelost em Sex 05 Set 2014, 15:55, editado 1 vez(es)
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Qui 04 Set 2014, 20:57
Dicas pro nome do repositorio:
troca o nome do repo pra upsilon só.
a conversão mais normal nos repo por lá é nome minusculo e se tiver espaços usar '-'.
E não precisa especificar que é uma linguagem no nome do repositorio.

e.g.
https://github.com/scala/scala
https://github.com/ruby/ruby
https://github.com/rust-lang/rust
https://github.com/clojure/clojure
https://github.com/jashkenas/coffeescript
https://github.com/fsharp/fsharp
https://github.com/purescript/purescript
[...]

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Sab 06 Set 2014, 10:34
Tou pensando em refazer - de novo - o compilador, isso aqui se tornou uma bagunça outra vez, pelo menos agora está menos bagunçado, mas não está nem um pouco parecido com os compiladores de outras pessoas. Tou com sérios problemas pra analisar textos.
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21880
Reputação : 666
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: climbu - Uma linguagem simples

em Sab 06 Set 2014, 23:23
em busca da perfeição :v:

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18780
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: climbu - Uma linguagem simples

em Sab 06 Set 2014, 23:33
@Thelost escreveu:Tou pensando em refazer - de novo - o compilador, isso aqui se tornou uma bagunça outra vez, pelo menos agora está menos bagunçado, mas não está nem um pouco parecido com os compiladores de outras pessoas. Tou com sérios problemas pra analisar textos.

Por que você não tenta usar uma lógica mais parecida com compiladores de outras pessoas? @_@

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Dom 07 Set 2014, 02:00
@Thelost escreveu:Tou pensando em refazer - de novo - o compilador, isso aqui se tornou uma bagunça outra vez, pelo menos agora está menos bagunçado, mas não está nem um pouco parecido com os compiladores de outras pessoas. Tou com sérios problemas pra analisar textos.
Já deve ta cheio ai, mas mais um ai:
https://github.com/BYVoid/Batsh
Achei uma boa recomendação de compilador porque é bem simples em comparação com outros de outras langs por ai e é feito em OCaml que tambem é funcional.

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 08 Set 2014, 14:20
Náh, eu quero fazer em haskell, gosto de haskell, na verdade, tou estudando mais sobre compiladores e etc, achei bons exemplos com haskell. Enfim, com o tempo eu posso conseguir algo legal.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Qua 10 Set 2014, 19:26
Bls, tá ficando bom aqui, o código ficou mais gostoso e... Trabalhar com árvores é muito melhor do que eu estava tentando fazer, só usando tokens e convertê-los para c++.

É... Em pouco tempo eu termino o Upsilon.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Qui 11 Set 2014, 15:18
Mudei algumas coisas:

-Definição de uma função
-Mais tipagem fraca
-Sintaxe levemente modificada

E as funções terminam em um ponto-e-vírgula. O que estiver antes do mesmo, será o retorno. Sim, todas as funções necessitam de um retorno.

Ex:
Código:
função foo n = n * 2;
// Ou
function foo n = n * 2;

// Exemplo de usualidade
função foo n = se n == 1 então 1 senão foo (n - 1);

// Ou

function foo n = if n == 1 then 1 else foo (n - 1);

// Mais exemplos

function foo n = let h = n - 1
                           s = n - 2
                       in h + s;

Enfim, era isso.
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21880
Reputação : 666
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: climbu - Uma linguagem simples

em Sex 12 Set 2014, 03:15
parece legal assim @_@

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Dom 21 Set 2014, 14:08
Código:
function fib n = if n == 1 then 1
                            else if n == 2 then 2
                            else (fib (n - 1)) + (fib (n - 2));

:) Só queria mostrar como é fibonacci em upsilon...
Aliás, vai demorar um pouco para terminar o compilador.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Dom 21 Set 2014, 18:50
vai ter pattern matching nas funcs?

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 10257
Reputação : 264
Desde : 08/11/2012
Ver perfil do usuário

Re: climbu - Uma linguagem simples

em Seg 22 Set 2014, 12:31
Eu pensei em colocar isso, talvez eu faça. Até seria legal, e é fácil de se implementar isso em C++, colocando em uma condição dentro da função. Porém, não sei como pegar o id do argumento desse modo. Até sei, mas seria muita gambiarra.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18780
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: climbu - Uma linguagem simples

em Seg 22 Set 2014, 12:36
@Thelost escreveu:Eu pensei em colocar isso, talvez eu faça. Até seria legal, e é fácil de se implementar isso em C++, colocando em uma condição dentro da função. Porém, não sei como pegar o id do argumento desse modo. Até sei, mas seria muita gambiarra.

"Gambiarra" tipo o va_list?

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Conteúdo patrocinado

Re: climbu - Uma linguagem simples

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum