| 688 | } |
| 689 | |
| 690 | Condition condition(TokenStream &in, bool &valid) |
| 691 | { |
| 692 | LOG_TOKEN_POS(in, pos); |
| 693 | // NOTE: Only simplified Conditions are accepted, which means the lhs comparator type is fixed to Var and that of |
| 694 | // the rhs is fixed to Num (float) |
| 695 | const auto invalid_val = Condition{}; |
| 696 | const auto l_t = CHECK_DEFAULT(comparator_type(in, valid), valid, invalid_val); |
| 697 | const auto l_v = CHECK_DEFAULT(text_val(in, valid), valid, invalid_val); |
| 698 | const auto c_o = CHECK_DEFAULT(conditional_op(in, valid), valid, invalid_val); |
| 699 | const auto r_t = CHECK_DEFAULT(comparator_type(in, valid), valid, invalid_val); |
| 700 | const auto r_v = CHECK_DEFAULT(float_val(in, valid), valid, invalid_val); |
| 701 | if (l_t != ComparatorType::Var || r_t != ComparatorType::Num) |
| 702 | { |
| 703 | FAIL_WITH_MSG_DEFAULT(valid, invalid_val, pos, |
| 704 | "Only accept LHS type to be Var (string) and RHS type to be Num (float)"); |
| 705 | } |
| 706 | return Condition{l_v, c_o, r_v}; |
| 707 | } |
| 708 | |
| 709 | void heuristic_tree(TokenStream &in, MLGOHeuristics &h, bool &valid) |
| 710 | { |
no test coverage detected