Portuguese, Brazilian subtitles

← 07xps-05 A Web Browser for HTML and JavaScript

06-13 Um Web Browser para HTML e JavaScript

Get Embed Code
3 Languages

Showing Revision 3 created 02/21/2013 by Lucilia Figueiredo.

  1. Bem, nossa abordagem anterior apenas funciona se tratamos chamadas para "write" especialmente,
  2. e temos o cuidado de notar toda chamada a "write" e adicionar a essa variável "javascript output",
  3. no ambiente global.
  4. Então, vamos trabalhar nisso juntos.
  5. Eu vou fazer a primeira parte e você vai terminar tudo.
  6. Vamos voltar ao nosso interpretador JavaScript e concluir nosso tratamento
  7. de "write" -- uma chamada de função especial.
  8. Bem, chamadas de função são expressões, então estamos na avaliação de expressões.
  9. Aqui está a sintaxe abstrata da árvore de parsing para a expressão.
  10. Aqui está o ambiente corrente.
  11. Precisamos saber o tipo da expressão.
  12. Já sabemos como tratar "binop", "number" -- esse tipo de coisas.
  13. Então, o que nos importa agora são chamadas de funções.
  14. Aqui está o que tínhamos antes.
  15. Uma chamada de função tem um nome e alguns argumentos.
  16. É assim:
  17. se a chamada de função for myfun(a, 3+4), o nome da função é myfun,
  18. e os argumentos são uma lista de expressões.
  19. Vamos buscar o nome da função no ambiente.
  20. Agora, "write" é uma dessas funções especiais que o usuário pode chamar,
  21. mas nunca realmente provê uma definição para ela.
  22. Portanto, não vamos encontrá-la no ambiente.
  23. Nossa função env_lookup retorna None, se a função é "write".
  24. Mas ela também retorna None se a função apenas é desconhecida,
  25. portanto, temos que checar se é "write",em especial.
  26. Se for, "write" deve ter um único argumento, e então vamos avaliá-lo.
  27. Nós vamos obter a saída corrente, que o usuário escreveu por meio de outras chamadas a "write".
  28. Estou fazendo env_lookup no ambiente corrente, ao invés de no ambiente global --
  29. aqui está, entretanto, um truque --
  30. lembre-se de como lookup funciona:
  31. se eu não tenho nos meus bolsos, eu verifico no meu quarto de hotel, verifico na minha casa,
  32. pergunto a meus parentes, olho na web.
  33. Eu continuo voltando, até que eventualmente chego ao ambiente global.
  34. Como escolhemos um nome de variável especial, com um espaço em branco,
  35. ninguém mais pode possivelmente criar esta variável.
  36. Portanto, mesmo que eu não esteja no ambiente global -- que eu não a tenha, meu quarto de hotel não a tenha,
  37. minha casa não a tenha,
  38. eventualmente eu volto ao ambiente global, que sabemos que a tem,
  39. porque nós, cuidadosamente, a colocamos ali explicitamente, inicializando-a com o string vazio.
  40. Então, o teste para você é preencher estes 2 espaços em branco.
  41. Sabemos qual é a saída até então, e agora queremos atualizar o ambiente,
  42. de modo que "javascript output" tenha um novo valor.
  43. O que deve vir aqui, para que isso funcione?