Lines Matching defs:par

197 CondParser_SkipWhitespace(CondParser *par)
199 cpp_skip_whitespace(&par->p);
246 ParseFuncArg(CondParser *par, const char **pp, bool doEval, const char *func)
266 par->printedError = true;
387 CondParser_StringExpr(CondParser *par, const char *start,
399 p = par->p;
408 par->p = p;
410 if (atStart && is_separator(par->p[0]))
427 CondParser_Leaf(CondParser *par, bool doEval, bool unquotedOK,
437 *out_quoted = quoted = par->p[0] == '"';
438 start = par->p;
440 par->p++;
442 while (par->p[0] != '\0' && str.str == NULL) {
443 switch (par->p[0]) {
445 par->p++;
446 if (par->p[0] != '\0') {
447 Buf_AddByte(&buf, par->p[0]);
448 par->p++;
452 par->p++;
466 Buf_AddByte(&buf, par->p[0]);
467 par->p++;
470 if (!CondParser_StringExpr(par,
480 Buf_AddByte(&buf, par->p[0]);
481 par->p++;
498 EvalTruthy(CondParser *par, const char *value, bool quoted)
506 if (par->plain)
508 return par->evalBare(value) != par->negateEvalBare;
534 EvalCompareStr(CondParser *par, const char *lhs,
542 par->printedError = true;
552 EvalCompare(CondParser *par, const char *lhs, bool lhsQuoted,
561 return EvalCompareStr(par, lhs, op, rhs);
565 CondParser_ComparisonOp(CondParser *par, ComparisonOp *out_op)
567 const char *p = par->p;
570 return par->p += 2, *out_op = LE, true;
572 return par->p += 1, *out_op = LT, true;
574 return par->p += 2, *out_op = GE, true;
576 return par->p += 1, *out_op = GT, true;
578 return par->p += 2, *out_op = EQ, true;
580 return par->p += 2, *out_op = NE, true;
593 CondParser_Comparison(CondParser *par, bool doEval)
600 lhs = CondParser_Leaf(par, doEval, par->leftUnquotedOK, &lhsQuoted);
604 CondParser_SkipWhitespace(par);
606 if (!CondParser_ComparisonOp(par, &op)) {
607 t = ToToken(doEval && EvalTruthy(par, lhs.str, lhsQuoted));
611 CondParser_SkipWhitespace(par);
613 if (par->p[0] == '\0') {
616 par->printedError = true;
620 rhs = CondParser_Leaf(par, doEval, true, &rhsQuoted);
623 : EvalCompare(par, lhs.str, lhsQuoted, op, rhs.str, rhsQuoted);
636 CondParser_FuncCallEmpty(CondParser *par, bool doEval, Token *out_token)
638 const char *p = par->p;
662 par->p = p;
668 CondParser_FuncCall(CondParser *par, bool doEval, Token *out_token)
671 const char *p = par->p;
692 arg = ParseFuncArg(par, &p, doEval, fn_name);
697 par->p = p;
709 CondParser_ComparisonOrLeaf(CondParser *par, bool doEval)
715 p = par->p;
717 return CondParser_Comparison(par, doEval);
737 return CondParser_Comparison(par, doEval);
739 par->p = p;
747 t = ToToken(doEval && par->evalBare(arg) != par->negateEvalBare);
754 CondParser_Token(CondParser *par, bool doEval)
758 t = par->curr;
760 par->curr = TOK_NONE;
764 cpp_skip_hspace(&par->p);
766 switch (par->p[0]) {
769 par->p++;
773 par->p++;
777 par->p++;
778 if (par->p[0] == '|')
779 par->p++;
782 par->printedError = true;
788 par->p++;
789 if (par->p[0] == '&')
790 par->p++;
793 par->printedError = true;
799 par->p++;
810 return CondParser_Comparison(par, doEval);
813 if (CondParser_FuncCallEmpty(par, doEval, &t))
815 if (CondParser_FuncCall(par, doEval, &t))
817 return CondParser_ComparisonOrLeaf(par, doEval);
823 CondParser_Skip(CondParser *par, Token t)
827 actual = CondParser_Token(par, false);
831 assert(par->curr == TOK_NONE);
833 par->curr = actual;
844 CondParser_Term(CondParser *par, bool doEval)
850 while ((t = CondParser_Token(par, doEval)) == TOK_NOT)
857 res = CondParser_Or(par, doEval);
860 if (CondParser_Token(par, doEval) != TOK_RPAREN)
872 CondParser_And(CondParser *par, bool doEval)
878 if ((rhs = CondParser_Term(par, doEval)) == CR_ERROR)
884 } while (CondParser_Skip(par, TOK_AND));
893 CondParser_Or(CondParser *par, bool doEval)
899 if ((rhs = CondParser_And(par, doEval)) == CR_ERROR)
905 } while (CondParser_Skip(par, TOK_OR));
920 CondParser par;
926 par.plain = plain;
927 par.evalBare = evalBare;
928 par.negateEvalBare = negate;
929 par.leftUnquotedOK = leftUnquotedOK;
930 par.p = cond;
931 par.curr = TOK_NONE;
932 par.printedError = false;
934 DEBUG1(COND, "CondParser_Eval: %s\n", par.p);
935 rval = CondParser_Or(&par, true);
936 if (par.curr != TOK_EOF)
939 if (rval == CR_ERROR && eprint && !par.printedError