Note for ref on the original point: ANSI Smalltalk allow for space between - and the number token. Squeak is then non A
For the new point: ANSI Smalltalk does not allow for space between # and the selector, or between # and the quoted string. Should be an easy fix. Marcus, how do we should validate RBParser changes? Reparse all the code in the image and compares ASTs? Thierry 2015-09-25 8:52 GMT+02:00 Nicolai Hess <[email protected]>: > > > 2015-09-24 22:39 GMT+02:00 Thierry Goubier <[email protected]>: > >> Le 24/09/2015 09:11, Nicolai Hess a écrit : >> >>> >>> >>> 2015-09-24 8:19 GMT+02:00 Peter Uhnák <[email protected] >>> <mailto:[email protected]>>: >>> >>> > - 250 * 1.5 returns -2.25 >>> >>> why is this valid syntax? >>> >>> >>> >>> I don't know if this is valid syntax (I always wondered that there is >>> one place in PointTest, that is not compilable with old compiler but >>> compiles >>> fine with opal). >>> But the error happens in >>> RBParser>>#parseNegatedNumber. >>> If a #- is recognized, it tests if a literalnumber follows (but from the >>> token stream, that is, the spaces are ignored). >>> Now the real bug is, that we do two "steps" and concstruct a new >>> literalvaluenode from the now following tokens. >>> RBParser parseExpression:'- 2' -> throws an error, because no following >>> tokens >>> RBParser parseExpression:'- 2 * 3' -> works but actually duplicates the >>> two last tokens "*3 *3. >>> and some funny other things '- 2@1' -> '-1@1' >>> >> >> Another one I found in the tests: would you expect >> >> RBParser parseExpression: '# >> >> 1 = 1' >> >> To be the same thing as '#1 = 1' ? >> > > I tested this in squeak and it seems that > #1 isn't allowed as symbol, the only way to use a digit as symbol is > #'1' (is this defined in smalltalks syntax defintion?) > > -> Parsing '#' has to be fixed too. > > > > >> >> Thierry >> > >
