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, 0, 0, 0, 0, 0, 0,
57 128, 128, 0, 128, 128, 128, 128, 128,
58 128, 128, 128, 128, 128, 128, 128, 128,
59 128, 128, 128, 0, 0, 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, 128, 0, 128, 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,
90 if (yych <= 0x00)
goto yy7;
93 if (yych <=
'!')
goto yy5;
94 if (yych <=
'#')
goto yy9;
99 if (yych <=
'\'')
goto yy9;
100 if (yych <=
')')
goto yy5;
103 if (yych <=
':')
goto yy5;
104 if (yych <=
'<')
goto yy9;
111 if (yych <=
'?')
goto yy9;
114 if (yych !=
'\\')
goto yy9;
118 if (yych ==
'`')
goto yy9;
121 if (yych <=
'|')
goto yy9;
122 if (yych <=
'~')
goto yy5;
128 if ((yych = *in) <=
'"') {
130 if (yych <= 0x00)
goto yy3;
131 if (yych !=
'\n')
goto yy14;
133 if (yych <=
'\r')
goto yy3;
134 if (yych ==
' ')
goto yy16;
139 if (yych <=
'#')
goto yy16;
140 if (yych ==
'*')
goto yy16;
143 if (yych <=
'\\')
goto yy16;
144 if (yych ==
'|')
goto yy16;
156 if (yych ==
'$')
goto yy12;
165 int len = (int)(in - start);
168 memmove(out, start, len);
184 if (yybm[0+yych] & 128) {
214 int len = (int)(out - filename);
215 const bool is_target = parsing_targets;
216 if (len > 0 && filename[len - 1] ==
':') {
218 parsing_targets =
false;
229 *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_