Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Declaração do tipo tente de egua classico com problema #22

Open
samuelrvg opened this issue May 28, 2023 · 6 comments
Open

Declaração do tipo tente de egua classico com problema #22

samuelrvg opened this issue May 28, 2023 · 6 comments
Labels
💎 recompensa-8 Pagamos recompensa: 8 dólares good first issue Good for newcomers

Comments

@samuelrvg
Copy link
Member

Vide commit 9d52666

Gera erro ao tentar resolver:

tente {
  1 > "1";
  escreva("Tente - Pegue: ERRO!");
} pegue {
   escreva("Tente - Pegue: OK!");
} finalmente {
  retorna(" ");
}

Erro: Operadores precisam ser números.

@samuelrvg samuelrvg changed the title Declaração do tipo tente de egua classico esta quebrando Declaração do tipo tente de egua classico esta com problema May 28, 2023
@samuelrvg samuelrvg changed the title Declaração do tipo tente de egua classico esta com problema Declaração do tipo tente de egua classico com problema May 28, 2023
@Aristidescosta
Copy link

@samuelrvg O tente do egua clássico é um interpretador do javaScript, certo?

@leonelsanchesdasilva
Copy link
Contributor

@samuelrvg Na verdade esse código não faz muito sentido. O código deveria ser este:

função teste() {
    tente {
        1 > "1";
        escreva("Tente - Pegue: ERRO!");
    } pegue {
        escreva("Tente - Pegue: OK!");
    } finalmente {
        retorna(" ");
    }
}

escreva(teste());

Testes:

PS D:\Delegua\vscode> egua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: OK!

PS D:\Delegua\vscode> delegua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: ERRO!

@leonelsanchesdasilva
Copy link
Contributor

@samuelrvg O tente do egua clássico é um interpretador do javaScript, certo?

@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua.

O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de pegue, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está em tente. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.

@Aristidescosta
Copy link

@samuelrvg O tente do egua clássico é um interpretador do javaScript, certo?

@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua.

O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de pegue, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está em tente. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.

Mas o comportamento certo seria de dar o erro mencionado pelo samuelrvg?
Ou deveria ter o comportamento do js de transformar o '1' em número?

@leonelsanchesdasilva
Copy link
Contributor

@samuelrvg O tente do egua clássico é um interpretador do javaScript, certo?

@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua.
O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de pegue, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está em tente. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.

Mas o comportamento certo seria de dar o erro mencionado pelo samuelrvg? Ou deveria ter o comportamento do js de transformar o '1' em número?

@Aristidescosta As execuções desses comandos precisam ser idênticas:

PS> egua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: OK!

PS> delegua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: ERRO!

Ou seja, essa linha não pode executar:

escreva("Tente - Pegue: ERRO!");

E hoje, no nosso dialeto, ela executa. Isso porque nosso operador de comparação é bem mais tolerante com diferença de tipos que o operador de Égua.

@leonelsanchesdasilva
Copy link
Contributor

Este problema ocorre em delegua-node, não no núcleo. Estou movendo essa issue para o repositório correspondente.

@leonelsanchesdasilva leonelsanchesdasilva transferred this issue from DesignLiquido/delegua Jan 15, 2024
@leonelsanchesdasilva leonelsanchesdasilva added good first issue Good for newcomers 💎 recompensa-10 Pagamos recompensa: 10 dólares labels Jan 15, 2024
@leonelsanchesdasilva leonelsanchesdasilva added 💎 recompensa-8 Pagamos recompensa: 8 dólares and removed 💎 recompensa-10 Pagamos recompensa: 10 dólares labels Jan 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💎 recompensa-8 Pagamos recompensa: 8 dólares good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants