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,
89 if (yych <= 0x00)
goto yy7;
92 if (yych <=
'!')
goto yy5;
93 if (yych <=
'#')
goto yy9;
98 if (yych <=
'\'')
goto yy9;
99 if (yych <=
')')
goto yy5;
102 if (yych <=
':')
goto yy5;
103 if (yych <=
'<')
goto yy9;
110 if (yych <=
'?')
goto yy9;
113 if (yych !=
'\\')
goto yy9;
117 if (yych ==
'`')
goto yy9;
120 if (yych <=
'|')
goto yy9;
121 if (yych <=
'~')
goto yy5;
127 if ((yych = *in) <=
'"') {
129 if (yych <= 0x00)
goto yy3;
130 if (yych !=
'\n')
goto yy14;
132 if (yych <=
'\r')
goto yy3;
133 if (yych ==
' ')
goto yy16;
138 if (yych <=
'#')
goto yy16;
139 if (yych ==
'*')
goto yy16;
142 if (yych <=
'\\')
goto yy16;
143 if (yych ==
'|')
goto yy16;
155 if (yych ==
'$')
goto yy12;
164 int len = (int)(in - start);
167 memmove(out, start, len);
183 if (yybm[0+yych] & 128) {
213 int len = (int)(out - filename);
214 const bool is_target = parsing_targets;
215 if (len > 0 && filename[len - 1] ==
':') {
217 parsing_targets =
false;
228 *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_