/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -i --tags --input custom
#include <stddef.h>
#include <stdio.h>

static void lex(const char *s)
{
#define YYPEEK()           *s
#define YYSKIP()           ++s
#define YYBACKUP()         marker = s
#define YYRESTORE()        s = marker
#define YYSTAGP(t)         t = s
#define YYSTAGN(t)         t = NULL
#define YYRESTORETAG(t)    s = t
    const char *marker, *p0, *p1, *p2, *p3;
    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
    
{
	char yych;
	yych = YYPEEK();
	switch (yych) {
		case '0':
			YYSTAGP(yyt1);
			goto yy2;
		case '1':
			YYSTAGP(yyt1);
			YYSTAGP(yyt2);
			goto yy4;
		case '2':
			YYSTAGP(yyt1);
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			goto yy5;
		case '3':
			YYSTAGP(yyt1);
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			goto yy6;
		case '4':
			YYSTAGP(yyt1);
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy7;
		default: goto yy1;
	}
yy1:
	YYSKIP();
	{ printf("error\n"); return; }
yy2:
	YYSKIP();
	yych = YYPEEK();
	switch (yych) {
		case '0': goto yy2;
		case '1':
			YYSTAGP(yyt2);
			goto yy4;
		case '2':
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			goto yy5;
		case '3':
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			goto yy6;
		case '4':
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy7;
		default:
			YYSTAGP(yyt2);
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy3;
	}
yy3:
	p0 = yyt1;
	p1 = yyt2;
	p2 = yyt3;
	p3 = yyt4;
	YYRESTORETAG(yyt5);
	{
            printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
                p1 - p0, p0,
                p2 - p1, p1,
                p3 - p2, p2,
                s - p3, p3,
                s);
                return;
        }
yy4:
	YYSKIP();
	yych = YYPEEK();
	switch (yych) {
		case '1': goto yy4;
		case '2':
			YYSTAGP(yyt3);
			goto yy5;
		case '3':
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			goto yy6;
		case '4':
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy7;
		default:
			YYSTAGP(yyt3);
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy3;
	}
yy5:
	YYSKIP();
	yych = YYPEEK();
	switch (yych) {
		case '2': goto yy5;
		case '3':
			YYSTAGP(yyt4);
			goto yy6;
		case '4':
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy7;
		default:
			YYSTAGP(yyt4);
			YYSTAGP(yyt5);
			goto yy3;
	}
yy6:
	YYSKIP();
	yych = YYPEEK();
	switch (yych) {
		case '3': goto yy6;
		case '4':
			YYSTAGP(yyt5);
			goto yy7;
		default:
			YYSTAGP(yyt5);
			goto yy3;
	}
yy7:
	YYSKIP();
	yych = YYPEEK();
	switch (yych) {
		case '4': goto yy7;
		default: goto yy3;
	}
}

}

int main(int argc, char **argv)
{
    for (int i = 1; i < argc; ++i) {
        lex(argv[i]);
    }
    return 0;
}
tags/fix3_trail.re:25:15: warning: rule matches empty string [-Wmatch-empty-string]
