Hi Frank, > I asked Lukas and he said that since others would be interested, I > should repost the question here. So:
Thanks! > Gnu Smalltalk's class variable declarations take the form of > [<identifier> := <expression>.]* at the end of an object definition. > To that end I wrote a #classVars production like so: > > classVars > ^ (assignment , expression , $. asParser) star > "Possibly I need to support the lack of a dot on the last > expression. Not relevant at the moment" This seems to be indeed the same problem as the simpler case below ... > This didn't work as expected. Looking further, I found this oddity: > > p := PPSmalltalkParser new. > p number end parse: '1.' "=> #(#(nil #($1) nil) 1.0)" > > I would expect this to fail, because "1." isn't a number (but see below). This fails in Pharo 1.3. In fact, in Pharo the following statements return 'false': | s | s := '1.' readStream. Number readFrom: s. s atEnd That is, #readFrom: really only consumes what it can. I don't know what Smalltalk you use, but I guess your image consumes the $. and returns 'true'. Not sure if this can be called a bug, but it is definitely a bit strange. The definition of a valid number literal is quite different among different Smalltalk dialects, thus I decided to rely on the built-in implementation of Number class>>#readFrom:. Lukas -- Lukas Renggli www.lukas-renggli.ch
