/* Generated by re2c 2.2 */
|
|
#line 1 "espurna\\ir_parse_state.re"
|
|
/*
|
|
|
|
Part of the IR MODULE
|
|
|
|
For more info:
|
|
- https://re2c.org/
|
|
- https://re2c.org/manual/manual_c.html
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
ParseResult<Payload> parse(StringView view) {
|
|
const char* YYCURSOR { view.begin() };
|
|
const char* YYLIMIT { view.end() };
|
|
const char* YYMARKER;
|
|
|
|
const char *p0 = nullptr, *p1 = nullptr;
|
|
const char *c0 = nullptr, *c1 = nullptr;
|
|
const char *s0 = nullptr, *s1 = nullptr;
|
|
const char *d0 = nullptr, *d1 = nullptr;
|
|
|
|
ParseResult<Payload> out;
|
|
|
|
|
|
#line 29 "espurna\\ir_parse_state.re.ipp"
|
|
const char *yyt1 { nullptr };
|
|
const char *yyt2 { nullptr };
|
|
const char *yyt3 { nullptr };
|
|
const char *yyt4 { nullptr };
|
|
#line 25 "espurna\\ir_parse_state.re"
|
|
|
|
|
|
#line 37 "espurna\\ir_parse_state.re.ipp"
|
|
{
|
|
char yych;
|
|
unsigned int yyaccept = 0;
|
|
yych = *YYCURSOR;
|
|
switch (yych) {
|
|
case '0' ... '9':
|
|
yyt1 = YYCURSOR;
|
|
goto yy4;
|
|
default:
|
|
if (YYLIMIT <= YYCURSOR) goto yy20;
|
|
goto yy2;
|
|
}
|
|
yy2:
|
|
++YYCURSOR;
|
|
yy3:
|
|
#line 49 "espurna\\ir_parse_state.re"
|
|
{ goto return_out; }
|
|
#line 55 "espurna\\ir_parse_state.re.ipp"
|
|
yy4:
|
|
yyaccept = 0;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
switch (yych) {
|
|
case '0' ... ':': goto yy6;
|
|
default: goto yy3;
|
|
}
|
|
yy5:
|
|
yych = *++YYCURSOR;
|
|
yy6:
|
|
switch (yych) {
|
|
case '0' ... '9': goto yy5;
|
|
case ':': goto yy8;
|
|
default: goto yy7;
|
|
}
|
|
yy7:
|
|
YYCURSOR = YYMARKER;
|
|
switch (yyaccept) {
|
|
case 0:
|
|
goto yy3;
|
|
case 1:
|
|
goto yy11;
|
|
default:
|
|
goto yy15;
|
|
}
|
|
yy8:
|
|
yych = *++YYCURSOR;
|
|
switch (yych) {
|
|
case '0' ... '9':
|
|
case 'A' ... 'F':
|
|
case 'a' ... 'f':
|
|
yyt2 = YYCURSOR;
|
|
goto yy9;
|
|
default: goto yy7;
|
|
}
|
|
yy9:
|
|
yyaccept = 1;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
switch (yych) {
|
|
case '0' ... '9':
|
|
case 'A' ... 'F':
|
|
case 'a' ... 'f': goto yy9;
|
|
case ':': goto yy12;
|
|
default: goto yy11;
|
|
}
|
|
yy11:
|
|
p0 = yyt1;
|
|
c0 = yyt2;
|
|
p1 = yyt2 - 1;
|
|
c1 = YYCURSOR;
|
|
#line 38 "espurna\\ir_parse_state.re"
|
|
{ goto update_out; }
|
|
#line 108 "espurna\\ir_parse_state.re.ipp"
|
|
yy12:
|
|
yych = *++YYCURSOR;
|
|
switch (yych) {
|
|
case '0' ... '9':
|
|
yyt3 = YYCURSOR;
|
|
goto yy13;
|
|
default: goto yy7;
|
|
}
|
|
yy13:
|
|
yyaccept = 2;
|
|
yych = *(YYMARKER = ++YYCURSOR);
|
|
switch (yych) {
|
|
case '0' ... '9': goto yy13;
|
|
case ':': goto yy16;
|
|
default: goto yy15;
|
|
}
|
|
yy15:
|
|
p0 = yyt1;
|
|
c0 = yyt2;
|
|
s0 = yyt3;
|
|
p1 = yyt2 - 1;
|
|
c1 = yyt3 - 1;
|
|
s1 = YYCURSOR;
|
|
#line 42 "espurna\\ir_parse_state.re"
|
|
{ goto update_out; }
|
|
#line 134 "espurna\\ir_parse_state.re.ipp"
|
|
yy16:
|
|
yych = *++YYCURSOR;
|
|
switch (yych) {
|
|
case '0' ... '9':
|
|
yyt4 = YYCURSOR;
|
|
goto yy17;
|
|
default: goto yy7;
|
|
}
|
|
yy17:
|
|
yych = *++YYCURSOR;
|
|
switch (yych) {
|
|
case '0' ... '9': goto yy17;
|
|
default: goto yy19;
|
|
}
|
|
yy19:
|
|
p0 = yyt1;
|
|
c0 = yyt2;
|
|
s0 = yyt3;
|
|
d0 = yyt4;
|
|
p1 = yyt2 - 1;
|
|
c1 = yyt3 - 1;
|
|
s1 = yyt4 - 1;
|
|
d1 = YYCURSOR;
|
|
#line 47 "espurna\\ir_parse_state.re"
|
|
{ goto update_out; }
|
|
#line 160 "espurna\\ir_parse_state.re.ipp"
|
|
yy20:
|
|
#line 50 "espurna\\ir_parse_state.re"
|
|
{ goto return_out; }
|
|
#line 164 "espurna\\ir_parse_state.re.ipp"
|
|
}
|
|
#line 51 "espurna\\ir_parse_state.re"
|
|
|
|
|
|
update_out:
|
|
{
|
|
if (!((c1 - c0) % 2)) {
|
|
out = prepare(
|
|
StringView{p0, p1},
|
|
StringView{c0, c1},
|
|
StringView{s0, s1},
|
|
StringView{d0, d1});
|
|
}
|
|
}
|
|
|
|
return_out:
|
|
return out;
|
|
}
|