matchPreviousDemo.py 586 B

123456789101112131415161718192021222324252627282930313233
  1. #
  2. # matchPreviousDemo.py
  3. #
  4. from pyparsing import *
  5. src = """
  6. class a
  7. ...
  8. end a;
  9. class b
  10. ...
  11. end b;
  12. class c
  13. ...
  14. end d;"""
  15. identifier = Word(alphas)
  16. classIdent = identifier("classname") # note that this also makes a copy of identifier
  17. classHead = "class" + classIdent
  18. classBody = "..."
  19. classEnd = "end" + matchPreviousLiteral(classIdent) + ';'
  20. classDefn = classHead + classBody + classEnd
  21. # use this form to catch syntax error
  22. # classDefn = classHead + classBody - classEnd
  23. for tokens in classDefn.searchString(src):
  24. print(tokens.classname)