Preamble working, but quite easy to cause infinite loop by putting a symbol in its own preamble (as well as more subtle ways, some of which were already present with random nonterminals)... need to add some sort of max recursion depth