Desenvolvendo DSLs Em Python

Preview:

DESCRIPTION

Palestra "relâmpago" (15 min) mostrando alguns detalhes de construção de DSLs em Python: decorators, sobrecarga de operadores, __getattr__, utilizando como exemplo a biblioteca de expectations e matchers Should-DSL (http://github.com/hugobr/should-dsl)

Citation preview

Desenvolvendo DSLs em Python

Rodrigo S. ManhãesNúcleo de Pesquisa em Sistemas de Informação/IFF

Laboratório de Ciências Matemáticas/UENFGerê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!

...entre outros

operadores invertidos

__ror__

__or____ror__

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

__or____ror__

E isso foi só o começo...

inspect e frame objectshttp://github.com/hugobr/pyhistorianhttp://github.com/nsigustavo/ludibrio

codecs e tokenizehttp://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

Recommended