def parseExp(self,str):
"""Expression Parser
if __name__ == "__main__":
#parse("a-b*c/(3+6)")
a = '( ( A and B ) or C ) and D'
print parseExp(a)
"""
result = ""
import re
b = '(%s)'%str
c = b.replace('(','( ').replace(')',' )')
lst = re.split("[ ]",c)
(s, exp, i, str) = ([], [], 0, lst)
for ex in str:
if ex not in ['(',')','and','or','AND','OR']:
exp.append(ex)
elif ex == '(':
s.append(ex)
elif ex == ')':
while s[-1] != '(':
exp.append(s.pop())
s.pop()
elif ex in ['and', 'or','AND','OR']:
while s[-1] != '(':
exp.append(s.pop())
s.append(ex)
for i in exp:
if i and result:
result = '%s %s'%(result,i)
elif i:
result = '%s'%i
return result
"""Expression Parser
if __name__ == "__main__":
#parse("a-b*c/(3+6)")
a = '( ( A and B ) or C ) and D'
print parseExp(a)
"""
result = ""
import re
b = '(%s)'%str
c = b.replace('(','( ').replace(')',' )')
lst = re.split("[ ]",c)
(s, exp, i, str) = ([], [], 0, lst)
for ex in str:
if ex not in ['(',')','and','or','AND','OR']:
exp.append(ex)
elif ex == '(':
s.append(ex)
elif ex == ')':
while s[-1] != '(':
exp.append(s.pop())
s.pop()
elif ex in ['and', 'or','AND','OR']:
while s[-1] != '(':
exp.append(s.pop())
s.append(ex)
for i in exp:
if i and result:
result = '%s %s'%(result,i)
elif i:
result = '%s'%i
return result