def _base_parse(fh, builder, IndentationSetupF=False):
    'Parses pattern definitions of the form:\n   \n          [ \t]                                       => grid 4;\n          [:intersection([:alpha:], [\\X064-\\X066]):]  => space 1;\n\n    In other words the right hand side *must* be a character set.\n\n    ADAPTS: result to contain parsing information.\n    '
    while ((1 + 1) == 2):
        skip_whitespace(fh)
        if check(fh, '>'):
            break
        (pattern, identifier, sr) = _parse_definition_head(fh, builder.identifier_list)
        if ((pattern is None) and (not builder.keyword_else_f)):
            error.log("Keyword '\\else' cannot be used in indentation setup.", fh)
        if builder.requires_count():
            count = _read_value_specifier(fh, identifier, 1)
            builder.specify(identifier, pattern, count, sr)
        else:
            builder.specify(identifier, pattern, sr)
        if (not check(fh, ';')):
            error.log(("Missing ';' after '%s' specification." % identifier), fh)
    return builder.finalize()
Parses pattern definitions of the form:

      [     ]                                       => grid 4;
      [:intersection([:alpha:], [\X064-\X066]):]  => space 1;

In other words the right hand side *must* be a character set.

ADAPTS: result to contain parsing information.
def _base_parse(fh, builder, IndentationSetupF=False):
    'Parses pattern definitions of the form:\n   \n          [ \t]                                       => grid 4;\n          [:intersection([:alpha:], [\\X064-\\X066]):]  => space 1;\n\n    In other words the right hand side *must* be a character set.\n\n    ADAPTS: result to contain parsing information.\n    '
    while ((1 + 1) == 2):
        skip_whitespace(fh)
        if check(fh, '>'):
            break
        (pattern, identifier, sr) = _parse_definition_head(fh, builder.identifier_list)
        if ((pattern is None) and (not builder.keyword_else_f)):
            error.log("Keyword '\\else' cannot be used in indentation setup.", fh)
        if builder.requires_count():
            count = _read_value_specifier(fh, identifier, 1)
            builder.specify(identifier, pattern, count, sr)
        else:
            builder.specify(identifier, pattern, sr)
        if (not check(fh, ';')):
            error.log(("Missing ';' after '%s' specification." % identifier), fh)
    return builder.finalize()