Home | History | Annotate | Download | only in src

Lines Matching defs:te

2713 	Test_env te;
2715 te.flags = 0;
2716 te.isa = ptest_isa;
2717 te.getopnd = ptest_getopnd;
2718 te.eval = test_eval;
2719 te.error = ptest_error;
2731 te.pos.wp = wp + 1;
2732 te.wp_end = wp + argc;
2746 if ((*te.isa)(&te, TM_END))
2749 opnd1 = (*te.getopnd)(&te, TO_NONOP, 1);
2750 if ((op = (*te.isa)(&te, TM_BINOP))) {
2751 opnd2 = (*te.getopnd)(&te, op, 1);
2752 res = (*te.eval)(&te, op, opnd1,
2754 if (te.flags & TEF_ERROR)
2761 te.pos.wp--;
2764 opnd1 = (*te.getopnd)(&te, TO_NONOP, 1);
2767 res = (*te.eval)(&te, TO_STNZE, opnd1,
2773 if ((*te.isa)(&te, TM_NOT)) {
2778 te.pos.wp = owp + 1;
2781 return (test_parse(&te));
2805 test_eval(Test_env *te, Test_op op, const char *opnd1, const char *opnd2,
2872 te->flags |= TEF_ERROR;
2885 if (te->flags & TEF_DBRACKET)
2889 if (te->flags & TEF_DBRACKET)
2905 te->flags |= TEF_ERROR;
2940 (*te->error)(te, 0, "internal error: unknown op");
2965 test_parse(Test_env *te)
2969 rv = test_oexpr(te, 1);
2971 if (!(te->flags & TEF_ERROR) && !(*te->isa)(te, TM_END))
2972 (*te->error)(te, 0, "unexpected operator/operand");
2974 return ((te->flags & TEF_ERROR) ? T_ERR_EXIT : !rv);
2978 test_oexpr(Test_env *te, bool do_eval)
2982 if ((rv = test_aexpr(te, do_eval)))
2984 if (!(te->flags & TEF_ERROR) && (*te->isa)(te, TM_OR))
2985 return (test_oexpr(te, do_eval) || rv);
2990 test_aexpr(Test_env *te, bool do_eval)
2994 if (!(rv = test_nexpr(te, do_eval)))
2996 if (!(te->flags & TEF_ERROR) && (*te->isa)(te, TM_AND))
2997 return (test_aexpr(te, do_eval) && rv);
3002 test_nexpr(Test_env *te, bool do_eval)
3004 if (!(te->flags & TEF_ERROR) && (*te->isa)(te, TM_NOT))
3005 return (!test_nexpr(te, do_eval));
3006 return (test_primary(te, do_eval));
3010 test_primary(Test_env *te, bool do_eval)
3016 if (te->flags & TEF_ERROR)
3018 if ((*te->isa)(te, TM_OPAREN)) {
3019 rv = test_oexpr(te, do_eval);
3020 if (te->flags & TEF_ERROR)
3022 if (!(*te->isa)(te, TM_CPAREN)) {
3023 (*te->error)(te, 0, "missing closing paren");
3032 if ((te->flags & TEF_DBRACKET) || (&te->pos.wp[1] < te->wp_end &&
3033 !test_isop(TM_BINOP, te->pos.wp[1]))) {
3034 if ((op = (*te->isa)(te, TM_UNOP))) {
3036 opnd1 = (*te->getopnd)(te, op, do_eval);
3038 (*te->error)(te, -1, "missing argument");
3042 return ((*te->eval)(te, op, opnd1, NULL, do_eval));
3045 opnd1 = (*te->getopnd)(te, TO_NONOP, do_eval);
3047 (*te->error)(te, 0, "expression expected");
3050 if ((op = (*te->isa)(te, TM_BINOP))) {
3052 opnd2 = (*te->getopnd)(te, op, do_eval);
3054 (*te->error)(te, -1, "missing second argument");
3058 return ((*te->eval)(te, op, opnd1, opnd2, do_eval));
3060 return ((*te->eval)(te, TO_STNZE, opnd1, NULL, do_eval));
3073 ptest_isa(Test_env *te, Test_meta meta)
3081 if (te->pos.wp >= te->wp_end)
3085 rv = test_isop(meta, *te->pos.wp);
3089 rv = !strcmp(*te->pos.wp, tokens[(int)meta]) ?
3094 te->pos.wp++;
3100 ptest_getopnd(Test_env *te, Test_op op, bool do_eval MKSH_A_UNUSED)
3102 if (te->pos.wp >= te->wp_end)
3104 return (*te->pos.wp++);
3108 ptest_error(Test_env *te, int ofs, const char *msg)
3112 te->flags |= TEF_ERROR;
3113 if ((op = te->pos.wp + ofs >= te->wp_end ? NULL : te->pos.wp[ofs]))