| Index: runtime/vm/scanner.cc
|
| diff --git a/runtime/vm/scanner.cc b/runtime/vm/scanner.cc
|
| index a34439b6ab3ad33e65ab9c9932c227147dc92b80..1b146cb5e648f44e82e9ce352629a82934d69c97 100644
|
| --- a/runtime/vm/scanner.cc
|
| +++ b/runtime/vm/scanner.cc
|
| @@ -19,7 +19,6 @@ namespace dart {
|
| #define Z (zone())
|
| #define T (thread())
|
|
|
| -
|
| class ScanContext : public ZoneAllocated {
|
| public:
|
| explicit ScanContext(Scanner* scanner)
|
| @@ -43,11 +42,9 @@ class ScanContext : public ZoneAllocated {
|
| const int brace_level_;
|
| };
|
|
|
| -
|
| Scanner::KeywordTable Scanner::keywords_[Token::kNumKeywords];
|
| int Scanner::keywords_char_offset_[Scanner::kNumLowercaseChars];
|
|
|
| -
|
| void Scanner::Reset() {
|
| // Non-changing newline properties.
|
| newline_token_.kind = Token::kNEWLINE;
|
| @@ -74,7 +71,6 @@ void Scanner::Reset() {
|
| ReadChar();
|
| }
|
|
|
| -
|
| Scanner::Scanner(const String& src, const String& private_key)
|
| : source_(src),
|
| source_length_(src.Length()),
|
| @@ -86,10 +82,8 @@ Scanner::Scanner(const String& src, const String& private_key)
|
| Reset();
|
| }
|
|
|
| -
|
| Scanner::~Scanner() {}
|
|
|
| -
|
| void Scanner::ErrorMsg(const char* msg) {
|
| current_token_.kind = Token::kERROR;
|
| current_token_.literal = &String::ZoneHandle(Z, Symbols::New(T, msg));
|
| @@ -98,7 +92,6 @@ void Scanner::ErrorMsg(const char* msg) {
|
| current_token_.offset = lookahead_pos_;
|
| }
|
|
|
| -
|
| void Scanner::PushContext() {
|
| ScanContext* ctx = new (Z) ScanContext(this);
|
| saved_context_ = ctx;
|
| @@ -107,7 +100,6 @@ void Scanner::PushContext() {
|
| brace_level_ = 1; // Account for the opening ${ token.
|
| }
|
|
|
| -
|
| void Scanner::PopContext() {
|
| ASSERT(saved_context_ != NULL);
|
| ASSERT(brace_level_ == 0);
|
| @@ -118,49 +110,40 @@ void Scanner::PopContext() {
|
| ASSERT(string_delimiter_ != '\0');
|
| }
|
|
|
| -
|
| void Scanner::BeginStringLiteral(const char delimiter) {
|
| string_delimiter_ = delimiter;
|
| }
|
|
|
| -
|
| void Scanner::EndStringLiteral() {
|
| string_delimiter_ = '\0';
|
| string_is_multiline_ = false;
|
| }
|
|
|
| -
|
| bool Scanner::IsLetter(int32_t c) {
|
| return (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z'));
|
| }
|
|
|
| -
|
| bool Scanner::IsDecimalDigit(int32_t c) {
|
| return '0' <= c && c <= '9';
|
| }
|
|
|
| -
|
| bool Scanner::IsNumberStart(int32_t ch) {
|
| return IsDecimalDigit(ch) || ch == '.';
|
| }
|
|
|
| -
|
| bool Scanner::IsHexDigit(int32_t c) {
|
| return IsDecimalDigit(c) || (('A' <= c) && (c <= 'F')) ||
|
| (('a' <= c) && (c <= 'f'));
|
| }
|
|
|
| -
|
| bool Scanner::IsIdentStartChar(int32_t c) {
|
| return IsLetter(c) || (c == '_') || (c == '$');
|
| }
|
|
|
| -
|
| bool Scanner::IsIdentChar(int32_t c) {
|
| return IsLetter(c) || IsDecimalDigit(c) || (c == '_') || (c == '$');
|
| }
|
|
|
| -
|
| bool Scanner::IsIdent(const String& str) {
|
| if (!str.IsOneByteString()) {
|
| return false;
|
| @@ -176,7 +159,6 @@ bool Scanner::IsIdent(const String& str) {
|
| return true;
|
| }
|
|
|
| -
|
| // This method is used when parsing integers in Dart code. We
|
| // are reusing the Scanner's handling of number literals in that situation.
|
| bool Scanner::IsValidInteger(const String& str,
|
| @@ -209,7 +191,6 @@ bool Scanner::IsValidInteger(const String& str,
|
| return false;
|
| }
|
|
|
| -
|
| void Scanner::ReadChar() {
|
| if (lookahead_pos_ < source_length_) {
|
| if (c0_ == '\n') {
|
| @@ -233,7 +214,6 @@ void Scanner::ReadChar() {
|
| }
|
| }
|
|
|
| -
|
| // Look ahead 'how_many' characters. Returns the character, or '\0' if
|
| // the lookahead position is beyond the end of the string. Does not
|
| // normalize line end characters into '\n'.
|
| @@ -246,14 +226,12 @@ int32_t Scanner::LookaheadChar(int how_many) {
|
| return lookahead_char;
|
| }
|
|
|
| -
|
| void Scanner::ConsumeWhiteSpace() {
|
| while (c0_ == ' ' || c0_ == '\t' || c0_ == '\n') {
|
| ReadChar();
|
| }
|
| }
|
|
|
| -
|
| void Scanner::ConsumeLineComment() {
|
| ASSERT(c0_ == '/');
|
| while (c0_ != '\n' && c0_ != '\0') {
|
| @@ -263,7 +241,6 @@ void Scanner::ConsumeLineComment() {
|
| current_token_.kind = Token::kWHITESP;
|
| }
|
|
|
| -
|
| void Scanner::ConsumeBlockComment() {
|
| ASSERT(c0_ == '*');
|
| ReadChar();
|
| @@ -290,7 +267,6 @@ void Scanner::ConsumeBlockComment() {
|
| (nesting_level == 0) ? Token::kWHITESP : Token::kILLEGAL;
|
| }
|
|
|
| -
|
| void Scanner::ScanIdentChars(bool allow_dollar) {
|
| ASSERT(IsIdentStartChar(c0_));
|
| ASSERT(allow_dollar || (c0_ != '$'));
|
| @@ -339,7 +315,6 @@ void Scanner::ScanIdentChars(bool allow_dollar) {
|
| current_token_.literal = &literal;
|
| }
|
|
|
| -
|
| // Parse integer or double number literal of format:
|
| // NUMBER = INTEGER | DOUBLE
|
| // INTEGER = D+ | (("0x" | "0X") H+)
|
| @@ -393,14 +368,12 @@ void Scanner::ScanNumber(bool dec_point_seen) {
|
| }
|
| }
|
|
|
| -
|
| void Scanner::SkipLine() {
|
| while (c0_ != '\n' && c0_ != '\0') {
|
| ReadChar();
|
| }
|
| }
|
|
|
| -
|
| void Scanner::ScanScriptTag() {
|
| ReadChar();
|
| ASSERT(c0_ == '!');
|
| @@ -410,7 +383,6 @@ void Scanner::ScanScriptTag() {
|
| SkipLine();
|
| }
|
|
|
| -
|
| void Scanner::ScanLiteralString(bool is_raw) {
|
| ASSERT(!IsScanningString());
|
| ASSERT(c0_ == '"' || c0_ == '\'');
|
| @@ -427,7 +399,6 @@ void Scanner::ScanLiteralString(bool is_raw) {
|
| ScanLiteralStringChars(is_raw, string_is_multiline_);
|
| }
|
|
|
| -
|
| bool Scanner::ScanHexDigits(int digits, int32_t* value) {
|
| *value = 0;
|
| for (int i = 0; i < digits; ++i) {
|
| @@ -442,7 +413,6 @@ bool Scanner::ScanHexDigits(int digits, int32_t* value) {
|
| return true;
|
| }
|
|
|
| -
|
| bool Scanner::ScanHexDigits(int min_digits, int max_digits, int32_t* value) {
|
| *value = 0;
|
| ReadChar();
|
| @@ -461,7 +431,6 @@ bool Scanner::ScanHexDigits(int min_digits, int max_digits, int32_t* value) {
|
| return true;
|
| }
|
|
|
| -
|
| void Scanner::ScanEscapedCodePoint(int32_t* code_point) {
|
| ASSERT(c0_ == 'u' || c0_ == 'x');
|
| bool is_valid;
|
| @@ -484,7 +453,6 @@ void Scanner::ScanEscapedCodePoint(int32_t* code_point) {
|
| }
|
| }
|
|
|
| -
|
| void Scanner::ScanLiteralStringChars(bool is_raw, bool remove_whitespace) {
|
| GrowableArray<int32_t> string_chars(64);
|
|
|
| @@ -606,7 +574,6 @@ void Scanner::ScanLiteralStringChars(bool is_raw, bool remove_whitespace) {
|
| }
|
| }
|
|
|
| -
|
| void Scanner::Scan() {
|
| newline_seen_ = false;
|
|
|
| @@ -880,7 +847,6 @@ void Scanner::Scan() {
|
| } while (current_token_.kind == Token::kWHITESP);
|
| }
|
|
|
| -
|
| void Scanner::ScanAll(TokenCollector* collector) {
|
| Reset();
|
| do {
|
| @@ -905,7 +871,6 @@ void Scanner::ScanAll(TokenCollector* collector) {
|
| } while (current_token_.kind != Token::kEOS);
|
| }
|
|
|
| -
|
| void Scanner::ScanTo(intptr_t token_index) {
|
| ASSERT(token_index >= 0);
|
| intptr_t index = 0;
|
| @@ -930,7 +895,6 @@ void Scanner::ScanTo(intptr_t token_index) {
|
| } while ((token_index >= index) && (current_token_.kind != Token::kEOS));
|
| }
|
|
|
| -
|
| void Scanner::InitOnce() {
|
| ASSERT(Isolate::Current() == Dart::vm_isolate());
|
| for (int i = 0; i < kNumLowercaseChars; i++) {
|
|
|