Implementação do Interpretador com suporte a depuração. Herda o Interpretador padrão de Delégua e implementa métodos a mais, que são usados pelo servidor de depuração. Alguns métodos do Interpretador original, como executarBloco e interpretar, são reimplementados aqui.

A separação entre Interpretador e InterpretadorComDepuracao se faz necessária por uma série de motivos. O primeiro deles é o desempenho. A depuração torna o desempenho do Interpretador com depuração inferior ao Interpretador original pelas várias verificações de controle que precisam ser feitas para a funcionalidade do suporte a depuração, como verificar pontos de parada, estados da pilha de execução e variáveis. O segundo deles é manter o Interpretador original tão simples quanto possível. Uma implementação mais simples normalmente é mais robusta. O terceiro deles é o uso de memória. O Interpretador original não possui uma série de variáveis implementadas aqui, o que o torna mais econômico em recursos de máquina.

Hierarchy (view full)

Implements

Constructors

Properties

Methods

adentrarEscopo avaliacaoDeclaracaoVarOuConst avaliar avaliarArgumentosEscreva chamarMetodoPrimitiva eIgual eVerdadeiro executar executarBloco executarUltimoEscopo instrucaoContinuarInterpretacao instrucaoPasso instrucaoProximoESair interpretar obterVariavel paraTexto prepararParaDepuracao procurarVariavel resolverArgumentosChamada resolverInterpolacoes resolverParametrosChamada retirarInterpolacao textoParaRegex verificarOperandoNumero verificarOperandosNumeros visitarDeclaracaoAleatorio visitarDeclaracaoCabecalhoPrograma visitarDeclaracaoClasse visitarDeclaracaoComentario visitarDeclaracaoConst visitarDeclaracaoConstMultiplo visitarDeclaracaoDeExpressao visitarDeclaracaoDefinicaoFuncao visitarDeclaracaoEnquanto visitarDeclaracaoEscolha visitarDeclaracaoEscreva visitarDeclaracaoEscrevaMesmaLinha visitarDeclaracaoFazer visitarDeclaracaoImportar visitarDeclaracaoInicioAlgoritmo visitarDeclaracaoPara visitarDeclaracaoParaCada visitarDeclaracaoSe visitarDeclaracaoTendoComo visitarDeclaracaoTente visitarDeclaracaoVar visitarDeclaracaoVarMultiplo visitarExpressaoAcessoElementoMatriz visitarExpressaoAcessoIndiceVariavel visitarExpressaoAcessoMetodo visitarExpressaoAgrupamento visitarExpressaoAtribuicaoPorIndice visitarExpressaoAtribuicaoPorIndicesMatriz visitarExpressaoBinaria visitarExpressaoBloco visitarExpressaoContinua visitarExpressaoDeAtribuicao visitarExpressaoDeChamada visitarExpressaoDefinirValor visitarExpressaoDeleguaFuncao visitarExpressaoDeVariavel visitarExpressaoDicionario visitarExpressaoExpressaoRegular visitarExpressaoFalhar visitarExpressaoFimPara visitarExpressaoFormatacaoEscrita visitarExpressaoIsto visitarExpressaoLeia visitarExpressaoLeiaMultiplo visitarExpressaoLiteral visitarExpressaoLogica visitarExpressaoQualTipo visitarExpressaoRetornar visitarExpressaoSuper visitarExpressaoSustar visitarExpressaoTipoDe visitarExpressaoTupla visitarExpressaoUnaria visitarExpressaoVetor

Constructors

Properties

