OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * Copyright 2016 Google Inc. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license that can be | |
5 * found in the LICENSE file. | |
6 */ | |
7 | |
8 #ifndef SKSL_ASTBINARYEXPRESSION | |
9 #define SKSL_ASTBINARYEXPRESSION | |
10 | |
11 #include "SkSLASTExpression.h" | |
12 #include "../SkSLToken.h" | |
13 #include <sstream> | |
14 | |
15 namespace SkSL { | |
dogben
2016/06/20 16:23:17
nit: maybe "namespace AST" instead of prefixing al
ethannicholas
2016/06/20 17:45:49
Normally I would, but in this case there are so ma
| |
16 | |
17 /** | |
18 * Represents a binary operation, with the operator represented by the token's t ype. | |
19 */ | |
20 struct ASTBinaryExpression : public ASTExpression { | |
21 ASTBinaryExpression(std::unique_ptr<ASTExpression> left, Token op, | |
22 std::unique_ptr<ASTExpression> right) | |
23 : INHERITED(op.fPosition, kBinary_Kind) | |
24 , fLeft(std::move(left)) | |
25 , fOperator(op.fKind) | |
26 , fRight(std::move(right)) {} | |
27 | |
28 std::string description() const override { | |
29 return "(" + fLeft->description() + " " + Token::OperatorName(fOperator) + " " + | |
30 fRight->description() + ")"; | |
31 } | |
32 | |
33 const std::unique_ptr<ASTExpression> fLeft; | |
34 const Token::Kind fOperator; | |
35 const std::unique_ptr<ASTExpression> fRight; | |
36 | |
37 typedef ASTExpression INHERITED; | |
38 }; | |
39 | |
40 } // namespace | |
41 | |
42 #endif | |
OLD | NEW |