| //===-- DILAST.cpp --------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "lldb/ValueObject/DILAST.h" | |
| #include "llvm/Support/ErrorHandling.h" | |
| namespace lldb_private::dil { | |
| BinaryOpKind GetBinaryOpKindFromToken(Token::Kind token_kind) { | |
| switch (token_kind) { | |
| case Token::equal: | |
| return BinaryOpKind::Assign; | |
| case Token::minus: | |
| return BinaryOpKind::Sub; | |
| case Token::plus: | |
| return BinaryOpKind::Add; | |
| case Token::star: | |
| return BinaryOpKind::Mul; | |
| case Token::slash: | |
| return BinaryOpKind::Div; | |
| case Token::percent: | |
| return BinaryOpKind::Rem; | |
| case Token::amp: | |
| return BinaryOpKind::And; | |
| case Token::caret: | |
| return BinaryOpKind::Xor; | |
| case Token::pipe: | |
| return BinaryOpKind::Or; | |
| case Token::lessless: | |
| return BinaryOpKind::Shl; | |
| case Token::greatergreater: | |
| return BinaryOpKind::Shr; | |
| case Token::minusequal: | |
| return BinaryOpKind::SubAssign; | |
| case Token::plusequal: | |
| return BinaryOpKind::AddAssign; | |
| case Token::starequal: | |
| return BinaryOpKind::MulAssign; | |
| case Token::slashequal: | |
| return BinaryOpKind::DivAssign; | |
| case Token::percentequal: | |
| return BinaryOpKind::RemAssign; | |
| case Token::ampequal: | |
| return BinaryOpKind::AndAssign; | |
| case Token::caretequal: | |
| return BinaryOpKind::XorAssign; | |
| case Token::pipeequal: | |
| return BinaryOpKind::OrAssign; | |
| case Token::lesslessequal: | |
| return BinaryOpKind::ShlAssign; | |
| case Token::greatergreaterequal: | |
| return BinaryOpKind::ShrAssign; | |
| case Token::ampamp: | |
| return BinaryOpKind::LAnd; | |
| case Token::pipepipe: | |
| return BinaryOpKind::LOr; | |
| case Token::less: | |
| return BinaryOpKind::LT; | |
| case Token::greater: | |
| return BinaryOpKind::GT; | |
| case Token::lessequal: | |
| return BinaryOpKind::LE; | |
| case Token::greaterequal: | |
| return BinaryOpKind::GE; | |
| case Token::equalequal: | |
| return BinaryOpKind::EQ; | |
| case Token::exclaimequal: | |
| return BinaryOpKind::NE; | |
| default: | |
| break; | |
| } | |
| llvm_unreachable("Unknown binary operator kind."); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> ErrorNode::Accept(Visitor *v) const { | |
| llvm_unreachable("Attempting to Visit a DIL ErrorNode."); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> IdentifierNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> MemberOfNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> UnaryOpNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> BinaryOpNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> | |
| ArraySubscriptNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> | |
| BitFieldExtractionNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> | |
| IntegerLiteralNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> FloatLiteralNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> | |
| BooleanLiteralNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> CastNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> ConditionalNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| llvm::Expected<lldb::ValueObjectSP> SizeOfNode::Accept(Visitor *v) const { | |
| return v->Visit(*this); | |
| } | |
| } // namespace lldb_private::dil |