|
LLDB mainline
|
Pure recursive descent parser for C++ like expressions. More...
#include <DILParser.h>
Public Member Functions | |
| ~DILParser ()=default | |
| bool | UseSynthetic () |
| bool | UseFragileIvar () |
| bool | CheckPtrVsMember () |
| lldb::DynamicValueType | UseDynamic () |
Static Public Member Functions | |
| static llvm::Expected< ASTNodeUP > | Parse (llvm::StringRef dil_input_expr, DILLexer lexer, std::shared_ptr< StackFrame > frame_sp, lldb::DynamicValueType use_dynamic, bool use_synthetic, bool fragile_ivar, bool check_ptr_vs_member) |
Private Attributes | |
| std::shared_ptr< StackFrame > | m_ctx_scope |
| llvm::StringRef | m_input_expr |
| DILLexer | m_dil_lexer |
| llvm::Error & | m_error |
| lldb::DynamicValueType | m_use_dynamic |
| bool | m_use_synthetic |
| bool | m_fragile_ivar |
| bool | m_check_ptr_vs_member |
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 61 of file DILParser.h.
|
default |
|
explicitprivate |
Definition at line 64 of file DILParser.cpp.
References error(), m_check_ptr_vs_member, m_ctx_scope, m_dil_lexer, m_error, m_fragile_ivar, m_input_expr, m_use_dynamic, and m_use_synthetic.
Referenced by Parse().
|
private |
Definition at line 523 of file DILParser.cpp.
References error(), m_dil_lexer, m_error, and m_input_expr.
Referenced by Expect(), ExpectOneOf(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), and ResolveTypeDeclarators().
|
inline |
Definition at line 76 of file DILParser.h.
References m_check_ptr_vs_member.
|
inlineprivate |
Definition at line 122 of file DILParser.h.
References m_dil_lexer.
Referenced by Expect(), ExpectOneOf(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseFloatingPointLiteral(), ParseIdExpression(), ParseIntegerConstant(), ParseIntegerLiteral(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseTypeId(), ParseUnaryExpression(), ParseUnqualifiedId(), and ResolveTypeDeclarators().
|
private |
Definition at line 624 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseCastExpression(), ParseIdExpression(), ParseNestedNameSpecifier(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseUnqualifiedId(), and Run().
|
private |
Definition at line 631 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseBooleanLiteral().
|
static |
Definition at line 48 of file DILParser.cpp.
References DILParser(), error(), and Run().
Referenced by lldb_private::StackFrame::DILGetValueForVariableExpressionPath().
|
private |
Definition at line 515 of file DILParser.cpp.
References CurToken(), ExpectOneOf(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::Is(), lldb_private::dil::Token::kw_false, lldb_private::dil::Token::kw_true, and m_dil_lexer.
Referenced by ParsePrimaryExpression().
|
private |
Definition at line 381 of file DILParser.cpp.
References CurToken(), GetKind(), lldb_private::dil::Token::identifier, m_ctx_scope, m_dil_lexer, and TentativeParsingRollback().
Referenced by ParseTypeId().
|
private |
Definition at line 95 of file DILParser.cpp.
References CurToken(), lldb_private::dil::eNone, Expect(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::l_paren, m_dil_lexer, ParseCastExpression(), ParseTypeId(), ParseUnaryExpression(), lldb_private::dil::Token::r_paren, and TentativeParsingRollback().
Referenced by ParseCastExpression(), ParseExpression(), and ParseUnaryExpression().
|
private |
Definition at line 87 of file DILParser.cpp.
References ParseCastExpression().
Referenced by ParsePrimaryExpression(), and Run().
|
private |
Definition at line 608 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), and lldb_private::dil::Token::GetSpelling().
Referenced by ParseNumericLiteral().
|
private |
Definition at line 423 of file DILParser.cpp.
References lldb_private::dil::Token::coloncolon, CurToken(), Expect(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::identifier, m_dil_lexer, ParseNestedNameSpecifier(), and ParseUnqualifiedId().
Referenced by ParsePostfixExpression(), and ParsePrimaryExpression().
|
private |
Definition at line 542 of file DILParser.cpp.
References CurToken(), GetKind(), m_dil_lexer, and lldb_private::dil::Token::minus.
Referenced by ParsePostfixExpression().
|
private |
Definition at line 583 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Long, lldb_private::dil::LongLong, and lldb_private::dil::None.
Referenced by ParseNumericLiteral().
|
private |
Definition at line 280 of file DILParser.cpp.
References BailOut(), lldb_private::dil::Token::coloncolon, CurToken(), Expect(), GetKind(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::identifier, lldb_private::dil::Token::l_paren, m_dil_lexer, ParseNestedNameSpecifier(), and lldb_private::dil::Token::r_paren.
Referenced by ParseIdExpression(), and ParseNestedNameSpecifier().
|
private |
Definition at line 567 of file DILParser.cpp.
References BailOut(), CurToken(), lldb_private::dil::Token::integer_constant, m_dil_lexer, ParseFloatingPointLiteral(), and ParseIntegerLiteral().
Referenced by ParsePrimaryExpression().
|
private |
Definition at line 185 of file DILParser.cpp.
References lldb_private::dil::Token::arrow, BailOut(), CurToken(), Expect(), GetKind(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::l_square, m_dil_lexer, lldb_private::dil::Token::minus, ParseIdExpression(), ParseIntegerConstant(), ParsePrimaryExpression(), lldb_private::dil::Token::period, and lldb_private::dil::Token::r_square.
Referenced by ParseUnaryExpression().
|
private |
Definition at line 245 of file DILParser.cpp.
References BailOut(), lldb_private::dil::Token::coloncolon, CurToken(), Expect(), lldb_private::dil::Token::float_constant, lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::identifier, lldb_private::dil::Token::integer_constant, lldb_private::dil::Token::kw_false, lldb_private::dil::Token::kw_true, lldb_private::dil::Token::l_paren, m_dil_lexer, ParseBooleanLiteral(), ParseExpression(), ParseIdExpression(), ParseNumericLiteral(), and lldb_private::dil::Token::r_paren.
Referenced by ParsePostfixExpression().
|
private |
Definition at line 347 of file DILParser.cpp.
References lldb_private::dil::Token::amp, CurToken(), m_dil_lexer, ParseBuiltinType(), ResolveTypeDeclarators(), and lldb_private::dil::Token::star.
Referenced by ParseCastExpression().
|
private |
Definition at line 149 of file DILParser.cpp.
References lldb_private::dil::AddrOf, lldb_private::dil::Token::amp, CurToken(), lldb_private::dil::Deref, lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, lldb_private::dil::Minus, lldb_private::dil::Token::minus, ParseCastExpression(), ParsePostfixExpression(), lldb_private::dil::Plus, lldb_private::dil::Token::plus, and lldb_private::dil::Token::star.
Referenced by ParseCastExpression().
|
private |
Definition at line 468 of file DILParser.cpp.
References CurToken(), Expect(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::identifier, and m_dil_lexer.
Referenced by ParseIdExpression().
|
private |
Definition at line 476 of file DILParser.cpp.
References lldb_private::dil::Token::amp, BailOut(), CurToken(), lldb_private::CompilerType::GetLValueReferenceType(), lldb_private::CompilerType::GetPointerType(), lldb_private::CompilerType::IsReferenceType(), lldb_private::dil::Token::star, and lldb_private::CompilerType::TypeDescription().
Referenced by ParseTypeId().
|
private |
Definition at line 74 of file DILParser.cpp.
References lldb_private::dil::Token::eof, Expect(), and ParseExpression().
Referenced by Parse().
|
inlineprivate |
Definition at line 116 of file DILParser.h.
References m_dil_lexer, and m_error.
Referenced by ParseBuiltinType(), and ParseCastExpression().
|
inline |
Definition at line 78 of file DILParser.h.
References m_use_dynamic.
|
inline |
Definition at line 74 of file DILParser.h.
References m_fragile_ivar.
|
inline |
Definition at line 72 of file DILParser.h.
References m_use_synthetic.
|
private |
Definition at line 139 of file DILParser.h.
Referenced by CheckPtrVsMember(), and DILParser().
|
private |
Definition at line 127 of file DILParser.h.
Referenced by DILParser(), and ParseBuiltinType().
|
private |
Definition at line 131 of file DILParser.h.
Referenced by BailOut(), CurToken(), DILParser(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseIdExpression(), ParseIntegerConstant(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseTypeId(), ParseUnaryExpression(), ParseUnqualifiedId(), and TentativeParsingRollback().
|
private |
Definition at line 134 of file DILParser.h.
Referenced by BailOut(), DILParser(), and TentativeParsingRollback().
|
private |
Definition at line 138 of file DILParser.h.
Referenced by DILParser(), and UseFragileIvar().
|
private |
Definition at line 129 of file DILParser.h.
Referenced by BailOut(), and DILParser().
|
private |
Definition at line 136 of file DILParser.h.
Referenced by DILParser(), and UseDynamic().
|
private |
Definition at line 137 of file DILParser.h.
Referenced by DILParser(), and UseSynthetic().