[ABNF] defines the inexpr as:
inExpr = RWS "in" RWS ( listExpr / commonExpr )
where listExpr is defined as:
listExpr = OPEN BWS primitiveLiteral BWS *( COMMA BWS primitiveLiteral BWS ) CLOSE
meaning, the list must have at least one primitive literal.
Client code generating the expression may well write the open paren, loop through the elements of the array writing each into the expression, then write a close paren. If the array is empty, this will result in an empty listExpr.
Any reason not to allow an empty listExpr and force the client code above to handle this as a special case?