Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Interpretador Lisp com Python3

Avatar for Serrones Serrones
November 09, 2019

Interpretador Lisp com Python3

Nessa palestra faço uma tour no projeto de Peter Norvig, construir um interpretador LISP utilizando Python3 como linguagem de interpretação.
O objetivo aqui é entender como Norvig explorou o Python para criar um interpretador para uma grande parte do dialeto LISP.

Avatar for Serrones

Serrones

November 09, 2019

More Decks by Serrones

Other Decks in Programming

Transcript

  1. Peter Norvig Renomado cientista da computação, atual diretor de pesquisas

    da Google, antes disso ocupava o cargo de diretor de qualidade de busca. Fellow da AAAI (Association for the Advancement of Artificial Intelligence ) http://norvig.com/
  2. LISP -- List Processing Lisp é uma família de linguagens

    de programação concebida em 1958 por John McCarthy. Em artigo ele mostra que é possível usar exclusivamente funções matemáticas como estruturas de dados elementares. Entre as décadas de 70 e 80, Lisp se tornou a principal linguagem da comunidade de Inteligência Artificial
  3. Fábio Serrão - Formado em Comunicação Social 2001 - 18

    anos trampando em televisão (produção e edição) - Comecei a estudar programação aos 38 anos - Com 40 anos troquei de área - 1 ano e meio como Dev Python Jr - Essa é minha primeira palestra!!
  4. Lispy Iterpretador Lisp com Python3 como linguagem de interpretação Motivos

    • Conhecer melhor o python • Conhecer melhor programação funcional • Passar o conteúdo para o público que tem dificuldades com conteúdos em inglês
  5. Sintaxe e Semântica Sintaxe de uma linguagem é o agrupamento

    de caracteres para formar declarações ou expressões Semântica é o significado dessas declarações ou expressões
  6. Programas Scheme - Consiste apenas de expressões - Números e

    símbolos são considerados expressões atômicas - Tudo mais é considerado expressões de lista - começa com ‘(‘ e termina com ‘)’
  7. Simplicidade do Scheme Scheme - 5 palavras-chave - 8 formas

    sintáticas Python - 33 palavras-chave - 110 formas sintáticas
  8. Calculadora Lispy Subconjunto do Scheme, usando apenas 5 formas sintáticas:

    - 2 atômicas (símbolo e número) - 2 formas especiais (condicional e definição) - 1 chamada de procedimento Permite fazer qualquer computação como uma calculadora, além de ter expressões condicionais e definição de variáveis
  9. Análise (parsing) O componente de análise pega a entrada do

    programa na forma de uma sequência de caracteres, faz a verificação conforme as regras sintáticas da linguagem, e traduz o programa para uma representação interna
  10. Execução (execution) A representação interna é então processada conforme as

    regras semânticas da linguagem, e assim executando a computação
  11. Definição dos Tipos Symbol → str Number → int, float

    Atom → Symbol, Number List → list Exp → List, Atom Env → dict
  12. Análise, tokenização e agrupamento A análise é dividida em 2

    partes: - Análise léxica, onde pegamos uma sequência de strings e quebramos ela em tokens - Análise sintática, onde reagrupamos esses tokens em uma árvore sintática abstrata Os tokens de LISP são parênteses, símbolos e números
  13. Ambiente O ambiente é o mapeamento de nomes de variáveis

    a seus valores. A execução usará um ambiente global que inclui um grupo de funções
  14. Eval Precisamos de uma função para avaliar a expressão que

    será passada juntamente com o ambiente criado