Lines Matching defs:par

197 CondParser_SkipWhitespace(CondParser *par)
199 cpp_skip_whitespace(&par->p);
253 ParseFuncArg(CondParser *par, const char **pp, bool doEval, const char *func)
270 par->printedError = true;
391 CondParser_StringExpr(CondParser *par, const char *start,
403 p = par->p;
412 par->p = p;
414 if (atStart && is_separator(par->p[0]))
431 CondParser_Leaf(CondParser *par, bool doEval, bool unquotedOK,
441 *out_quoted = quoted = par->p[0] == '"';
442 start = par->p;
444 par->p++;
446 while (par->p[0] != '\0' && str.str == NULL) {
447 switch (par->p[0]) {
449 par->p++;
450 if (par->p[0] != '\0') {
451 Buf_AddByte(&buf, par->p[0]);
452 par->p++;
456 par->p++;
470 Buf_AddByte(&buf, par->p[0]);
471 par->p++;
474 if (!CondParser_StringExpr(par,
484 Buf_AddByte(&buf, par->p[0]);
485 par->p++;
502 EvalTruthy(CondParser *par, const char *value, bool quoted)
510 if (par->plain)
512 return par->evalBare(value) != par->negateEvalBare;
538 EvalCompareStr(CondParser *par, const char *lhs,
546 par->printedError = true;
556 EvalCompare(CondParser *par, const char *lhs, bool lhsQuoted,
565 return EvalCompareStr(par, lhs, op, rhs);
569 CondParser_ComparisonOp(CondParser *par, ComparisonOp *out_op)
571 const char *p = par->p;
574 return par->p += 2, *out_op = LE, true;
576 return par->p += 1, *out_op = LT, true;
578 return par->p += 2, *out_op = GE, true;
580 return par->p += 1, *out_op = GT, true;
582 return par->p += 2, *out_op = EQ, true;
584 return par->p += 2, *out_op = NE, true;
597 CondParser_Comparison(CondParser *par, bool doEval)
604 lhs = CondParser_Leaf(par, doEval, par->leftUnquotedOK, &lhsQuoted);
608 CondParser_SkipWhitespace(par);
610 if (!CondParser_ComparisonOp(par, &op)) {
611 t = ToToken(doEval && EvalTruthy(par, lhs.str, lhsQuoted));
615 CondParser_SkipWhitespace(par);
617 if (par->p[0] == '\0') {
620 par->printedError = true;
624 rhs = CondParser_Leaf(par, doEval, true, &rhsQuoted);
627 : EvalCompare(par, lhs.str, lhsQuoted, op, rhs.str, rhsQuoted);
640 CondParser_FuncCallEmpty(CondParser *par, bool doEval, Token *out_token)
642 const char *p = par->p;
666 par->p = p;
672 CondParser_FuncCall(CondParser *par, bool doEval, Token *out_token)
675 const char *p = par->p;
696 arg = ParseFuncArg(par, &p, doEval, fn_name);
701 par->p = p;
713 CondParser_ComparisonOrLeaf(CondParser *par, bool doEval)
719 p = par->p;
721 return CondParser_Comparison(par, doEval);
740 return CondParser_Comparison(par, doEval);
742 par->p = p;
750 t = ToToken(doEval && par->evalBare(arg) != par->negateEvalBare);
757 CondParser_Token(CondParser *par, bool doEval)
761 t = par->curr;
763 par->curr = TOK_NONE;
767 cpp_skip_hspace(&par->p);
769 switch (par->p[0]) {
772 par->p++;
776 par->p++;
780 par->p++;
781 if (par->p[0] == '|')
782 par->p++;
785 par->printedError = true;
791 par->p++;
792 if (par->p[0] == '&')
793 par->p++;
796 par->printedError = true;
802 par->p++;
813 return CondParser_Comparison(par, doEval);
816 if (CondParser_FuncCallEmpty(par, doEval, &t))
818 if (CondParser_FuncCall(par, doEval, &t))
820 return CondParser_ComparisonOrLeaf(par, doEval);
826 CondParser_Skip(CondParser *par, Token t)
830 actual = CondParser_Token(par, false);
834 assert(par->curr == TOK_NONE);
836 par->curr = actual;
847 CondParser_Term(CondParser *par, bool doEval)
853 while ((t = CondParser_Token(par, doEval)) == TOK_NOT)
860 res = CondParser_Or(par, doEval);
863 if (CondParser_Token(par, doEval) != TOK_RPAREN)
875 CondParser_And(CondParser *par, bool doEval)
881 if ((rhs = CondParser_Term(par, doEval)) == CR_ERROR)
887 } while (CondParser_Skip(par, TOK_AND));
896 CondParser_Or(CondParser *par, bool doEval)
902 if ((rhs = CondParser_And(par, doEval)) == CR_ERROR)
908 } while (CondParser_Skip(par, TOK_OR));
923 CondParser par;
928 par.plain = plain;
929 par.evalBare = evalBare;
930 par.negateEvalBare = negate;
931 par.leftUnquotedOK = leftUnquotedOK;
932 par.p = cond;
933 par.curr = TOK_NONE;
934 par.printedError = false;
936 DEBUG1(COND, "CondParser_Eval: %s\n", par.p);
937 rval = CondParser_Or(&par, true);
938 if (par.curr != TOK_EOF)
941 if (rval == CR_ERROR && eprint && !par.printedError)