[Python-es] RE: Una ultima duda con el parser
Hernan Martinez Foffani
hernan en orgmf.com.ar
Mie Sep 4 12:45:58 CEST 2002
> si yo tengo esto: 'linux or (sun and (not pc))'
>
> con el parser consigo que me devuelva:
> 'Or(Terminal('linux'),And(Terminal('sun'),Not(Terminal('pc'))))'
>
> >>> predParser.parse('expr','linux or (sun and (not pc))')
> "Or(Terminal('linux'),And(Terminal('sun'),Not(Terminal('pc'))))"
> >>> r = predParser.parse('expr','linux or (sun and (not pc))')
> >>> type (r)
> <type 'str'>
> >>>
>
> y tengo que esto es tipo string, como puedo hacer que se cree un
> objeto para luego poder pasarle
> el metodo evaluar, que es dependiente de cada clase, es decir,
> especifico para el Not, And, Or y
> Terminal.
si Not, And, etc. son metodos de una determinada clase, y
no funciones globales, tenes que cambiar el parser para que
te devuelva algo como:
r = "obj.Or(obj.Terminal('linux'),obj.And(... etc.... "
y luego:
eval(r, {"obj": obj})
donde obj es un objeto de la clase que define los metodos.
-Hernan
Más información sobre la lista de distribución Python-es