36 char* in = &(*content)[0];
37 char* end = in + content->size();
38 bool parsing_targets =
true;
47 const char* start = in;
51 static const unsigned char yybm[] = {
52 0, 0, 0, 0, 0, 0, 0, 0,
53 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0, 0, 0, 0,
55 0, 0, 0, 0, 0, 0, 0, 0,
56 0, 128, 128, 128, 128, 128, 128, 128,
57 128, 128, 128, 128, 128, 128, 128, 128,
58 128, 128, 128, 128, 128, 128, 128, 128,
59 128, 128, 128, 128, 128, 128, 0, 0,
60 128, 128, 128, 128, 128, 128, 128, 128,
61 128, 128, 128, 128, 128, 128, 128, 128,
62 128, 128, 128, 128, 128, 128, 128, 128,
63 128, 128, 128, 0, 0, 0, 0, 128,
64 0, 128, 128, 128, 128, 128, 128, 128,
65 128, 128, 128, 128, 128, 128, 128, 128,
66 128, 128, 128, 128, 128, 128, 128, 128,
67 128, 128, 128, 0, 0, 0, 128, 0,
68 0, 0, 0, 0, 0, 0, 0, 0,
69 0, 0, 0, 0, 0, 0, 0, 0,
70 0, 0, 0, 0, 0, 0, 0, 0,
71 0, 0, 0, 0, 0, 0, 0, 0,
72 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0, 0, 0, 0, 0, 0,
74 0, 0, 0, 0, 0, 0, 0, 0,
75 0, 0, 0, 0, 0, 0, 0, 0,
76 0, 0, 0, 0, 0, 0, 0, 0,
77 0, 0, 0, 0, 0, 0, 0, 0,
78 0, 0, 0, 0, 0, 0, 0, 0,
79 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0, 0, 0, 0, 0, 0,
81 0, 0, 0, 0, 0, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 0, 0, 0, 0, 0, 0,
89 if (yych <= 0x00)
goto yy7;
90 if (yych <=
' ')
goto yy9;
91 if (yych <=
'#')
goto yy6;
94 if (yych <=
'=')
goto yy6;
95 if (yych <=
'?')
goto yy9;
96 if (yych <=
'Z')
goto yy6;
101 if (yych <=
'\\')
goto yy2;
102 if (yych ==
'_')
goto yy6;
105 if (yych <=
'z')
goto yy6;
106 if (yych ==
'~')
goto yy6;
112 if ((yych = *in) <=
'#') {
114 if (yych <= 0x00)
goto yy3;
115 if (yych <=
'\t')
goto yy14;
117 if (yych ==
' ')
goto yy16;
118 if (yych <=
'"')
goto yy14;
123 if (yych ==
'*')
goto yy16;
126 if (yych <=
'\\')
goto yy16;
127 if (yych ==
'|')
goto yy16;
139 if ((yych = *in) ==
'$')
goto yy12;
144 int len = (int)(in - start);
147 memmove(out, start, len);
166 if (yybm[0+yych] & 128) {
172 if (yybm[0+(yych = *in)] & 128) {
199 int len = (int)(out - filename);
200 const bool is_target = parsing_targets;
201 if (len > 0 && filename[len - 1] ==
':') {
203 parsing_targets =
false;
214 *err =
"depfile has multiple output paths.";
StringPiece represents a slice of a string whose memory is managed externally.
bool Parse(string *content, string *err)
Parse an input file.
vector< StringPiece > ins_