private void ValidarVariavel()
        {
            var i = 0;

            while (new List <string>()
            {
                nameof(MaisVar), nameof(Variaveis)
            }.Contains(CallStack.ElementAt(i)))
            {
                i++;
            }

            var callerName = CallStack.ElementAt(i);

            if (callerName == nameof(DcV) || callerName == nameof(ListaPar))
            {
                TabelaDeSimbolos.TryAddNewItem(new ItemTs
                {
                    Cadeia = Tokens[IndexAtual].Cadeia, Escopo = EscopoStack.Peek(), Tipo = TipoItemTs.Desconhecido,
                    Linha  = Tokens[IndexAtual].Linha
                });

                GeradorCodigoHipo.AreaDeCodigo.Add(InstrucoesMaquinaHipo.ALME + " 1");
            }
            else
            {
                TabelaDeSimbolos.VerificarSeVariavelJaFoiDeclarada(new ItemTs
                {
                    Cadeia = Tokens[IndexAtual].Cadeia, Escopo = EscopoStack.Peek(), Tipo = TipoItemTs.Desconhecido
                });
            }
        }
        private void DcP()
        {
            CallStack.Push(nameof(DcP));

            if (Tokens[IndexAtual].Tipo == TipoToken.ReservadoProcedure)
            {
                IndexAtual++;
                if (Tokens[IndexAtual].Tipo == TipoToken.Identificador)
                {
                    var procedure = new ItemTs
                    {
                        Cadeia     = Tokens[IndexAtual].Cadeia,
                        Escopo     = EscopoStack.Peek(),
                        Tipo       = TipoItemTs.Procedimento,
                        Linha      = Tokens[IndexAtual].Linha,
                        Parametros = new List <Parametro>()
                    };

                    EscopoStack.Push(Tokens[IndexAtual].Cadeia);

                    IndexAtual++;
                    Parametros();

                    AddParametrosNaProcedure(procedure);

                    TabelaDeSimbolos.TryAddNewItem(procedure);

                    CorpoP();

                    EscopoStack.Pop();
                }
                else
                {
                    ThrowCompiladorException(Tokens[IndexAtual]);
                }
            }
            else
            {
                ThrowCompiladorException(Tokens[IndexAtual]);
            }

            CallStack.Pop();
        }