binary selectors ambiguity and space
helbig at Lehre.BA-Stuttgart.DE
Sun May 14 05:58:47 UTC 2006
>One way would be to force user to introduce these separators, as proposed by
>Wolfgang, but i dislike it because user could not write anymore x-1.
This is not what I intended. The notation as proposed by me requires a separator
only when needed to resolve ambiguities. The separator separates a binary
selector from an adjacent "special_character". The separator could be a space.
But also any other character that must not occur in a binary selector. Like a
letter or a digit, or, to be more explicit, any character that is not a "special
character". Just like a nonalphanumeric character is required to seperate
adjacent identifiers. With binary selectors, a space is required only when
the binary selector consists of one character
the next character would be a "special character"
So "x+-3" would be parsed as "x" "+-" "3". And only if you want it to be
parsed as "x" "+" "-3", you need to hit the large key to write "x+ -3".
What I mean seems best expressed by the wordings from the C Reference Manual:
"In general blanks, tabs, newlines, and comments as described below are ignored
except as they serve to separate tokens. At least one of these characters is
required to separate otherwise adjacent identifiers, constants, and certain
operator-pairs" (Documents for Use with the Unix Time Sharing System, Sixth
Edition, C Reference Manual, page 1, as distributed with Unix Version 6)
You find a "separator" already in the Algol 60 report.
where it is neatly defined as a nonterminal. So, geographically, "separator"
made it from Norway, via Switzerland (Pascal, Modula, Oberon) to the US East
Cost (New Jersey), but then disappeared on its way to the US West Cost. The Blue
Book doesn't mention it, instead it seems to be used silently by Smalltalk to
separate adjacent identifiers in "message patterns". Kind of sloppy.
Weniger, aber besser.
More information about the Squeak-dev