Return to Video

04-43 Writing Reductions Solution

  • 0:00 - 0:02
    Vejamos como fazer isso.
  • 0:02 - 0:08
    Esperamos estar olhando para X -> ab & bull; from j.
  • 0:08 - 0:13
    Então, se olharmos de volta para chart[j], de onde viemos originalmente,
  • 0:13 - 0:19
    ele deve ter uma regra: alguma-coisa -> blah, blah, blah • X.
  • 0:19 - 0:21
    Esta é a parte importante.
  • 0:21 - 0:27
    Estamos reduzindo X -> ab e, portanto, eu realmente espero que alguém estivesse esperando X.
  • 0:27 - 0:30
    Se estiver, então isso pode ser uma de nossas reduções.
  • 0:30 - 0:35
    Mais uma vez, vamos usar o poder fenomenal de list comprehensions.
  • 0:35 - 0:41
    De modo geral, vamos pegar todos os estados do parser que estejam em chart[j],
  • 0:41 - 0:43
    e apenas modificá-los um pouco.
  • 0:43 - 0:47
    Vamos chamar cada um dos estdos em chart[j] de jstate.
  • 0:47 - 0:51
    Conceitualmente, o que vamos fazer é avançar o • 1 posição.
  • 0:51 - 0:58
    Então, nosso valor de retorno, o novo estado que vamos retornar, terá este mesmo Y que vimos em jstate --
  • 0:58 - 1:01
    seja lá o que for isso, será nosso lado esquerdo.
  • 1:01 - 1:05
    Então queremos pegar o que existe em jstate antes de • --
  • 1:05 - 1:09
    e isso corresponde a toda esta parte que deixamos de fora aqui --
  • 1:09 - 1:15
    mas então adicionar X, porque conceitualmente estamos fazendo shifting sobre X, quando fazemos a redução.
  • 1:15 - 1:20
    Agora queremos pegar tudo em jstate que esteja depois do •, exceto que queremos remover o X,
  • 1:20 - 1:23
    porque deslocamos o • sobre ele.
  • 1:23 - 1:27
    Tudo que havia em jstate antes de • é jstate[2],
  • 1:27 - 1:30
    e vamos usar `range selection' sobre isso para eliminar o primeiro elemento.
  • 1:30 - 1:33
    Parece agora que eu não posso prever --
  • 1:33 - 1:37
    seja lá o que for este valor k, vamos deixá-lo como está:
  • 1:37 - 1:40
    jstate[3] corresponde a k.
  • 1:40 - 1:45
    Entratanto, apenas queremos fazer isso se certas condições são satisfeitas:
  • 1:45 - 1:48
    1) cd deve ser a lista vazia, que corresponde
  • 1:48 - 1:51
    a este • mais à direita possível;
  • 1:51 - 1:56
    2) temos que verificar se X casa exatamente com este outro.
  • 1:56 - 2:03
    Este X é o primeiro elemento de jstate[2] -- então temos que verificar se jstate[2] é não vazio;
  • 2:03 - 2:07
    se este • estiver completamente à direita, não há nada para verificar.
  • 2:07 - 2:13
    Se é não vazio, vou verificar se seu primeiro caractere casa com nosso X.
  • 2:13 -
    Estes são todos os estados do parser que adicionamos como parte de fazer reduções.
Title:
04-43 Writing Reductions Solution
Description:

04-43 Escrevendo Reduções - Solução

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

Portuguese, Brazilian subtitles

Revisions