LLDB mainline
lldb_private::dil::DILParser Class Reference

Pure recursive descent parser for C++ like expressions. More...

#include <DILParser.h>

Public Member Functions

 ~DILParser ()=default

Static Public Member Functions

static llvm::Expected< ASTNodeUPParse (llvm::StringRef dil_input_expr, DILLexer lexer, StackFrame &stack_frame, lldb::DynamicValueType use_dynamic, lldb::DILMode mode)

Private Member Functions

 DILParser (llvm::StringRef dil_input_expr, DILLexer lexer, StackFrame &stack_frame, lldb::DynamicValueType use_dynamic, llvm::Error &error, lldb::DILMode mode)
ASTNodeUP Run ()
ASTNodeUP ParseExpression ()
ASTNodeUP ParseAssignmentExpression ()
ASTNodeUP ParseInclusiveOrExpression ()
ASTNodeUP ParseExclusiveOrExpression ()
ASTNodeUP ParseAndExpression ()
ASTNodeUP ParseShiftExpression ()
ASTNodeUP ParseAdditiveExpression ()
ASTNodeUP ParseMultiplicativeExpression ()
ASTNodeUP ParseUnaryExpression ()
ASTNodeUP ParsePostfixExpression ()
ASTNodeUP ParsePrimaryExpression ()
std::string ParseNestedNameSpecifier ()
std::string ParseIdExpression ()
std::string ParseUnqualifiedId ()
ASTNodeUP ParseNumericLiteral ()
ASTNodeUP ParseIntegerLiteral ()
ASTNodeUP ParseFloatingPointLiteral ()
ASTNodeUP ParseBooleanLiteral ()
ASTNodeUP ParseCastExpression ()
std::optional< CompilerTypeParseBuiltinType ()
std::optional< CompilerTypeParseTypeId ()
void ParseTypeSpecifierSeq (std::string &type_name)
std::optional< std::string > ParseTypeSpecifier ()
std::optional< std::string > ParseTypeName ()
CompilerType ResolveTypeDeclarators (CompilerType type, const std::vector< Token > &ptr_operators)
void BailOut (const std::string &error, uint32_t loc, uint16_t err_len)
void Expect (Token::Kind kind)
void ExpectOneOf (std::vector< Token::Kind > kinds_vec)
void TentativeParsingRollback (uint32_t saved_idx)
Token CurToken ()

Private Attributes

StackFramem_stack_frame
llvm::StringRef m_input_expr
DILLexer m_dil_lexer
llvm::Error & m_error
lldb::DynamicValueType m_use_dynamic
lldb::DILMode m_mode

Detailed Description

Pure recursive descent parser for C++ like expressions.

EBNF grammar for the parser is described in lldb/docs/dil-expr-lang.ebnf

Definition at line 68 of file DILParser.h.

Constructor & Destructor Documentation

◆ ~DILParser()

lldb_private::dil::DILParser::~DILParser ( )
default

References error().

◆ DILParser()

lldb_private::dil::DILParser::DILParser ( llvm::StringRef dil_input_expr,
DILLexer lexer,
StackFrame & stack_frame,
lldb::DynamicValueType use_dynamic,
llvm::Error & error,
lldb::DILMode mode )
explicitprivate

Definition at line 111 of file DILParser.cpp.

References error(), m_dil_lexer, m_error, m_input_expr, m_mode, m_stack_frame, and m_use_dynamic.

Referenced by Parse().

Member Function Documentation

◆ BailOut()

void lldb_private::dil::DILParser::BailOut ( const std::string & error,
uint32_t loc,
uint16_t err_len )
private

◆ CurToken()

◆ Expect()

void lldb_private::dil::DILParser::Expect ( Token::Kind kind)
private

◆ ExpectOneOf()

void lldb_private::dil::DILParser::ExpectOneOf ( std::vector< Token::Kind > kinds_vec)
private

Definition at line 929 of file DILParser.cpp.

References BailOut(), and CurToken().

Referenced by ParseBooleanLiteral().

◆ Parse()

