CLIM mail archive


((sequence symbol) :separator #\space)

    Date: Wed, 15 Sep 1993 10:22 EDT
    From: Jeff Morrill <jmorrill@BBN.COM>


    I am using clim 2 via allegro 2.0.beta2.  I am sending this bug
    report to because I imagine all the vendors could have
    the same problem.

    There is a bug in the presentation type ((sequence symbol) :separator #\space).
    It works with one space between tokens and no trailing spaces:

    (accept-from-string '((sequence symbol) :separator #\space) "one two three")

    But if you include more than one space between tokens, or any trailing
    spaces, you get errors.  All of the following generate errors for me.

    (accept-from-string '((sequence symbol) :separator #\space) "one  two three")
    (accept-from-string '((sequence symbol) :separator #\space) "one two  three")
    (accept-from-string '((sequence symbol) :separator #\space) " one two three")
    (accept-from-string '((sequence symbol) :separator #\space) "one two three ")

    This is quite different from the default behavior of SEQUENCE (using
    commas as delimiters) which is appropriately tolerant of extra whitespace.

    I imagine what is happening is that the separator character is
    being used as an activation gesture.  This is OK as long as
    there is an extra call within the SEQUENCE parser to move past
    the whitespace.  I guess you could describe this as an unanticipated
    interaction here between the property of being a whitespace character
    and the property of being an activation gesture.

    In any case, trailing spaces should not matter.

Hmm, I dunno about this.  When you say that #\space is a separator
character, that declares that space unambiguously separates fields.
I am not sure that ignoring whitespace is appropriate when #\space is
a delimiter.  You surely wouldn't send this bug report if, instead of
#\space, the delimiter was #\, and CLIM complained when it saw extra

I might argue that, for the failing cases, the correct results are:

 ("one" "" "two" "three")
 ("one" "two" "" "three")
 ("" "one" "two" "three")
 ("one" "two" "three" "")

All that aside, it's not completely clear to me where exactly one
would put the DWIM in to ignore extra whitespace.  A few minutes of
investigation yielded some likely candidates, but I can't convince
myself that they won't introduce other problems.

I'll track this as a bug in case I can think of anything that isn't
too magic.


Main Index | Thread Index