UNIVALI-LITE / Portugol-Studio

Ambiente de Programação didático para a linguagem Portugol 2.0
http://univali-lite.github.io/Portugol-Studio/
GNU Lesser General Public License v3.0
694 stars 220 forks source link

Erro gerado quando um vetor é incrementado com "++" seguido de um escreva #899

Open AdsonEsteves opened 3 years ago

AdsonEsteves commented 3 years ago

Descrição do Problema: Uma imagem vale mais que mil palavras image

programa
{

    funcao inicio()
    {
        inteiro cod[] = {1}
        inteiro a = 1

        cod[0]++
        func()

        a++
        escreva(0)

        cod[0]++
        escreva(0)

    }

    funcao func()
    {

    }
}
DiogoJunqueiraGeraldo commented 3 years ago

O erro é causado pelo PortugolParser, ele separa os nodes de forma incorreta:

image

ele está tentando executar "++escreva(0)"

DiogoJunqueiraGeraldo commented 3 years ago

A falha ocorre dentro do método adaptivePredict pertencente a classe ParserATNSimulator pertencente ao pacote org.antlr.v4.runtime.atn, não consegui encontrar uma correção, espero que a análise ajude no processo de correção.