| Index: tools/gn/token.h
|
| diff --git a/tools/gn/token.h b/tools/gn/token.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..64b06ea13e0f19b9b57cb0600076d1442c2a7c8d
|
| --- /dev/null
|
| +++ b/tools/gn/token.h
|
| @@ -0,0 +1,52 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef TOOLS_GN_TOKEN_H_
|
| +#define TOOLS_GN_TOKEN_H_
|
| +
|
| +#include "base/strings/string_piece.h"
|
| +#include "tools/gn/location.h"
|
| +
|
| +class Token {
|
| + public:
|
| + enum Type {
|
| + INVALID,
|
| + INTEGER, // 123
|
| + STRING, // "blah"
|
| + OPERATOR, // =, +=, -=, +, -, ==, !=, <=, >=, <, >
|
| + IDENTIFIER, // foo
|
| + SCOPER, // (, ), [, ], {, }
|
| + SEPARATOR, // ,
|
| + COMMENT // #...\n
|
| + };
|
| +
|
| + Token();
|
| + Token(const Location& location, Type t, const base::StringPiece& v);
|
| +
|
| + Type type() const { return type_; }
|
| + const base::StringPiece& value() const { return value_; }
|
| + const Location& location() const { return location_; }
|
| + LocationRange range() const {
|
| + return LocationRange(location_,
|
| + Location(location_.file(), location_.line_number(),
|
| + location_.char_offset() + value_.size()));
|
| + }
|
| +
|
| + // Helper functions for comparing this token to something.
|
| + bool IsIdentifierEqualTo(const char* v) const;
|
| + bool IsOperatorEqualTo(const char* v) const;
|
| + bool IsScoperEqualTo(const char* v) const;
|
| + bool IsStringEqualTo(const char* v) const;
|
| +
|
| + // For STRING tokens, returns the string value (no quotes at end, does
|
| + // unescaping).
|
| + std::string StringValue() const;
|
| +
|
| + private:
|
| + Type type_;
|
| + base::StringPiece value_;
|
| + Location location_;
|
| +};
|
| +
|
| +#endif // TOOLS_GN_TOKEN_H_
|
|
|