fork download
  1. # your code goes here
  2. def extract_args(expr):
  3. paren = 0
  4. start = 0
  5. ret = []
  6. for i, c in enumerate(expr):
  7. if c=='(':
  8. paren+=1
  9. if paren==1:
  10. start=i+1
  11. elif c==')':
  12. if paren==1 and start:
  13. ret.append(expr[start:i])
  14. paren-=1
  15. elif c==',' and paren==1:
  16. ret.append(expr[start:i])
  17. start=i+1
  18. return ret
  19.  
  20. a="""Fxfu(x1,Y,n<X+Y)
  21. Fxfu(x1,Y(n,A,B),Z(n,A,B)+M(n,A,B)<n)
  22. Fxfu(x1,Y(n),Z(n)^M(n)<X+Y)
  23. Fxfu(x1,(n,A,B),Z(n)^M(n)<T(n,A,B))"""
  24. for l in a.split('\n'):
  25. print repr(extract_args(l))
Success #stdin #stdout 0.02s 9016KB
stdin
Standard input is empty
stdout
['x1', 'Y', 'n<X+Y']
['x1', 'Y(n,A,B)', 'Z(n,A,B)+M(n,A,B)<n']
['x1', 'Y(n)', 'Z(n)^M(n)<X+Y']
['x1', '(n,A,B)', 'Z(n)^M(n)<T(n,A,B)']