def delimit_words(string: str) -> Generator[str, None, None]:
<EOL>wordlike_characters = ("<STR_LIT:<>", "<STR_LIT:>>", "<STR_LIT:!>")<EOL>current_word = "<STR_LIT>"<EOL>for i, character in enumerate(string):<EOL><INDENT>if (<EOL>not character.isalpha()<EOL>and not character.isdigit()<EOL>and character not in wordlike_characters<EOL>):<EOL><INDENT>if current_word:<EOL><INDENT>yield current_word<EOL>current_word = "<STR_LIT>"<EOL><DEDENT><DEDENT>elif not current_word:<EOL><INDENT>current_word += character<EOL><DEDENT>elif character.isupper():<EOL><INDENT>if current_word[-<NUM_LIT:1>].isupper():<EOL><INDENT>current_word += character<EOL><DEDENT>else:<EOL><INDENT>yield current_word<EOL>current_word = character<EOL><DEDENT><DEDENT>elif character.islower():<EOL><INDENT>if current_word[-<NUM_LIT:1>].isalpha():<EOL><INDENT>current_word += character<EOL><DEDENT>else:<EOL><INDENT>yield current_word<EOL>current_word = character<EOL><DEDENT><DEDENT>elif character.isdigit():<EOL><INDENT>if current_word[-<NUM_LIT:1>].isdigit() or current_word[-<NUM_LIT:1>].isupper():<EOL><INDENT>current_word += character<EOL><DEDENT>else:<EOL><INDENT>yield current_word<EOL>current_word = character<EOL><DEDENT><DEDENT>elif character in wordlike_characters:<EOL><INDENT>if current_word[-<NUM_LIT:1>] in wordlike_characters:<EOL><INDENT>current_word += character<EOL><DEDENT>else:<EOL><INDENT>yield current_word<EOL>current_word = character<EOL><DEDENT><DEDENT><DEDENT>if current_word:<EOL><INDENT>yield current_word<EOL><DEDENT>
Delimit a string at word boundaries.

::

    >>> import uqbar.strings
    >>> list(uqbar.strings.delimit_words("i want to believe"))
    ['i', 'want', 'to', 'believe']

::

    >>> list(uqbar.strings.delimit_words("S3Bucket"))
    ['S3', 'Bucket']

::

    >>> list(uqbar.strings.delimit_words("Route53"))
    ['Route', '53']