Token _readNext()

in lib/src/scanner.dart [68:94]


  Token _readNext() {
    if (_endOfFileEmitted) throw StateError('No more tokens.');

    _consumeWhitespace();
    if (_scanner.isDone) {
      return Token(TokenType.endOfFile, _scanner.spanFrom(_scanner.state));
    }

    switch (_scanner.peekChar()) {
      case 0x28 /* ( */ :
        return _scanOperator(TokenType.leftParen);
      case 0x29 /* ) */ :
        return _scanOperator(TokenType.rightParen);
      case 0x3F /* ? */ :
        return _scanOperator(TokenType.questionMark);
      case 0x3A /* : */ :
        return _scanOperator(TokenType.colon);
      case 0x21 /* ! */ :
        return _scanOperator(TokenType.not);
      case 0x7C /* | */ :
        return _scanOr();
      case 0x26 /* & */ :
        return _scanAnd();
      default:
        return _scanIdentifier();
    }
  }