1d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch// found in the LICENSE file.
4d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
5d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch#ifndef TOOLS_GN_OPERATORS_H_
6d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch#define TOOLS_GN_OPERATORS_H_
7d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
8d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass BinaryOpNode;
9d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass Err;
10d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass ParseNode;
11d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass Scope;
12d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass Token;
13d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass UnaryOpNode;
14d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochclass Value;
15d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
16d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsUnaryOperator(const Token& token);
17d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsBinaryOperator(const Token& token);
18d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
19d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsFunctionCallArgBeginScoper(const Token& token);  // "("
20d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsFunctionCallArgEndScoper(const Token& token);  // ")"
21d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
22d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsScopeBeginScoper(const Token& token);  // "{"
23d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbool IsScopeEndScoper(const Token& token);  // "}"
24d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
25d3868032626d59662ff73b372b5d584c1d144c53Ben MurdochValue ExecuteUnaryOperator(Scope* scope,
26d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                           const UnaryOpNode* op_node,
27d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                           const Value& value,
28d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                           Err* err);
29d3868032626d59662ff73b372b5d584c1d144c53Ben MurdochValue ExecuteBinaryOperator(Scope* scope,
30d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                            const BinaryOpNode* op_node,
31d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                            const ParseNode* left,
32d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                            const ParseNode* right,
33d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                            Err* err);
34d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
35d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch#endif  // TOOLS_GN_OPERATORS_H_
36