OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "tools/gn/operators.h" | 5 #include "tools/gn/operators.h" |
6 | 6 |
7 #include "base/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
8 #include "tools/gn/err.h" | 8 #include "tools/gn/err.h" |
9 #include "tools/gn/parse_tree.h" | 9 #include "tools/gn/parse_tree.h" |
10 #include "tools/gn/scope.h" | 10 #include "tools/gn/scope.h" |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 "\" instead."); | 484 "\" instead."); |
485 return Value(); | 485 return Value(); |
486 } | 486 } |
487 return Value(op_node, left.boolean_value() && right.boolean_value()); | 487 return Value(op_node, left.boolean_value() && right.boolean_value()); |
488 } | 488 } |
489 | 489 |
490 } // namespace | 490 } // namespace |
491 | 491 |
492 // ---------------------------------------------------------------------------- | 492 // ---------------------------------------------------------------------------- |
493 | 493 |
494 bool IsUnaryOperator(const Token& token) { | |
495 return token.type() == Token::BANG; | |
496 } | |
497 | |
498 bool IsBinaryOperator(const Token& token) { | |
499 return token.type() == Token::EQUAL || | |
500 token.type() == Token::PLUS || | |
501 token.type() == Token::MINUS || | |
502 token.type() == Token::PLUS_EQUALS || | |
503 token.type() == Token::MINUS_EQUALS || | |
504 token.type() == Token::EQUAL_EQUAL || | |
505 token.type() == Token::NOT_EQUAL || | |
506 token.type() == Token::LESS_EQUAL || | |
507 token.type() == Token::GREATER_EQUAL || | |
508 token.type() == Token::LESS_THAN || | |
509 token.type() == Token::GREATER_THAN || | |
510 token.type() == Token::BOOLEAN_AND || | |
511 token.type() == Token::BOOLEAN_OR; | |
512 } | |
513 | |
514 bool IsFunctionCallArgBeginScoper(const Token& token) { | |
515 return token.type() == Token::LEFT_PAREN; | |
516 } | |
517 | |
518 bool IsFunctionCallArgEndScoper(const Token& token) { | |
519 return token.type() == Token::RIGHT_PAREN; | |
520 } | |
521 | |
522 bool IsScopeBeginScoper(const Token& token) { | |
523 return token.type() == Token::LEFT_BRACE; | |
524 } | |
525 | |
526 bool IsScopeEndScoper(const Token& token) { | |
527 return token.type() == Token::RIGHT_BRACE; | |
528 } | |
529 | |
530 Value ExecuteUnaryOperator(Scope* scope, | 494 Value ExecuteUnaryOperator(Scope* scope, |
531 const UnaryOpNode* op_node, | 495 const UnaryOpNode* op_node, |
532 const Value& expr, | 496 const Value& expr, |
533 Err* err) { | 497 Err* err) { |
534 DCHECK(op_node->op().type() == Token::BANG); | 498 DCHECK(op_node->op().type() == Token::BANG); |
535 | 499 |
536 if (expr.type() != Value::BOOLEAN) { | 500 if (expr.type() != Value::BOOLEAN) { |
537 *err = Err(op_node, "Operand of ! operator is not a boolean.", | 501 *err = Err(op_node, "Operand of ! operator is not a boolean.", |
538 "Type is \"" + std::string(Value::DescribeType(expr.type())) + | 502 "Type is \"" + std::string(Value::DescribeType(expr.type())) + |
539 "\" instead."); | 503 "\" instead."); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 return ExecuteGreaterEquals(scope, op_node, left_value, right_value, err); | 576 return ExecuteGreaterEquals(scope, op_node, left_value, right_value, err); |
613 if (op.type() == Token::LESS_EQUAL) | 577 if (op.type() == Token::LESS_EQUAL) |
614 return ExecuteLessEquals(scope, op_node, left_value, right_value, err); | 578 return ExecuteLessEquals(scope, op_node, left_value, right_value, err); |
615 if (op.type() == Token::GREATER_THAN) | 579 if (op.type() == Token::GREATER_THAN) |
616 return ExecuteGreater(scope, op_node, left_value, right_value, err); | 580 return ExecuteGreater(scope, op_node, left_value, right_value, err); |
617 if (op.type() == Token::LESS_THAN) | 581 if (op.type() == Token::LESS_THAN) |
618 return ExecuteLess(scope, op_node, left_value, right_value, err); | 582 return ExecuteLess(scope, op_node, left_value, right_value, err); |
619 | 583 |
620 return Value(); | 584 return Value(); |
621 } | 585 } |
OLD | NEW |