Desenvolvendo DSLs em
                 Python


          Rodrigo S. Manhães
  Núcleo de Pesquisa em Sistemas de Informação/IFF
      Laboratório de Ciências Matemáticas/UENF
      Gerência de Recursos Computacionais/UENF
domain specific language
make


     CSS


     SQL


   Django *


Ruby on Rails *
concisão
concisão




fluência
Django
concisão




   fluência




expressividade
unittest




should-dsl
should-dsl



   expectativas para testes e
  especificações automatizadas



http://github.com/hugobr/should-dsl
O que
é isso?   e isso?
sobrecarga de operadores
sobrecarga de operadores
...entre outros
ops!
operadores invertidos




  ...entre outros
__ror__
__ror__   __or__
objeto   atributo
e se eu quiser outros matchers?
matchers customizados
concisão


    fluência


 expressividade


extensibilidade
atributo??
Python decorators
classe Should
respondendo a mensagens perdidas
classe Should
__ror__   __or__
E isso foi só o começo...



  inspect e frame objects
  http://github.com/hugobr/pyhistorian
  http://github.com/nsigustavo/ludibrio




      codecs e tokenize
     http://github.com/fmeyer/yeti
De onde vêm as imagens
(4) http://www.flickr.com/photos/clover_1/176047283/

(5) http://www.flickr.com/photos/ysc/2179798100/

(25) http://www.flickr.com/photos/jasperdeboer/15346117/

(37) http://www.flickr.com/photos/waldopepper/3424717308/

(38) http://www.flickr.com/photos/lwr/12364944/
Alguns exemplos extraídos de



http://media.brianbeck.com/files/Python_DSLs_I.pdf

Desenvolvendo DSLs Em Python