Lines Matching refs:line
44 typedef void (Parser::*DirectiveHandler)(StringPiece line,
78 StringPiece line(buf_.data() + l_, e - l_); in Parse() local
79 if (line.get(line.size() - 1) == '\r') in Parse()
80 line.remove_suffix(1); in Parse()
81 orig_line_with_directives_ = line; in Parse()
82 ParseLine(line); in Parse()
157 void ParseLine(StringPiece line) { in ParseLine() argument
159 ParseInsideDefine(line); in ParseLine()
163 if (line.empty() || (line.size() == 1 && line[0] == '\r')) in ParseLine()
168 if (line[0] == '\t' && state_ != ParserState::NOT_AFTER_RULE) { in ParseLine()
171 stmt->expr = ParseExpr(line.substr(1), ParseExprOpt::COMMAND); in ParseLine()
172 stmt->orig = line; in ParseLine()
177 line = TrimLeftSpace(line); in ParseLine()
179 if (line[0] == '#') in ParseLine()
182 if (HandleDirective(line, make_directives_)) { in ParseLine()
186 ParseRuleOrAssign(line); in ParseLine()
189 void ParseRuleOrAssign(StringPiece line) { in ParseRuleOrAssign() argument
190 size_t sep = FindThreeOutsideParen(line, ':', '=', ';'); in ParseRuleOrAssign()
191 if (sep == string::npos || line[sep] == ';') { in ParseRuleOrAssign()
192 ParseRule(line, string::npos); in ParseRuleOrAssign()
193 } else if (line[sep] == '=') { in ParseRuleOrAssign()
194 ParseAssign(line, sep); in ParseRuleOrAssign()
195 } else if (line.get(sep + 1) == '=') { in ParseRuleOrAssign()
196 ParseAssign(line, sep + 1); in ParseRuleOrAssign()
197 } else if (line[sep] == ':') { in ParseRuleOrAssign()
198 ParseRule(line, sep); in ParseRuleOrAssign()
204 void ParseRule(StringPiece line, size_t sep) { in ParseRule() argument
209 sep += orig_line_with_directives_.size() - line.size(); in ParseRule()
211 line = orig_line_with_directives_; in ParseRule()
214 line = TrimLeftSpace(line); in ParseRule()
215 if (line.empty()) in ParseRule()
223 const bool is_rule = sep != string::npos && line[sep] == ':'; in ParseRule()
227 size_t found = FindTwoOutsideParen(line.substr(sep + 1), '=', ';'); in ParseRule()
230 rule_stmt->lhs = ParseExpr(TrimSpace(line.substr(0, found))); in ParseRule()
231 if (line[found] == ';') { in ParseRule()
233 } else if (line[found] == '=') { in ParseRule()
234 if (line.size() > (found + 2) && line[found + 1] == '$' && in ParseRule()
235 line[found + 2] == '=') { in ParseRule()
245 rule_stmt->rhs = ParseExpr(TrimLeftSpace(line.substr(found + 1)), opt); in ParseRule()
247 rule_stmt->lhs = ParseExpr(line); in ParseRule()
255 void ParseAssign(StringPiece line, size_t separator_pos) { in ParseAssign() argument
263 ParseAssignStatement(line, separator_pos, &lhs, &rhs, &op); in ParseAssign()
287 void ParseInclude(StringPiece line, StringPiece directive) { in ParseInclude() argument
290 stmt->expr = ParseExpr(line); in ParseInclude()
296 void ParseDefine(StringPiece line, StringPiece) { in ParseDefine() argument
297 if (line.empty()) { in ParseDefine()
301 define_name_ = line; in ParseDefine()
308 void ParseInsideDefine(StringPiece line) { in ParseInsideDefine() argument
309 line = TrimLeftSpace(line); in ParseInsideDefine()
310 StringPiece directive = GetDirective(line); in ParseInsideDefine()
322 RemoveComment(TrimLeftSpace(line.substr(sizeof("endef"))))); in ParseInsideDefine()
350 void ParseIfdef(StringPiece line, StringPiece directive) { in ParseIfdef() argument
354 stmt->lhs = ParseExpr(line); in ParseIfdef()
400 void ParseIfeq(StringPiece line, StringPiece directive) { in ParseIfeq() argument
405 if (!ParseIfEqCond(line, stmt)) { in ParseIfeq()
414 void ParseElse(StringPiece line, StringPiece) { in ParseElse() argument
425 StringPiece next_if = TrimLeftSpace(line); in ParseElse()
436 void ParseEndif(StringPiece line, StringPiece) { in ParseEndif() argument
439 if (!line.empty()) { in ParseEndif()
464 void CreateExport(StringPiece line, bool is_export) { in CreateExport() argument
467 stmt->expr = ParseExpr(line); in CreateExport()
472 void ParseOverride(StringPiece line, StringPiece) { in ParseOverride() argument
476 if (HandleDirective(line, assign_directives_)) in ParseOverride()
479 CreateExport(line, true); in ParseOverride()
481 ParseRuleOrAssign(line); in ParseOverride()
484 void ParseExport(StringPiece line, StringPiece) { in ParseExport() argument
488 if (HandleDirective(line, assign_directives_)) in ParseExport()
490 CreateExport(line, true); in ParseExport()
491 ParseRuleOrAssign(line); in ParseExport()
494 void ParseUnexport(StringPiece line, StringPiece) { in ParseUnexport() argument
495 CreateExport(line, false); in ParseUnexport()
506 StringPiece RemoveComment(StringPiece line) { in RemoveComment() argument
507 size_t i = FindOutsideParen(line, '#'); in RemoveComment()
509 return line; in RemoveComment()
510 return line.substr(0, i); in RemoveComment()
513 StringPiece GetDirective(StringPiece line) { in GetDirective() argument
514 if (line.size() < shortest_directive_len_) in GetDirective()
516 StringPiece prefix = line.substr(0, longest_directive_len_ + 1); in GetDirective()
521 bool HandleDirective(StringPiece line, const DirectiveMap* directive_map) { in HandleDirective() argument
522 StringPiece directive = GetDirective(line); in HandleDirective()
528 RemoveComment(TrimLeftSpace(line.substr(directive.size())))); in HandleDirective()
597 void ParseAssignStatement(StringPiece line, in ParseAssignStatement() argument
605 switch (line[sep - 1]) { in ParseAssignStatement()
619 *lhs = TrimSpace(line.substr(0, lhs_end)); in ParseAssignStatement()
620 *rhs = TrimLeftSpace(line.substr(sep + 1)); in ParseAssignStatement()