- struct TrieNode * root = getNode();
- struct TrieNode * sub_root = getNode();
- // 1
- insert(sub_root, "1", 0, rule_0);
- // 2, restore point
- insert(rule_0, "2", 1, rule_1);
- // 35
- insert(rule_1, "3", 2, rule_2);
- insert(rule_2, "5", 3, rule_3); // link to next statement, which happens to be a definition
- // 2, restore point
- insert(rule_0, "2", 1, rule_4);
- // 85
- insert(rule_4, "8", 2, rule_5);
- insert(rule_5, "5", 3, rule_3); // link to next statement, which happens to be a definition
- // 91, restore point
- insert(rule_3, "9", 2, rule_4);
- insert(rule_4, "1", 3, rule_5); // link to end
- // 91, restore point
- insert(rule_3, "9", 2, rule_6);
- // 92
- insert(rule_6, "9", 2, rule_7);
- insert(rule_7, "2", 3, rule_5); // link to end
- // 6, end of rule
- insert(rule_5, "6", 2, NULL);