Program ordinals and omega squared A program ordinal is a (possibly transfinite) ordinal which can be assigned to programs in some language depending on their output.

To be more specific:


Strings that give no output have ordinal 0
Programs that output a program of ordinal n have ordinal n+1
Programs P0 outputting multiple programs P1, P2... Pn have ordinal S, where S is the supremum of the set of program ordinals corresponding to the programs P1, P2... Pn


Your goal is to create the shortest possible program with program ordinal ω*ω, also writable as ω2 or omega squared.

Output is required for a program. As well as this, the output must go through STDOUT or closest equivalent.

All programs printed by your program must be delimited by any string, so long as the delimiter is always the same. (acbcd and accbccd are allowed, but not acbed) These delimiters must be the only output other than the programs themselves, unless your language must output trailing characters.

Here is a program-ordinal ω program created in pseudocode, which generates programs of the form "exit, print(exit), print("print(exit)")...:

x=exit
loop{
print(x)
x='print(#x)'
}


Within each iteration of the loop, x is printed and then wrapped in print() (exit becomes print(exit)). # is put before x in pseudocode to indicate that it is the variable x and not the actual alphabetical character x.

The shortest program (measured in bytes) which has program ordinal ω2 wins. Have fun.
Python 2, 67 63 65 bytes

x=&quot;&quot;
while 1:x=&quot;x=%r\nwhile 1:x='print%%r;'%%x;exec x;&quot;%x;print x

Try it online!
Use the same strategy as @UnrelatedString's answer, be sure to check out and upvote his answer!
Repeatedly print out programs with ordinal \$0, \omega, \omega2, \omega3,\ldots \$. The programs are separated by the string &quot;;\n&quot; (a semi-colon and a new line).
68 bytes to separate programs by a blank line.
Explanation
A program with ordinal \$n+1\$ is created by adding a print statement around an \$n\$-ordinal program:
print &lt;escaped string of ordinal-n program&gt;

A program with ordinal \$\omega(n+1)\$ is created by repeatedly printing out programs with ordinal \$\omega n, \omega n+1,\omega n+2,\ldots\$
x = &lt;string of omega*n program&gt;
while 1:
  x = 'print %r' % x
  exec x

Note the use of %r, which escapes the given string x. This way, we don't have to worry about quote and new line characters.
Finally, a program with ordinal \$\omega^2\$ is created by repeatedly printing out programs with ordinal \$0, \omega, \omega 2,\omega 3,\ldots\$:
# string of program to go from omega*n to omega*(n+1)
s = &quot;x=%r\nwhile 1:x='print%%r'%%x;exec x&quot; 
# current omega*n program, start with n=0
x = &quot;&quot;
while 1:
  # create the omega*(n+1) program from omega*n
  x = s % x
  # print it out
  print x