| Index: runtime/vm/scanner.cc
|
| diff --git a/runtime/vm/scanner.cc b/runtime/vm/scanner.cc
|
| index f7ae4ac59525fca9ca450cce9d6fa356af548dbb..b88770842084d71c2a3f0d0a33784e4f55a66e45 100644
|
| --- a/runtime/vm/scanner.cc
|
| +++ b/runtime/vm/scanner.cc
|
| @@ -344,9 +344,10 @@ void Scanner::ScanIdentChars(bool allow_dollar) {
|
| }
|
|
|
|
|
| -// Parse integer or double number literal of format:
|
| -// NUMBER = INTEGER | DOUBLE
|
| +// Parse integer, rational, or double number literal of format:
|
| +// NUMBER = INTEGER | RATIONAL | DOUBLE
|
| // INTEGER = D+ | (("0x" | "0X") H+)
|
| +// RATIONAL = ((D+ ["." D*]) | ("." D+)) ("r" | "R")
|
| // DOUBLE = ((D+ ["." D*]) | ("." D+)) [ EXPONENT ]
|
| // EXPONENT = ("e" | "E") ["+" | "-"] D+
|
| void Scanner::ScanNumber(bool dec_point_seen) {
|
| @@ -388,6 +389,8 @@ void Scanner::ScanNumber(bool dec_point_seen) {
|
| while (IsDecimalDigit(c0_)) {
|
| ReadChar();
|
| }
|
| + } else if ((c0_ == 'r') || (c0_ == 'R')) {
|
| + Recognize(Token::kRATIONAL);
|
| }
|
| }
|
| if (current_token_.kind != Token::kILLEGAL) {
|
|
|