externalroutine toplev
  longreal lr1
  integer i, i1 = 1, i2 = 2, i3 = 3

  i = i1 while i2 = i3
  i = i1 until i2 = i3
  i = i1 for i2 = i3, 1, i1

  while i2 = i3 then i = i1
  ! ILLEGAL IMP77: %until i2 = i3 %then i = i1

  ! This is legal Imp77 but my parser doesn't accept it.  FIX IT.
  !%for i2 = i3, 1, i1 %then i = i1

  while i1 = i2 cycle
    i = i1
  repeat

  ! ILLEGAL IMP77:
  !%until i1 = i2 %cycle
  !  i = i1
  !%repeat

  cycle
    i = i1
  repeat until i1 = i2

  for i2 = i3, 1, i1 cycle
    i = i1
  repeat

  while i1 = i2 cycle
    i = i1
  repeat; ! temp disabled: %until i2 = i3

  ! ILLEGAL IMP77:
  !%until i1 = i2 %cycle
  !  i = i1
  !%repeat %until i2 = i3

lab7:

  for i2 = i3, 1, i1 cycle
    i = i1
  repeat; ! temp disabled: %until i2 = i3




  i = i1 and i1 = i2 while i2 = i3
  i = i1 and i1 = i2 until i2 = i3

lab3:

  i = i1 and i1 = i2 for i2 = i3, 1, i1

lab4:

  while i2 = i3 then i = i1 and i1 = i2
  ! ILLEGAL IMP77: %until i2 = i3 %then i = i1 %and i1 = i2

lab5:

  ! This is legal Imp77 but my parser doesn't accept it.  FIX IT.
  !%for i2 = i3, 1, i1 %then i = i1 %and i1 = i2

  while i1 = i2 cycle
    i = i1 ; i1 = i2
  repeat

  ! ILLEGAL IMP77:
  !%until i1 = i2 %cycle
  !  i = i1 ; i1 = i2
  !%repeat

lab6:

  cycle
    i = i1 ; i1 = i2
  repeat until i1 = i2

lab2:

  for i2 = i3, 1, i1 cycle
    i = i1 ; i1 = i2
  repeat

  while i1 = i2 cycle
    i = i1 ; i1 = i2
  repeat; ! temp disabled: %until i2 = i3

  ! ILLEGAL IMP77:
  !%until i1 = i2 %cycle
  !  i = i1 ; i1 = i2
  !%repeat %until i2 = i3

lab1:

  for i2 = i3, 1, i1 cycle
    i = i1 ; i1 = i2
  repeat; ! temp disabled: %until i2 = i3

end
endoffile