Optional
comandoOptional
idOptional
proximoQuando um construto ou declaração possui id, significa que o interpretador deve resolver a avaliação e guardar seu valor até o final do escopo. Isso serve para quando a linguagem está em modo de depuração, e o contexto da execução deixa de existir com um ponto de parada, por exemplo.
A expressão a ser avaliada.
O resultado da avaliação.
Protected
chamarFaz a chamada do método de uma primitiva (por exemplo, número, texto, etc.) com seus respectivos argumentos.
A expressão de chamada.
O método da primitiva chamado.
O resultado da chamada do método da primitiva.
Reimplementando este método aqui porque a execução por depuração não requer mostrar o resultado em momento algum, ou lidar com o retorno.
A declaracao a ser executada.
Sempre falso.
O resultado da execução.
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.
Um vetor de declaracoes a ser executado.
Optional
ambiente: EspacoVariaveisO ambiente de execução quando houver, como parâmetros, argumentos, etc.
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.Se verdadeiro, junta elementos do último escopo com o escopo imediatamente abaixo.
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.
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.
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.
Indica o escopo a ser visitado. Usado para construir uma pilha de chamadas do lado JS.
Interpretação utilizada pelo depurador para avaliar valores de variáveis. Diferentemente da interpretação tradicional, não possui indicadores de performance porque eles não fazem sentido aqui.
Um vetor de declarações.
Um objeto de retorno, com erros encontrados se houverem.
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.
O nome da variável.
Prepara a pilha de escopos para uma situação de depuração. Não há execução de código neste caso.
Um vetor de declarações.
Protected
procurarProtected
resolverProtected
resolverProtected
resolverResolve paraâmetros da chamada de acordo com o tipo da entidade chamada.
A entidade chamada.
Os parâmetros resolvidos.
Protected
retirarProtected
textoProtected
verificarProtected
verificarVerifica 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
).
O símbolo do operador.
O operando direito.
O operando esquerdo.
Se ambos os operandos são números ou não.
Executa uma declaração de classe.
Uma variável do tipo DeleguaClasse
é adicionada à pilha de escopos de execução.
A declaração de classe.
Sempre retorna nulo, por ser requerido pelo contrato de visita.
Construtos de comentários não têm utilidade para o Interpretador.
Apenas retornamos Promise.resolve()
para não termos erros.
A declaração de comentário.
Executa expressão de definição de constante.
A declaração Const
.
Sempre retorna nulo.
Executa expressão de definição de múltiplas constantes.
A declaração ConstMultiplo
.
Sempre retorna nulo.
Execução de uma escrita na saída configurada, que pode ser console
(padrão) ou
alguma função para escrever numa página Web.
Se ponto de parada foi ativado durante a avaliação de argumentos, não escreve.
A declaração.
Sempre nulo, por convenção de visita.
Execução de uma escrita na saída padrão, sem quebras de linha. Implementada para alguns dialetos, como VisuAlg.
A declaração.
Sempre nulo, por convenção de visita.
Executa uma expressão Se, que tem uma condição, pode ter um bloco Senão, e múltiplos blocos Senão-se.
A declaração Se.
O resultado da avaliação do bloco cuja condição é verdadeira.
Interpretação de uma declaração tente
.
O objeto da declaração.
Executa expressão de definição de variável.
A declaração Var
Sempre retorna nulo.
Executa expressão de definição de múltiplas variáveis.
A declaração VarMultiplo
.
Sempre retorna nulo.
Executa um acesso a método, normalmente de um objeto de classe.
A expressão de acesso.
O resultado da execução.
Optional
declaracao: ContinuaExecução de uma expressão de atribuição.
A expressão.
O valor atribuído.
Executa uma chamada de função, método ou classe.
A expressão chamada.
O resultado da chamada.
Formata uma saída de acordo com o número e espaços e casas decimais solicitados.
A declaração de formatação de escrita.
A saída formatada como texto e os respectivos parâmetros aplicados.
Execução da leitura de valores da entrada configurada no início da aplicação.
Expressão do tipo Leia
Promise com o resultado da leitura.
Execução da leitura de valores da entrada configurada no início da aplicação.
Expressão do tipo LeiaMultiplo
.
Promise com o resultado da leitura.
Ao executar um retorno, manter o valor retornado no Interpretador para
uso por linhas que foram executadas com o comando próximo
do depurador.
Uma declaracao Retorna
O resultado da execução da visita.
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
einterpretar
, são reimplementados aqui.A separação entre
Interpretador
eInterpretadorComDepuracao
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.