1 /* Generated by re2c */
2 // re2c $INPUT -o $OUTPUT -bci --eager-skip
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <string.h>
6 
7 #define YYGETCONDITION()  yy_state
8 #define YYSETCONDITION(s) yy_state = s
9 #define YYCTYPE         char
10 #define YYCURSOR        p
11 #define YYLIMIT         (s+l)
12 #define YYMARKER        q
13 #define YYFILL(n)
14 
15 #define STATE(name)  yyc##name
16 
17 static enum YYCONDTYPE yy_state;
18 
19 enum YYCONDTYPE {
20 	yycINITIAL,
21 	yycST_VALUE,
22 };
23 
24 
scan(char * s,int l)25 int scan(char *s, int l)
26 {
27 	char *p = s;
28 	char *q = 0;
29 	char *t;
30 
31 	for(;;)
32 	{
33 		t = p;
34 
35 		{
36 			YYCTYPE yych;
37 			unsigned int yyaccept = 0;
38 			if (YYGETCONDITION() < 1) {
39 				goto yyc_INITIAL;
40 			} else {
41 				goto yyc_ST_VALUE;
42 			}
43 /* *********************************** */
44 yyc_INITIAL:
45 			if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
46 			yych = *YYCURSOR++;
47 			if (yych <= 0x00) goto yy2;
48 			if (yych == '$') goto yy6;
49 			goto yy4;
50 yy2:
51 			{ printf("EOF\n");	return 0; }
52 yy4:
53 yy5:
54 			{ printf("ERR\n");	return 1; }
55 yy6:
56 			yych = *YYCURSOR;
57 			if (yych <= '@') goto yy5;
58 			if (yych <= 'Z') {
59 				++YYCURSOR;
60 				goto yy7;
61 			}
62 			if (yych <= '`') goto yy5;
63 			if (yych >= '{') goto yy5;
64 			++YYCURSOR;
65 yy7:
66 			{
67 		printf("FOUND %s\n", t);
68 		continue;
69 	}
70 /* *********************************** */
71 yyc_ST_VALUE:
72 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
73 			yych = *(YYMARKER = YYCURSOR);
74 			if (yych <= 0x1F) {
75 				if (yych == '\t') {
76 					++YYCURSOR;
77 					goto yy12;
78 				}
79 			} else {
80 				if (yych <= ' ') {
81 					++YYCURSOR;
82 					goto yy12;
83 				}
84 				if (yych == '$') {
85 					++YYCURSOR;
86 					goto yy14;
87 				}
88 			}
89 yy11:
90 			{
91 		YYSETCONDITION(STATE(INITIAL));
92 		printf("Found spaces\n");
93 	}
94 yy12:
95 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
96 			yych = *YYCURSOR;
97 			if (yych == '\t') {
98 				++YYCURSOR;
99 				goto yy12;
100 			}
101 			if (yych == ' ') {
102 				++YYCURSOR;
103 				goto yy12;
104 			}
105 			goto yy11;
106 yy14:
107 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
108 			yych = *YYCURSOR;
109 			if (yych <= '@') goto yy15;
110 			if (yych <= 'Z') {
111 				++YYCURSOR;
112 				goto yy16;
113 			}
114 			if (yych <= '`') goto yy15;
115 			if (yych <= 'z') {
116 				++YYCURSOR;
117 				goto yy16;
118 			}
119 yy15:
120 			YYCURSOR = YYMARKER;
121 			if (yyaccept == 0) {
122 				goto yy11;
123 			} else {
124 				goto yy17;
125 			}
126 yy16:
127 			yyaccept = 1;
128 			YYMARKER = YYCURSOR;
129 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
130 			yych = *YYCURSOR;
131 			if (yych == '$') {
132 				++YYCURSOR;
133 				goto yy14;
134 			}
135 yy17:
136 			{
137 		printf("Found $ or $\\<x>\n");
138 		continue;
139 	}
140 		}
141 
142 	}
143 }
144 
main(int argc,char ** argv)145 int main(int argc, char **argv)
146 {
147 	if (argc > 1)
148 	{
149 		return scan(argv[1], strlen(argv[1]));
150 	}
151 	else
152 	{
153 		fprintf(stderr, "%s <expr>\n", argv[0]);
154 		return 1;
155 	}
156 }
157 yyaccept_missing_bci_eager_skip.re:45:27: warning: rule in condition 'ST_VALUE' matches empty string [-Wmatch-empty-string]
158