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
|
/* Generated by re2c */
#line 1 "bug57.re"
// re2c $INPUT -o $OUTPUT
#include <stdio.h>
int scan(const char *p)
{
#define YYCTYPE char
const char *YYCURSOR = p;
const char *YYMARKER;
#line 14 "bug57.c"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
yych = *YYCURSOR;
switch (yych) {
case '\n': goto yy1;
case '<': goto yy4;
case '\\': goto yy5;
case 'a': goto yy6;
default: goto yy2;
}
yy1:
#line 16 "bug57.re"
{ return YYCURSOR - p; }
#line 29 "bug57.c"
yy2:
++YYCURSOR;
yy3:
#line 17 "bug57.re"
{ return 0; }
#line 35 "bug57.c"
yy4:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '>': goto yy7;
case '\\': goto yy8;
case 'x':
case 'y': goto yy10;
default: goto yy3;
}
yy5:
yych = *++YYCURSOR;
switch (yych) {
case 'b': goto yy6;
default: goto yy3;
}
yy6:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '\\': goto yy11;
case 'a': goto yy6;
default: goto yy1;
}
yy7:
++YYCURSOR;
#line 15 "bug57.re"
{ return YYCURSOR - p; }
#line 64 "bug57.c"
yy8:
yych = *++YYCURSOR;
switch (yych) {
case 'b': goto yy10;
default: goto yy9;
}
yy9:
YYCURSOR = YYMARKER;
if (yyaccept == 0) goto yy3;
else goto yy1;
yy10:
yych = *++YYCURSOR;
switch (yych) {
case '>': goto yy7;
case '\\': goto yy8;
case 'x':
case 'y': goto yy10;
default: goto yy9;
}
yy11:
yych = *++YYCURSOR;
switch (yych) {
case 'b': goto yy6;
default: goto yy9;
}
}
#line 18 "bug57.re"
}
int main()
{
const char *str = "aaa\\baaa";
int res = scan(str);
printf("%d: %s\n", res, str + res);
return 0;
}
bug57.re:16:26: warning: rule matches empty string [-Wmatch-empty-string]
|