Index: runtime/vm/scanner.cc |
diff --git a/runtime/vm/scanner.cc b/runtime/vm/scanner.cc |
index f7ae4ac59525fca9ca450cce9d6fa356af548dbb..7bbf8e7c3316dac24ae8b1fd4ae5693c2c29fccd 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 | PIXELS | DOUBLE |
// INTEGER = D+ | (("0x" | "0X") H+) |
+// PIXELS = ((D+ ["." D*]) | ("." D+)) ("px" | "PX") |
// DOUBLE = ((D+ ["." D*]) | ("." D+)) [ EXPONENT ] |
// EXPONENT = ("e" | "E") ["+" | "-"] D+ |
void Scanner::ScanNumber(bool dec_point_seen) { |
@@ -388,6 +389,12 @@ void Scanner::ScanNumber(bool dec_point_seen) { |
while (IsDecimalDigit(c0_)) { |
ReadChar(); |
} |
+ } else if ((c0_ == 'p') && (LookaheadChar(1) == 'x')) { |
+ ReadChar(); |
+ Recognize(Token::kPIXELS); |
+ } else if ((c0_ == 'P') && (LookaheadChar(1) == 'X')) { |
+ ReadChar(); |
+ Recognize(Token::kPIXELS); |
} |
} |
if (current_token_.kind != Token::kILLEGAL) { |