'begin'
	'begin'
		'comment'
			example for dirty side effects.

			jump out of the dynamic initialisation of an
			array.
		;

		'integer' 'procedure' foo (n);
		'begin'
			vprint (100);
			'if' n < 0 'then'
				'goto' barret;
			foo := n;
			vprint (150);
		'end';

		'integer' 'array' ii [1 : foo (-10)];

		vprint (50);
	barret:
		vprint (200);
	'end';

	'begin'
		'comment'
			a simple one.
			leave a function with goto to a second one.
		;

		'integer' 'procedure' foo (n);
		'begin'
			'integer' 'procedure' bar (n);
			'begin'
				vprint (500);
				'if' n < 0 'then'
					'goto' barret;
				bar := n;
				vprint (501);
			'end';

			vprint (400);
			foo := 600;
			foo := bar (n);
		barret:
		'end';

		vprint (300);
		vprint (foo (-99));
	'end';
'end'
