Return to Video

05-14 Eval Exp

  • 0:00 - 0:02
    Mais uma vez, como teste, vamos construir
  • 0:02 - 0:04
    um bocado deste interpretador juntos:
  • 0:04 - 0:06
    eu vou começar e você vai completar o restante.
  • 0:06 - 0:09
    Vamos escrever uma função eval_exp,
  • 0:09 - 0:11
    para interpretar aritmética Javascript.
  • 0:11 - 0:14
    Apenas vamos tratar + e * e números, por enquanto.
  • 0:14 - 0:18
    Nossa função caminha sobre uma árvore, e portanto tem um única árvore como argumento.
  • 0:18 - 0:20
    Note que isso é um pouco diferente do nosso interpretador HTML,
  • 0:20 - 0:22
    que recebia mútiplas árvores.
  • 0:22 - 0:24
    Lembre-se que nossas árvores tipicamente são como essas:
  • 0:24 - 0:28
    é uma tupla com "number" seguido de algo como "5";
  • 0:28 - 0:31
    ou pode ser algo como "binop" -- para operador binário --
  • 0:31 - 0:33
    com uma subárvore à esquerda,
  • 0:33 - 0:35
    uma subárvore à direita e algo como "+" no meio.
  • 0:35 - 0:38
    Esta primeira parte aqui é o tipo do nodo -- nodetype.
  • 0:38 - 0:42
    Vamos extrair isso, pegando elemento na posição 0 da tupla.
  • 0:42 - 0:45
    Se for um "number", tudo o que temos que fazer é
  • 0:45 - 0:47
    descobrir qual é o valor inteiro deste string
  • 0:47 - 0:50
    Python me permite fazer isso, simplesmente chamando int, como se fosse uma função,
  • 0:50 - 0:53
    para convertr este string em um inteiro.
  • 0:53 - 0:56
    Caso contrário, o nodo deve ser um operador binário.
  • 0:56 - 0:58
    Então, simplesmente extraímos o filho à esquerda,
  • 0:58 - 1:00
    o operador e o filho à direita,
  • 1:00 - 1:04
    das partes da tupla que você já construiu,
  • 1:04 - 1:06
    quando fez o duro trabalho de construir o parser.
  • 1:06 - 1:08
    Então, aqui está o que voc6e tem que fazer neste reste:
  • 1:08 - 1:11
    você tem que determinar o valor do filho à esquerda e ddo filho à direta --
  • 1:11 - 1:14
    e a dica aqui é chamar a função recursivamente.
  • 1:14 - 1:16
    E depois, uma vez que você tenha esses valore,
  • 1:16 - 1:18
    voc6e deve de fato fazer a operação.
  • 1:18 - 1:21
    Se for um operador binário `+', some.
Title:
05-14 Eval Exp
Description:

05-14 eval_exp

more » « less
Video Language:
English
Team:
Udacity
Project:
CS262 - Programming Languages
Duration:
01:22
Lucilia Figueiredo added a translation

Portuguese, Brazilian subtitles

Revisions