Make Random>>roll: work again and add support for constant operands
This version fixes three issues:
1. Random>>roll: was not working anymore. The following code only produced an error:
Random new roll: '1d20'
This happened due to an issue with Random>>diceToken: which used Number>>readFrom: to extract numbers from the string. Calling Number readFrom: '1d20' results in 100000000000000000000 instead of the expected 1, because $d is seen as an exponent letter by the ExtendedNumberParser used by Number>>readFrom: (see ExtendedNumberParser>>exponentLetters).
I therefore replaced Number>>readFrom: by Integer>>readFrom:, which doesn't use the exponent letters.
2. I also fixed a minor issue with the mini-grammar's 'dice' rule. Before this version, it read as if it only supported one or two operands, when it really supported an unlimited number of operands.
3. The mini-grammer's 'expr' rule read as if it supported constant operands (e.g., '1d20+5' or '42'), because 'expr' was allowed to be just 'num'. As far as I can gather, this has never worked (but I might be wrong). This is now also fixed by always setting res to the token read if the token is a number. If the token is neither a number nor $d, an error is now signalled.
=============== Diff against Kernel-eem.1215 ===============
Item was changed:
----- Method: Random>>diceToken: (in category 'die rolling') -----
"Private. Mini scanner, see #roll:"