Open omurilo opened 9 months ago
Eu creio que esteja errado. Perceba que todo código de exemplo .rinha
fornecido pela organização não há encadeamento de mais do que 2 valores em uma operação, nem que para isso usem let para valores intermediários
let a = k == 0;
let b = k == n;
if (a || b)
Em tese o operador que deveria ficar com o nó mais próximo de condicional
deveria ser Or
, mas não há regras de precedência na gramática da rinha para garantir isso
A título de informação eu fiz meu parser & lexer e tentei gerar a AST para esse exemplo e na hora de interpretar acabei pegando o erro, então resolvi gerar a AST com a ferramenta
rinha
e tentar interpretar.Usando o seguinte código
Temos a seguinte AST gerada pela
rinha
:Temos também a AST gerada pelo meu parser:
Desconsiderando os meus erros ao gerar a AST, gostaria de saber se a árvore gerada pela
rinha
estaá correta e o problema em vez da arvore seria o interpretador, já que o mesmo código emjs
é válido, ou se a árvore gerada não está correta.