spacepaste

  1.  
  2. struct TrieNode * root = getNode();
  3. struct TrieNode * sub_root = getNode();
  4. // i:
  5. // s1
  6. insert(sub_root, "1", 0, rule_0);
  7. // s2, b, restore point
  8. insert(rule_0, "2", 1, rule_1);
  9. // C
  10. // s3
  11. insert(rule_1, "3", 2, rule_2);
  12. // s5
  13. insert(rule_2, "5", 3, rule_3); // link to next statement, which happens to be a definition
  14. // C
  15. // s2, restore point
  16. insert(rule_0, "2", 1, rule_4);
  17. // s8
  18. insert(rule_4, "8", 2, rule_5);
  19. // s5
  20. insert(rule_5, "5", 3, rule_3); // link to next statement, which happens to be a definition
  21. // e
  22. // s9, b, restore point, because that this is directly after a previous branch the restore point is set to the start of this branch
  23. // C
  24. // s9
  25. insert(rule_3, "9", 2, rule_4);
  26. // s1
  27. insert(rule_4, "1", 3, rule_5); // link to end
  28. // C
  29. // s9, restore point
  30. insert(rule_3, "9", 2, rule_6);
  31. // s9
  32. insert(rule_6, "9", 2, rule_7);
  33. // s2
  34. insert(rule_7, "2", 3, rule_5); // link to end
  35. // s6, end of rule
  36. insert(rule_5, "6", 2, NULL);
  37.