tcursorloop.nim 715 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. discard """
  2. cmd: '''nim c --gc:arc --expandArc:traverse --hint:Performance:off $file'''
  3. nimout: '''
  4. --expandArc: traverse
  5. var
  6. it
  7. jt_cursor
  8. try:
  9. `=copy`(it, root)
  10. block :tmp:
  11. while (
  12. not (it == nil)):
  13. if true:
  14. echo [it.s]
  15. `=copy`(it, it.ri)
  16. jt_cursor = root
  17. if (
  18. not (jt_cursor == nil)):
  19. echo [jt_cursor.s]
  20. jt_cursor = jt_cursor.ri
  21. finally:
  22. `=destroy`(it)
  23. -- end of expandArc ------------------------
  24. '''
  25. """
  26. type
  27. Node = ref object
  28. le, ri: Node
  29. s: string
  30. proc traverse(root: Node) =
  31. var it = root
  32. while it != nil:
  33. if true:
  34. echo it.s
  35. it = it.ri
  36. var jt = root
  37. if jt != nil:
  38. echo jt.s
  39. jt = jt.ri
  40. traverse(nil)