On Nov 7, 7:48 am, [EMAIL PROTECTED] wrote: > I am trying to simulate the execution of some PLC ladder logic in > python. > > I manually modified the rungs and executed this within python as a > proof of concept, but I'd like to be able to skip the modification > step. My thought was that this might be able to be completed via > overloading, but I am not sure if (or how) it could be done. > > overloadings: > + ==> OR > * ==> AND > / ==> NOT > > Example original code: > A=/B+C*D > translates to: > A=not B or C and D > > I tried > def __add__ (a,b): > return (a or b) > > which gives me this: > > >>> x=False > >>> y=True > >>> x+y > 1 > >>> x=True > >>> x+y > 2 > > How can this be done?
Here is an example, but Paul is right. There's no way to customize precedence. >>> class Opand: ... def __add__( self, other ): ... return self.val or other.val ... def __init__( self, val ): ... self.val= val ... >>> a= Opand( True ) >>> b= Opand( False ) >>> a+ b True >>> a= Opand( False ) >>> a+ b False -- http://mail.python.org/mailman/listinfo/python-list