summaryrefslogtreecommitdiff
path: root/test/cases/rlhc.d/case/range.c-C-G1--goto-backend.exp
blob: 39397118280988053aec39c9ccaff34692bac32a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <stdio.h>
#include <string.h>

struct range
{
	int cs;
};



static const char  _range_nfa_targs [] = { 0, 0 ,  };
static const char  _range_nfa_offsets [] = { 0, 0, 0, 0, 0 ,  };
static const char  _range_nfa_push_actions [] = { 0, 0 ,  };
static const char  _range_nfa_pop_trans [] = { 0, 0 ,  };
static const int  range_start  = 1;
static const int  range_first_final  = 3;
static const int  range_error  = 0;
static const int  range_en_main  = 1;
void range_init( struct range *fsm )
{

	{
		(fsm->cs) = ( int ) range_start;
	}
}

void range_execute( struct range *fsm, const char *_data, int _len )
{
	const char *p = _data;
	const char *pe = _data+_len;
	
	
	{
		if ( p == pe  )
		goto _test_eof;
		
		if ( (fsm->cs) == 0  )
		goto _out;
		
		_resume:
		switch ( (fsm->cs) ) {
			case 1:
			if ( 97 <= ((*( p  ))
			)&& ((*( p  ))
			)<= 122  )
			{
				goto ctr0;
			}
			
			{
				goto ctr1;
			}
			case 0:
			goto _out;
			case 2:
			if ( ((*( p  ))
			)== 10  )
			{
				goto ctr2;
			}
			
			{
				goto ctr1;
			}
			case 3:
			{
				goto ctr1;
			}
			
		}
		ctr1: (fsm->cs) = 0;
		goto _again;
		ctr0: (fsm->cs) = 2;
		goto _again;
		ctr2: (fsm->cs) = 3;
		goto _again;
		
		_again:
		if ( (fsm->cs) == 0  )
		goto _out;
		
		p+= 1;
		if ( p != pe  )
		goto _resume;
		
		_test_eof: {}
		_out: {}
	}
}

int range_finish( struct range *fsm )
{
	if ( fsm->cs == range_error )
	return -1;
	if ( fsm->cs >= range_first_final )
	return 1;
	return 0;
}

struct range fsm;

void test( char *buf )
{
	int len = strlen( buf );
	range_init( &fsm );
	range_execute( &fsm, buf, len );
	if ( range_finish( &fsm ) > 0 )
	printf("ACCEPT\n");
	else
	printf("FAIL\n");
}

int main()
{
	test( "a\n" );
	test( "z\n" );
	test( "g\n" );
	test( "no\n" );
	test( "1\n" );
	
	return 0;
}