summaryrefslogtreecommitdiffstats
path: root/tools/gn/operators.h
blob: 3401c225ba0f7d073bf0e3b11255e76ab1d11385 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 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_OPERATORS_H_
#define TOOLS_GN_OPERATORS_H_

class BinaryOpNode;
class Err;
class ParseNode;
class Scope;
class Token;
class UnaryOpNode;
class Value;

bool IsUnaryOperator(const Token& token);
bool IsBinaryOperator(const Token& token);

bool IsFunctionCallArgBeginScoper(const Token& token);  // "("
bool IsFunctionCallArgEndScoper(const Token& token);  // ")"

bool IsScopeBeginScoper(const Token& token);  // "{"
bool IsScopeEndScoper(const Token& token);  // "}"

Value ExecuteUnaryOperator(Scope* scope,
                           const UnaryOpNode* op_node,
                           const Value& value,
                           Err* err);
Value ExecuteBinaryOperator(Scope* scope,
                            const BinaryOpNode* op_node,
                            const ParseNode* left,
                            const ParseNode* right,
                            Err* err);

#endif  // TOOLS_GN_OPERATORS_H_