#!/bin/bash . ./Common ############################################################################### tst "substitutions: continue" -ds -q <<EOF !-s in = blah out = x in = (?)(*) { out = \$out\$1\$1 in = \$2 continue } EOF expect <<EOF in=blah out=x in=RE { out=\${out}\$1\$1 in=\$2 continue in } in= out=xbbllaahh EOF #------------------------------------------------------------------------------ tst "substitutions: named continue to inner block" -q x=abc <<EOF !-s z = x x = (?)(*) { x = \$2 y = \$x y = (*)(?) { z = \$z\$y\$2 y = \$1 continue y } } EOF expect <<EOF z=xbccbb x=bc y= EOF #------------------------------------------------------------------------------ tst "substitutions: named continue to outer block" -q x=abc <<EOF !-s z = x x = (?)(*) { x = \$2 y = \$x y = (*)(?) { z = \$z\$y\$2 y = \$1 continue x } } EOF expect <<EOF z=xbcccc x= y= EOF #------------------------------------------------------------------------------ tst "substitutions: continue to \$" -ds -q <<EOF !-s in = blah out = x in = ?(*) { in = \$1 out = \${out}+ continue \$ } EOF expect <<EOF in=blah out=x in=RE { in=\$1 out=\${out}+ continue in } in= out=x++++ EOF #------------------------------------------------------------------------------ tst_fail "substitutions: unnamed continue inside block" <<EOF !-s foo = * { continue bar = x } EOF expect <<EOF s:3: syntax error EOF #------------------------------------------------------------------------------ tst_fail "substitutions: named continue inside block" <<EOF !-s foo = * { continue foo bar = x } EOF expect <<EOF s:4: unreachable code EOF #------------------------------------------------------------------------------ tst_fail "substitutions: named continue to unknown block" -q <<EOF !-s x = foo x = * { y = \$x y = * { continue z } } EOF expect <<EOF s:8: cannot find "z" EOF #------------------------------------------------------------------------------ tst_fail "substitutions: continue without block" -q <<EOF !-s continue EOF expect <<EOF s:2: jump without block EOF ###############################################################################