Lines Matching defs:par
190 CondParser_SkipWhitespace(CondParser *par)
192 cpp_skip_whitespace(&par->p);
379 CondParser_StringExpr(CondParser *par, const char *start,
391 p = par->p;
399 par->p = p;
401 if (outsideQuotes && is_separator(par->p[0]))
418 CondParser_Leaf(CondParser *par, bool doEval, bool unquotedOK,
428 *out_quoted = quoted = par->p[0] == '"';
429 start = par->p;
431 par->p++;
433 while (par->p[0] != '\0' && str.str == NULL) {
434 switch (par->p[0]) {
436 par->p++;
437 if (par->p[0] != '\0') {
438 Buf_AddByte(&buf, par->p[0]);
439 par->p++;
445 par->p++;
459 Buf_AddByte(&buf, par->p[0]);
460 par->p++;
463 if (!CondParser_StringExpr(par,
473 Buf_AddByte(&buf, par->p[0]);
474 par->p++;
494 EvalTruthy(CondParser *par, const char *value, bool quoted)
502 if (par->plain)
504 return par->evalBare(value) != par->negateEvalBare;
559 CondParser_ComparisonOp(CondParser *par, ComparisonOp *out_op)
561 const char *p = par->p;
564 return par->p += 2, *out_op = LE, true;
566 return par->p += 1, *out_op = LT, true;
568 return par->p += 2, *out_op = GE, true;
570 return par->p += 1, *out_op = GT, true;
572 return par->p += 2, *out_op = EQ, true;
574 return par->p += 2, *out_op = NE, true;
587 CondParser_Comparison(CondParser *par, bool doEval)
594 lhs = CondParser_Leaf(par, doEval, par->leftUnquotedOK, &lhsQuoted);
598 CondParser_SkipWhitespace(par);
600 if (!CondParser_ComparisonOp(par, &op)) {
601 t = ToToken(doEval && EvalTruthy(par, lhs.str, lhsQuoted));
605 CondParser_SkipWhitespace(par);
607 if (par->p[0] == '\0') {
613 rhs = CondParser_Leaf(par, doEval, true, &rhsQuoted);
629 CondParser_FuncCallEmpty(CondParser *par, bool doEval, Token *out_token)
631 const char *p = par->p;
655 par->p = p;
661 CondParser_FuncCall(CondParser *par, bool doEval, Token *out_token)
664 const char *p = par->p;
690 par->p = p;
702 CondParser_ComparisonOrLeaf(CondParser *par, bool doEval)
708 p = par->p;
710 return CondParser_Comparison(par, doEval);
730 return CondParser_Comparison(par, doEval);
732 par->p = p;
740 t = ToToken(doEval && par->evalBare(arg) != par->negateEvalBare);
747 CondParser_Token(CondParser *par, bool doEval)
751 t = par->curr;
753 par->curr = TOK_NONE;
757 cpp_skip_hspace(&par->p);
759 switch (par->p[0]) {
762 par->p++;
766 par->p++;
770 par->p++;
771 if (par->p[0] == '|')
772 par->p++;
780 par->p++;
781 if (par->p[0] == '&')
782 par->p++;
790 par->p++;
801 return CondParser_Comparison(par, doEval);
804 if (CondParser_FuncCallEmpty(par, doEval, &t))
806 if (CondParser_FuncCall(par, doEval, &t))
808 return CondParser_ComparisonOrLeaf(par, doEval);
814 CondParser_Skip(CondParser *par, Token t)
818 actual = CondParser_Token(par, false);
822 assert(par->curr == TOK_NONE);
824 par->curr = actual;
835 CondParser_Term(CondParser *par, bool doEval)
841 while ((t = CondParser_Token(par, doEval)) == TOK_NOT)
848 res = CondParser_Or(par, doEval);
851 if (CondParser_Token(par, doEval) != TOK_RPAREN)
863 CondParser_And(CondParser *par, bool doEval)
869 if ((rhs = CondParser_Term(par, doEval)) == CR_ERROR)
875 } while (CondParser_Skip(par, TOK_AND));
884 CondParser_Or(CondParser *par, bool doEval)
890 if ((rhs = CondParser_And(par, doEval)) == CR_ERROR)
896 } while (CondParser_Skip(par, TOK_OR));
911 CondParser par;
917 par.plain = plain;
918 par.evalBare = evalBare;
919 par.negateEvalBare = negate;
920 par.leftUnquotedOK = leftUnquotedOK;
921 par.p = cond;
922 par.curr = TOK_NONE;
924 DEBUG1(COND, "CondParser_Eval: %s\n", par.p);
925 rval = CondParser_Or(&par, true);
926 if (par.curr != TOK_EOF)