@@ -3327,6 +3327,24 @@ primary : literal
33273327 node *in_clause = new_in(p, $5, NULL, $7, FALSE);
33283328$$ = new_case_match(p, $2, cons(in_clause, $8));
33293329 }
3330+| keyword_case expr_value opt_terms
3331+keyword_in p_expr modifier_if expr_value then
3332+compstmt
3333+in_clauses
3334+keyword_end
3335+ {
3336+ node *in_clause = new_in(p, $5, $7, $9, FALSE);
3337+$$ = new_case_match(p, $2, cons(in_clause, $10));
3338+ }
3339+| keyword_case expr_value opt_terms
3340+keyword_in p_expr modifier_unless expr_value then
3341+compstmt
3342+in_clauses
3343+keyword_end
3344+ {
3345+ node *in_clause = new_in(p, $5, $7, $9, TRUE);
3346+$$ = new_case_match(p, $2, cons(in_clause, $10));
3347+ }
33303348| keyword_for for_var keyword_in
33313349 {COND_PUSH(1);}
33323350expr_value do
@@ -3808,6 +3826,16 @@ in_clauses : opt_else
38083826 node *in_clause = new_in(p, $2, NULL, $4, FALSE);
38093827$$ = cons(in_clause, $5);
38103828 }
3829+| keyword_in p_expr modifier_if expr_value then compstmt in_clauses
3830+ {
3831+ node *in_clause = new_in(p, $2, $4, $6, FALSE);
3832+$$ = cons(in_clause, $7);
3833+ }
3834+| keyword_in p_expr modifier_unless expr_value then compstmt in_clauses
3835+ {
3836+ node *in_clause = new_in(p, $2, $4, $6, TRUE);
3837+$$ = cons(in_clause, $7);
3838+ }
38113839 ;
3812384038133841/* Pattern expressions for case/in */