(value)
return comment, value[1:]
comment = "(" *([FWS] ccontent) [FWS] ")"
       ccontent = ctext / quoted-pair / comment

    We handle nested comments here, and quoted-pair in our qp-ctext routine.
comment = "(" *([FWS] ccontent) [FWS] ")"
       ccontent = ctext / quoted-pair / comment
comment = ( * ( [ FWS ] ccontent ) [ FWS ] ) ccontent = ctext / quoted - pair / comment
def get_comment(value):
    """comment = "(" *([FWS] ccontent) [FWS] ")"
       ccontent = ctext / quoted-pair / comment

    We handle nested comments here, and quoted-pair in our qp-ctext routine.
    """
    if value and value[0] != '(':
        raise errors.HeaderParseError(
            "expected '(' but found '{}'".format(value))
    comment = Comment()
    value = value[1:]
    while value and value[0] != ")":
        if value[0] in WSP:
            token, value = get_fws(value)
        elif value[0] == '(':
            token, value = get_comment(value)
        else:
            token, value = get_qp_ctext(value)
        comment.append(token)
    if not value:
        comment.defects.append(errors.InvalidHeaderDefect(
            "end of header inside comment"))
        return comment, value
    return comment, value[1:]
def get_comment ( value ) : if value and value [ 0 ] != '(' : raise errors . HeaderParseError ( "expected '(' but found '{}'" . format ( value ) ) comment = Comment ( ) value = value [ 1 : ] while value and value [ 0 ] != ")" : if value [ 0 ] in WSP : token , value = get_fws ( value ) elif value [ 0 ] == '(' : token , value = get_comment ( value ) else : token , value = get_qp_ctext ( value ) comment . append ( token ) if not value : comment . defects . append ( errors . InvalidHeaderDefect ( "end of header inside comment" ) ) return comment , value return comment , value [ 1 : ]