Litteral arrays parsing
Wolfgang Helbig
helbig at Lehre.BA-Stuttgart.DE
Tue May 23 23:16:38 UTC 2006
Nicolas,
you asked:
>Le Mardi 23 Mai 2006 16:42, Noury Bouraqadi a écrit :
>> Hi,
>>
>> A stupid question, why evaluating
>> #("comment") leads to an empty array instead of an array with a single
>> element #'"comment"'?
>>
>
>This one is a bad behaviour indeed, a side effect of Scanner/Parser internal
>implementation... (Ascii 30 being used with meaning "end of input").
As long as it is "internal", I can't see anything wrong with it.
>
>Behind #, i would expect a letter [a-z][A-Z], a string quote ', or an opening
>parenthesis (. Maybe a second # in Dolphin Smalltalk extension...
>
>What else does make sense according to Smalltalk formal definition?
According to the syntax diagrams in the Book (choose the book's color from
blue, yellow or purple), the sharp character may occur as the first character of
an array constant or a symbol constant. In these positions it is followed by a
left parenthesis, if it marks an array constant, otherwise it marks a symbol
constant and is followed by a letter, a special character or a minus character.
Remember, special characters are the ones that make a binary selector.
Inside a string or a comment, the sharp character may be followed by any of the
95 graphic characters.
And finally, inside a character constant, the sharp character may be followed by
any character.
This holds for the language as defined formally by the syntax diagrams, but not
for the Smalltalk programming language as described informally by the Blue Book,
where "any character" may occur inside comments, strings and character
constants, that is not only the graphic characters but ASCII control characters
as well, like carriage return, horizontal tabulator or record separator which is
ASCII 30.
And this again differs from the language as accepted by the compiler in the V2
image of Smalltalk-80. For example, the ASCII 0 character inside a character
constant gets you an index error. But this is another thread :-)
Greetings,
Wolfgang
--
Weniger, aber besser.
More information about the Squeak-dev
mailing list
|