|
|
- /* Generated by re2c 2.2 */
- #line 1 "espurna\\ir_parse_simple.re"
- /*
-
- Part of the IR MODULE
-
- For more info:
- - https://re2c.org/
- - https://re2c.org/manual/manual_c.html
-
- */
-
- #pragma once
-
- // TODO: some sanity checks for 'valid' ranges of the parsed values, when state machine reaches individual value decoders?
-
- 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 *b0 = nullptr, *b1 = nullptr;
- const char *r0 = nullptr, *r1 = nullptr;
- const char *s0 = nullptr, *s1 = nullptr;
- const char *d0 = nullptr, *d1 = nullptr;
-
- ParseResult<Payload> out;
-
-
- #line 33 "espurna\\ir_parse_simple.re.ipp"
- const char *yyt1 { nullptr };
- const char *yyt2 { nullptr };
- const char *yyt3 { nullptr };
- const char *yyt4 { nullptr };
- const char *yyt5 { nullptr };
- const char *yyt6 { nullptr };
- #line 29 "espurna\\ir_parse_simple.re"
-
-
- #line 43 "espurna\\ir_parse_simple.re.ipp"
- {
- char yych;
- unsigned int yyaccept = 0;
- yych = *YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- yyt1 = YYCURSOR;
- goto yy4;
- default:
- if (YYLIMIT <= YYCURSOR) goto yy41;
- goto yy2;
- }
- yy2:
- ++YYCURSOR;
- yy3:
- #line 63 "espurna\\ir_parse_simple.re"
- { goto return_out; }
- #line 61 "espurna\\ir_parse_simple.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 yy16;
- case 2:
- goto yy22;
- default:
- goto yy28;
- }
- yy8:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f':
- yyt2 = YYCURSOR;
- goto yy9;
- default: goto yy7;
- }
- yy9:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy10;
- default: goto yy7;
- }
- yy10:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy11;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy11:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy13;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy12:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- yyt3 = YYCURSOR;
- goto yy14;
- default: goto yy7;
- }
- yy13:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy17;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy14:
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '0' ... '9': goto yy14;
- case ':': goto yy18;
- default: goto yy16;
- }
- yy16:
- p0 = yyt1;
- c0 = yyt2;
- b0 = yyt3;
- p1 = yyt2 - 1;
- c1 = yyt3 - 1;
- b1 = YYCURSOR;
- #line 43 "espurna\\ir_parse_simple.re"
- { goto update_out; }
- #line 159 "espurna\\ir_parse_simple.re.ipp"
- yy17:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy19;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy18:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- yyt4 = YYCURSOR;
- goto yy20;
- default: goto yy7;
- }
- yy19:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy23;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy20:
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '0' ... '9': goto yy20;
- case ':': goto yy24;
- default: goto yy22;
- }
- yy22:
- p0 = yyt1;
- c0 = yyt2;
- b0 = yyt3;
- r0 = yyt4;
- p1 = yyt2 - 1;
- c1 = yyt3 - 1;
- b1 = yyt4 - 1;
- r1 = YYCURSOR;
- #line 48 "espurna\\ir_parse_simple.re"
- { goto update_out; }
- #line 205 "espurna\\ir_parse_simple.re.ipp"
- yy23:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy25;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy24:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- yyt5 = YYCURSOR;
- goto yy26;
- default: goto yy7;
- }
- yy25:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy29;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy26:
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '0' ... '9': goto yy26;
- case ':': goto yy30;
- default: goto yy28;
- }
- yy28:
- p0 = yyt1;
- c0 = yyt2;
- b0 = yyt3;
- r0 = yyt4;
- s0 = yyt5;
- p1 = yyt2 - 1;
- c1 = yyt3 - 1;
- b1 = yyt4 - 1;
- r1 = yyt5 - 1;
- s1 = YYCURSOR;
- #line 54 "espurna\\ir_parse_simple.re"
- { goto update_out; }
- #line 253 "espurna\\ir_parse_simple.re.ipp"
- yy29:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy31;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy30:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- yyt6 = YYCURSOR;
- goto yy32;
- default: goto yy7;
- }
- yy31:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy35;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy32:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9': goto yy32;
- default: goto yy34;
- }
- yy34:
- p0 = yyt1;
- c0 = yyt2;
- b0 = yyt3;
- r0 = yyt4;
- s0 = yyt5;
- d0 = yyt6;
- p1 = yyt2 - 1;
- c1 = yyt3 - 1;
- b1 = yyt4 - 1;
- r1 = yyt5 - 1;
- s1 = yyt6 - 1;
- d1 = YYCURSOR;
- #line 61 "espurna\\ir_parse_simple.re"
- { goto update_out; }
- #line 301 "espurna\\ir_parse_simple.re.ipp"
- yy35:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy36;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy36:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy37;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy37:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy38;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy38:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy39;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy39:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0' ... '9':
- case 'A' ... 'F':
- case 'a' ... 'f': goto yy40;
- case ':': goto yy12;
- default: goto yy7;
- }
- yy40:
- yych = *++YYCURSOR;
- switch (yych) {
- case ':': goto yy12;
- default: goto yy7;
- }
- yy41:
- #line 64 "espurna\\ir_parse_simple.re"
- { goto return_out; }
- #line 356 "espurna\\ir_parse_simple.re.ipp"
- }
- #line 65 "espurna\\ir_parse_simple.re"
-
-
- update_out:
- {
- if (!((c1 - c0) % 2)) {
- out = prepare(
- StringView{p0, p1},
- StringView{c0, c1},
- StringView{b0, b1},
- StringView{r0, r1},
- StringView{s0, s1},
- StringView{d0, d1});
- }
- }
-
- return_out:
- return out;
- }
|