fork download
  1. import re
  2. import sys
  3.  
  4. re_class = re.compile('([:, ]+((((virtual|public|private)\s)+(?P<class>[A-Za-z0-9]+))))')
  5. re_nested_class = re.compile('class\s+(?P<nested_class>[A-Za-z0-9_]+)')
  6.  
  7. for line in sys.stdin:
  8. m = re_nested_class.search(line)
  9. if m:
  10. cls = m.group('nested_class')
  11. classes = []
  12. for m in re_class.finditer(line):
  13. classes.append(m.group('class'))
  14. if classes:
  15. print('Class {0} inherits {1}'.format(cls, ', '.join(classes)))
  16. else:
  17. print('Class {0} doesn\'t inherit any class'.format(cls))
Success #stdin #stdout 0.04s 44944KB
stdin
class Parent {};
class Child: virtual public Parent {};
class Child2: virtual public Parent {};
class Child3: virtual public Child, virtual public Child2, virtual public Child4 {};
class Child4: virtual public Child2 {};
class Child5: virtual public Child {};
class Child6: virtual public Parent, virtual public Child3 {};
class Child7: virtual public Child3, virtual public Child {};
stdout
Class Parent doesn't inherit any class
Class Child inherits Parent
Class Child2 inherits Parent
Class Child3 inherits Child, Child2, Child4
Class Child4 inherits Child2
Class Child5 inherits Child
Class Child6 inherits Parent, Child3
Class Child7 inherits Child3, Child