diff options
Diffstat (limited to 'src/depfile_parser.cc')
-rw-r--r-- | src/depfile_parser.cc | 130 |
1 files changed, 45 insertions, 85 deletions
diff --git a/src/depfile_parser.cc b/src/depfile_parser.cc index 7cee892..6c0379e 100644 --- a/src/depfile_parser.cc +++ b/src/depfile_parser.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.16 */ // Copyright 2011 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -82,88 +82,37 @@ bool DepfileParser::Parse(string* content, string* err) { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - yych = *in; - if (yych <= '=') { - if (yych <= '$') { - if (yych <= ' ') { - if (yych <= 0x00) goto yy7; - goto yy9; - } else { - if (yych <= '!') goto yy5; - if (yych <= '#') goto yy9; - goto yy4; - } - } else { - if (yych <= '*') { - if (yych <= '\'') goto yy9; - if (yych <= ')') goto yy5; - goto yy9; - } else { - if (yych <= ':') goto yy5; - if (yych <= '<') goto yy9; - goto yy5; - } - } + if (yybm[0+yych] & 128) { + goto yy6; + } + if (yych <= '$') { + if (yych <= 0x00) goto yy2; + if (yych <= '#') goto yy4; + goto yy9; } else { - if (yych <= '_') { - if (yych <= '[') { - if (yych <= '?') goto yy9; - if (yych <= 'Z') goto yy5; - goto yy9; - } else { - if (yych <= '\\') goto yy2; - if (yych <= '^') goto yy9; - goto yy5; - } - } else { - if (yych <= '|') { - if (yych <= '`') goto yy9; - if (yych <= '{') goto yy5; - goto yy9; - } else { - if (yych == 0x7F) goto yy9; - goto yy5; - } - } + if (yych == '\\') goto yy10; + goto yy4; } yy2: ++in; - if ((yych = *in) <= '"') { - if (yych <= '\f') { - if (yych <= 0x00) goto yy3; - if (yych != '\n') goto yy14; - } else { - if (yych <= '\r') goto yy3; - if (yych == ' ') goto yy16; - goto yy14; - } - } else { - if (yych <= 'Z') { - if (yych <= '#') goto yy16; - if (yych == '*') goto yy16; - goto yy14; - } else { - if (yych <= '\\') goto yy16; - if (yych == '|') goto yy16; - goto yy14; - } + { + break; } -yy3: +yy4: + ++in; +yy5: { // For any other character (e.g. whitespace), swallow it here, // allowing the outer logic to loop around again. break; } -yy4: - yych = *++in; - if (yych == '$') goto yy12; - goto yy3; -yy5: +yy6: ++in; yych = *in; - goto yy11; -yy6: + if (yybm[0+yych] & 128) { + goto yy6; + } { // Got a span of plain text. int len = (int)(in - start); @@ -173,30 +122,41 @@ yy6: out += len; continue; } -yy7: - ++in; - { - break; - } yy9: yych = *++in; - goto yy3; + if (yych == '$') goto yy11; + goto yy5; yy10: - ++in; - yych = *in; -yy11: - if (yybm[0+yych] & 128) { - goto yy10; + yych = *++in; + if (yych <= '"') { + if (yych <= '\f') { + if (yych <= 0x00) goto yy5; + if (yych == '\n') goto yy5; + goto yy13; + } else { + if (yych <= '\r') goto yy5; + if (yych == ' ') goto yy15; + goto yy13; + } + } else { + if (yych <= 'Z') { + if (yych <= '#') goto yy15; + if (yych == '*') goto yy15; + goto yy13; + } else { + if (yych <= '\\') goto yy15; + if (yych == '|') goto yy15; + goto yy13; + } } - goto yy6; -yy12: +yy11: ++in; { // De-escape dollar character. *out++ = '$'; continue; } -yy14: +yy13: ++in; { // Let backslash before other characters through verbatim. @@ -204,7 +164,7 @@ yy14: *out++ = yych; continue; } -yy16: +yy15: ++in; { // De-escape backslashed character. |