9#ifndef LLDB_VALUEOBJECT_DILAST_H
10#define LLDB_VALUEOBJECT_DILAST_H
13#include "llvm/Support/Error.h"
58 virtual llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const = 0;
73 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
85 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
104 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
126 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
146 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
168 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
194 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
218 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
235 llvm::Expected<lldb::ValueObjectSP>
Accept(
Visitor *v)
const override;
254 virtual llvm::Expected<lldb::ValueObjectSP>
256 virtual llvm::Expected<lldb::ValueObjectSP>
258 virtual llvm::Expected<lldb::ValueObjectSP>
260 virtual llvm::Expected<lldb::ValueObjectSP>
262 virtual llvm::Expected<lldb::ValueObjectSP>
264 virtual llvm::Expected<lldb::ValueObjectSP>
266 virtual llvm::Expected<lldb::ValueObjectSP>
268 virtual llvm::Expected<lldb::ValueObjectSP>
uint32_t GetLocation() const
ASTNode(uint32_t location, NodeKind kind)
virtual ~ASTNode()=default
virtual llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const =0
ArraySubscriptNode(uint32_t location, ASTNodeUP base, int64_t index)
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
ASTNode * GetBase() const
static bool classof(const ASTNode *node)
static bool classof(const ASTNode *node)
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
BooleanLiteralNode(uint32_t location, bool value)
static bool classof(const ASTNode *node)
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
const llvm::APFloat & GetValue() const
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
FloatLiteralNode(uint32_t location, llvm::APFloat value)
static bool classof(const ASTNode *node)
static bool classof(const ASTNode *node)
IdentifierNode(uint32_t location, std::string name)
std::string GetName() const
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
IntegerLiteralNode(uint32_t location, llvm::APInt value, uint32_t radix, bool is_unsigned, IntegerTypeSuffix type)
uint32_t GetRadix() const
static bool classof(const ASTNode *node)
IntegerTypeSuffix GetTypeSuffix() const
const llvm::APInt & GetValue() const
MemberOfNode(uint32_t location, ASTNodeUP base, bool is_arrow, std::string name)
static bool classof(const ASTNode *node)
llvm::StringRef GetFieldName() const
ASTNode * GetBase() const
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
ASTNode * GetOperand() const
static bool classof(const ASTNode *node)
UnaryOpNode(uint32_t location, UnaryOpKind kind, ASTNodeUP operand)
llvm::Expected< lldb::ValueObjectSP > Accept(Visitor *v) const override
UnaryOpKind GetKind() const
This class contains one Visit method for each specialized type of DIL AST node.
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const IntegerLiteralNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const UnaryOpNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const FloatLiteralNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const BooleanLiteralNode *node)=0
virtual ~Visitor()=default
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const IdentifierNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const ArraySubscriptNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const MemberOfNode *node)=0
virtual llvm::Expected< lldb::ValueObjectSP > Visit(const BitFieldExtractionNode *node)=0
UnaryOpKind
The Unary operators recognized by DIL.
std::unique_ptr< ASTNode > ASTNodeUP
NodeKind
The various types DIL AST nodes (used by the DIL parser).