107 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Brainfuck
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Brainfuck
		
	
	
	
	
	
#
 | 
						|
zero 0;
 | 
						|
one 1;
 | 
						|
 | 
						|
if_t()
 | 
						|
{
 | 
						|
	extrn zero, one;
 | 
						|
	auto fails, successes;
 | 
						|
 | 
						|
	successes = 0;
 | 
						|
 | 
						|
	if (zero)
 | 
						|
		fail(__LINE__);
 | 
						|
 | 
						|
	if (zero)
 | 
						|
		fail(__LINE__);
 | 
						|
	else
 | 
						|
		successes++;
 | 
						|
 | 
						|
	if (one)
 | 
						|
		successes++;
 | 
						|
 | 
						|
	if (one)
 | 
						|
		successes++;
 | 
						|
	else
 | 
						|
		fail(__LINE__);
 | 
						|
 | 
						|
	if (successes != 3)
 | 
						|
		fail(__LINE__);
 | 
						|
}
 | 
						|
 | 
						|
while_t()
 | 
						|
{
 | 
						|
	extrn zero, one;
 | 
						|
	auto successes, count;
 | 
						|
	
 | 
						|
	successes = 3;
 | 
						|
	count = 0;
 | 
						|
	while (count)
 | 
						|
	{
 | 
						|
		successes++;
 | 
						|
		count--;
 | 
						|
	}
 | 
						|
	if (successes != 3)
 | 
						|
		fail(__LINE__);
 | 
						|
 | 
						|
	while (zero)
 | 
						|
		fail(__LINE__);
 | 
						|
 | 
						|
	while (one)
 | 
						|
	{
 | 
						|
		break;
 | 
						|
		fail(__LINE__);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
sdata(n)
 | 
						|
{
 | 
						|
	switch (n)
 | 
						|
	{
 | 
						|
		case 0: return(0);
 | 
						|
		case 1: return(1);
 | 
						|
		case 100: return(100);
 | 
						|
		default: return(-1);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
switch_t()
 | 
						|
{
 | 
						|
	extrn zero;
 | 
						|
	auto successes;
 | 
						|
 | 
						|
	if (!(sdata(-1) == -1)) fail(__LINE__);
 | 
						|
	if (!(sdata(0) == 0)) fail(__LINE__);
 | 
						|
	if (!(sdata(1) == 1)) fail(__LINE__);
 | 
						|
	if (!(sdata(2) == -1)) fail(__LINE__);
 | 
						|
	if (!(sdata(100) == 100)) fail(__LINE__);
 | 
						|
	if (!(sdata(200) == -1)) fail(__LINE__);
 | 
						|
 | 
						|
	successes = 0;
 | 
						|
	switch (zero)
 | 
						|
	{
 | 
						|
		case 0: /* fall through */
 | 
						|
		case 1: successes++; break;
 | 
						|
	}
 | 
						|
	if (successes != 1)
 | 
						|
		fail(__LINE__);
 | 
						|
}
 | 
						|
 | 
						|
goto_t()
 | 
						|
{
 | 
						|
	goto n;
 | 
						|
	fail(__LINE__);
 | 
						|
	n:;
 | 
						|
}
 | 
						|
 | 
						|
main()
 | 
						|
{
 | 
						|
	if_t();
 | 
						|
	switch_t();
 | 
						|
	goto_t();
 | 
						|
	while_t();
 | 
						|
 | 
						|
	finished();
 | 
						|
	return(0);
 | 
						|
}
 | 
						|
 |