llvm::Expected< ASTNodeUP > lldb_private::dil::DILParser::Parse ( llvm::StringRef dil_input_expr,
DILLexer lexer,
StackFrame & stack_frame,
lldb::DynamicValueType use_dynamic,
lldb::DILMode mode )
static

Definition at line 93 of file DILParser.cpp.

References DILParser(), error(), and Run().

Referenced by lldb_private::StackFrame::DILGetValueForVariableExpressionPath().

◆ ParseAdditiveExpression()

◆ ParseAndExpression()

◆ ParseAssignmentExpression()

◆ ParseBooleanLiteral()

◆ ParseBuiltinType()

std::optional< CompilerType > lldb_private::dil::DILParser::ParseBuiltinType ( )
private

◆ ParseCastExpression()

◆ ParseExclusiveOrExpression()

◆ ParseExpression()

ASTNodeUP lldb_private::dil::DILParser::ParseExpression ( )
private

Definition at line 132 of file DILParser.cpp.

References ParseAssignmentExpression().

Referenced by ParsePostfixExpression(), ParsePrimaryExpression(), and Run().

◆ ParseFloatingPointLiteral()

ASTNodeUP lldb_private::dil::DILParser::ParseFloatingPointLiteral ( )
private

◆ ParseIdExpression()

◆ ParseInclusiveOrExpression()

◆ ParseIntegerLiteral()

◆ ParseMultiplicativeExpression()

◆ ParseNestedNameSpecifier()

◆ ParseNumericLiteral()

ASTNodeUP lldb_private::dil::DILParser::ParseNumericLiteral ( )
private

◆ ParsePostfixExpression()

◆ ParsePrimaryExpression()

◆ ParseShiftExpression()

◆ ParseTypeId()

◆ ParseTypeName()

std::optional< std::string > lldb_private::dil::DILParser::ParseTypeName ( )
private

◆ ParseTypeSpecifier()

std::optional< std::string > lldb_private::dil::DILParser::ParseTypeSpecifier ( )
private

◆ ParseTypeSpecifierSeq()

void lldb_private::dil::DILParser::ParseTypeSpecifierSeq ( std::string & type_name)
private

Definition at line 656 of file DILParser.cpp.

References ParseTypeSpecifier().

Referenced by ParseTypeId().

◆ ParseUnaryExpression()

◆ ParseUnqualifiedId()

std::string lldb_private::dil::DILParser::ParseUnqualifiedId ( )
private

◆ ResolveTypeDeclarators()

◆ Run()

ASTNodeUP lldb_private::dil::DILParser::Run ( )
private

Definition at line 119 of file DILParser.cpp.

References lldb_private::dil::Token::eof, Expect(), and ParseExpression().

Referenced by Parse().

◆ TentativeParsingRollback()

void lldb_private::dil::DILParser::TentativeParsingRollback ( uint32_t saved_idx)
inlineprivate

Definition at line 121 of file DILParser.h.

References m_dil_lexer, and m_error.

Referenced by ParseBuiltinType(), and ParseCastExpression().

Member Data Documentation

◆ m_dil_lexer

◆ m_error

llvm::Error& lldb_private::dil::DILParser::m_error
private

Definition at line 139 of file DILParser.h.

Referenced by BailOut(), DILParser(), and TentativeParsingRollback().

◆ m_input_expr

llvm::StringRef lldb_private::dil::DILParser::m_input_expr
private

Definition at line 134 of file DILParser.h.

Referenced by BailOut(), and DILParser().

◆ m_mode

lldb::DILMode lldb_private::dil::DILParser::m_mode
private

Definition at line 144 of file DILParser.h.

Referenced by DILParser(), ParseAndExpression(), and ParseMultiplicativeExpression().

◆ m_stack_frame

StackFrame& lldb_private::dil::DILParser::m_stack_frame
private

Definition at line 132 of file DILParser.h.

Referenced by DILParser(), ParseBuiltinType(), and ParseTypeId().

◆ m_use_dynamic

lldb::DynamicValueType lldb_private::dil::DILParser::m_use_dynamic
private

Definition at line 141 of file DILParser.h.

Referenced by DILParser(), and ParseTypeId().


The documentation for this class was generated from the following files: