Better API for lazy evaluation when programmatically creating a grammar with cyclic references to rules