def name(): """Parses one or more names separated by whitespace, and concatenates with a single space. >>> parse(name, 'John') 'John' >>> parse(name, 'John Smith') 'John Smith' >>> parse(name, 'John, Smith') 'John' >>> parse(name, 'John Smith ') 'John Smith' """ names = map(partial("".join), sep1( partial(many, partial(satisfies, lambda l: l and l.isalpha())), whitespace1)) name = " ".join(names).strip() if not name: fail() return name
def where_expression(): reserved('where') return sep1(let_binding, p(special, ','))
def xml_char_spec_parser(): v = sep1(partial(choice, char_spec_range, char_spec_single_char, char_spec_single_hex_char), char_spec_seperator) eof() return v
def let_expression(): reserved('let') bindings = sep1(let_binding, p(special, ',')) reserved('in') expr = expression() return ('let', bindings, expr)