
'begin'
	'comment'
		goto test.
		simple arithmetic with some jumps.
	;

	'begin' 'comment'  first one : ;

		'integer' i;

		i := 0;
		'goto' foo;

	bar:
		i := i * 10;
		'goto' onk;

	foo:
		i := i + 1;

		'begin'
			'goto' nase;

			i := i + 999;
		'end';

		'if' i > 0 'then' onk: i := - i;
		'goto' done;

	nase:
		i := i + 1;

		'goto' bar;

	done:
		vprint (i, ` (should be -20)')
	'end';

	'begin' 'comment'  second one : ;

		'integer' foo;

		foo := 1;
	bar:
	fred:
		'begin'
			'begin'
			fred:
				'goto' bar
			'end';
		bar:
			foo := foo + 1;
			'goto' fred;
		fred:
		'end';
		vprint (foo, ` (should be 2)')
	'end';

	'begin' 'comment'' third one :  ;

		'integer' i;

		'procedure' foo (i);
		'begin'
			'integer' ii;

			ii := i;
			vprint ("foo  entered... (", ii, ").");
			'goto' nase;
		'end';

		vprint ("hi!");
		i := 0;
	nase:
		i := i + 1;
		vprint ("nase reached... (", i, ").");

		'if' i < 5 'then' foo (i);
	'end';

	vprint ("\n");

	'begin'
		'procedure' foo (l);
			'goto' l;
		'procedure' bar (p, l);
			p (l);
		vprint (1);
		foo (aa);
		vprint (-1);
	aa:
		vprint (2);
		bar (foo, bb);
		vprint (-1);
	bb:
		vprint (3)
	'end';


	'begin' 'comment'  check ``tlabel for_stmt'' ;

		'integer' i;

		'procedure' foo (l);
		'label' l;
			'goto' l;

		vprint (4);
		foo (gaga);
		vprint (-1);
	gaga:
		'for' i := 1 'do' 
			vprint (5);
	'end';
'end'