aoEncerrarEscopo: Function
avisoPontoParadaAtivado: Function
declaracoes: Declaracao[]
diretorioBase: string
emDeclaracaoTente: boolean = false
erros: ErroInterpretador[]
escopoAtual: number
executandoChamada: boolean
expandirPropriedadesDeObjetosEmEspacoVariaveis: boolean
finalizacaoDaExecucao: Function
funcaoDeRetorno: Function = null
funcaoDeRetornoMesmaLinha: Function = null
idChamadaAtual?: string
interfaceDeEntrada: any = null
interfaceEntradaSaida: any = null
microAvaliadorSintatico: MicroAvaliadorSintaticoBase = ...
microLexador: MicroLexador = ...
passos: number
performance: boolean
pilhaEscoposExecucao: PilhaEscoposExecucaoInterface
pontoDeParadaAtivo: boolean
pontosParada: PontoParada[]
proximoEscopo?: TipoEscopoExecucao
regexInterpolacao: RegExp = ...
requerDeclaracaoPropriedades: boolean
resultadoInterpretador: string[] = []

Methods

  • Faz a chamada do método de uma primitiva (por exemplo, número, texto, etc.) com seus respectivos argumentos.

    Parameters

    • expressao: Chamada

      A expressão de chamada.

    • entidadeChamada: MetodoPrimitiva

      O método da primitiva chamado.

    Returns Promise<any>

    O resultado da chamada do método da primitiva.

  • Se bloco de execução já foi instanciado antes (por exemplo, quando há um ponto de parada e a execução do código é retomada pelo depurador), retoma a execução do bloco do ponto em que havia parado. Se bloco de execução ainda não foi instanciado, empilha declarações na pilha de escopos de execução, cria um novo ambiente e executa as declarações empilhadas. Se depurador comandou uma instrução 'adentrar-escopo', execução do bloco não ocorre, mas ponteiros de escopo e execução são atualizados.

    Parameters

    • declaracoes: Declaracao[]

      Um vetor de declaracoes a ser executado.

    • Optionalambiente: EspacoVariaveis

      O ambiente de execução quando houver, como parâmetros, argumentos, etc.

    Returns Promise<any>

  • No interpretador com depuração, este método é dividido em dois outros métodos privados:

    • this.executarUmPassoNoEscopo, que executa apenas uma instrução e nada mais;
    • this.executarUltimoEscopoComandoContinuar, que é a execução trivial de um escopo inteiro, ou com todas as instruções, ou até encontrar um ponto de parada.

    Parameters

    • manterAmbiente: boolean = false

      Se verdadeiro, junta elementos do último escopo com o escopo imediatamente abaixo.

    • naoVerificarPrimeiraExecucao: boolean = false

      Booleano que pede ao Interpretador para não verificar o ponto de parada na primeira execução. Normalmente usado pelo Servidor de Depuração para continuar uma linha.

    Returns Promise<any>

    O retorno da execução.

  • Continua a interpretação, conforme comando do depurador. Quando um ponto de parada é ativado, a pilha de execução do TypeScript é perdida. Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do primeiro escopo, subindo até o último elemento executado do último escopo. Se entre escopos houver ponto de parada ativo, a execução é suspensa até o próximo comando do desenvolvedor.

    Parameters

    • escopo: number = 1

    Returns Promise<any>

    executarUltimoEscopo

  • Interpreta apenas uma instrução a partir do ponto de parada ativo, conforme comando do depurador. Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do primeiro escopo, subindo até o último elemento executado do último escopo.

    Parameters

    • escopo: number = 1

      Indica o escopo a ser visitado. Usado para construir uma pilha de chamadas do lado JS.

    Returns Promise<any>

  • Obtém o valor de uma variável por nome. Em versões anteriores, o mecanismo de avaliação fazia toda a avaliação tradicional, passando por Lexador, Avaliador Sintático e Interpretador. Isso tem sua cota de problemas, sobretudo porque a avaliação insere e descarta escopos, entrando em condição de corrida com a interpretação com depuração.

    Parameters

    • nome: string

      O nome da variável.

    Returns any

  • Verifica se operandos são números, que podem ser tanto variáveis puras do JavaScript (neste caso, number), ou podem ser variáveis de Delégua com inferência (VariavelInterface).

    Parameters

    • operador: SimboloInterface<string>

      O símbolo do operador.

    • direita: any

      O operando direito.

    • esquerda: any

      O operando esquerdo.

    Returns void

    Se ambos os operandos são números ou não.