|
LLDB mainline
|
Pure recursive descent parser for C++ like expressions. More...
#include <DILParser.h>
Public Member Functions | |
| ~DILParser ()=default | |
Static Public Member Functions | |
| static llvm::Expected< ASTNodeUP > | Parse (llvm::StringRef dil_input_expr, DILLexer lexer, StackFrame &stack_frame, lldb::DynamicValueType use_dynamic, lldb::DILMode mode) |
Private Attributes | |
| StackFrame & | m_stack_frame |
| llvm::StringRef | m_input_expr |
| DILLexer | m_dil_lexer |
| llvm::Error & | m_error |
| lldb::DynamicValueType | m_use_dynamic |
| lldb::DILMode | m_mode |
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.
|
default |
References error().
|
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().
|
private |
Definition at line 987 of file DILParser.cpp.
References error(), m_dil_lexer, m_error, and m_input_expr.
Referenced by Expect(), ExpectOneOf(), ParseAndExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), and ResolveTypeDeclarators().
|
inlineprivate |
Definition at line 131 of file DILParser.h.
References m_dil_lexer.
Referenced by Expect(), ExpectOneOf(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseConditionalExpression(), ParseEqualityExpression(), ParseExclusiveOrExpression(), ParseFloatingPointLiteral(), ParseIdExpression(), ParseInclusiveOrExpression(), ParseIntegerLiteral(), ParseLogicalAndExpression(), ParseLogicalOrExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseRelationalExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and ResolveTypeDeclarators().
|
private |
Definition at line 1063 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseCastExpression(), ParseConditionalExpression(), ParseIdExpression(), ParseNestedNameSpecifier(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseUnqualifiedId(), and Run().
|
private |
Definition at line 1070 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseBooleanLiteral().
|
static |
Definition at line 93 of file DILParser.cpp.
References DILParser(), error(), and Run().
Referenced by lldb_private::StackFrame::DILGetValueForVariableExpressionPath().
|
private |
Definition at line 384 of file DILParser.cpp.
References CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, lldb_private::dil::Token::minus, ParseMultiplicativeExpression(), and lldb_private::dil::Token::plus.
Referenced by ParseShiftExpression().
|
private |
Definition at line 284 of file DILParser.cpp.
References lldb_private::dil::Token::amp, BailOut(), CurToken(), lldb::eDILModeFull, lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::Is(), m_dil_lexer, m_mode, and ParseEqualityExpression().
Referenced by ParseExclusiveOrExpression().
|
private |
Definition at line 173 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::equal, lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, lldb_private::dil::Token::minusequal, ParseAssignmentExpression(), ParseLogicalOrExpression(), and lldb_private::dil::Token::plusequal.
Referenced by ParseAssignmentExpression(), and ParseConditionalExpression().
|
private |
Definition at line 979 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 761 of file DILParser.cpp.
References CurToken(), GetKind(), lldb_private::dil::Token::identifier, m_dil_lexer, m_stack_frame, and TentativeParsingRollback().
Referenced by ParseTypeId().
|
private |
Definition at line 435 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(), ParseMultiplicativeExpression(), and ParseUnaryExpression().
|
private |
Definition at line 140 of file DILParser.cpp.
References lldb_private::dil::Token::colon, CurToken(), Expect(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, ParseAssignmentExpression(), ParseExpression(), and lldb_private::dil::Token::question.
Referenced by ParseExpression().
|
private |
Definition at line 312 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::equalequal, lldb_private::dil::Token::exclaimequal, lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, and ParseRelationalExpression().
Referenced by ParseAndExpression().
|
private |
Definition at line 262 of file DILParser.cpp.
References lldb_private::dil::Token::caret, CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, and ParseAndExpression().
Referenced by ParseInclusiveOrExpression().
|
private |
Definition at line 132 of file DILParser.cpp.
References ParseConditionalExpression().
Referenced by ParseConditionalExpression(), ParsePostfixExpression(), ParsePrimaryExpression(), and Run().
|
private |
Definition at line 1047 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), and lldb_private::dil::Token::GetSpelling().
Referenced by ParseNumericLiteral().
|
private |
Definition at line 887 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 240 of file DILParser.cpp.
References CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, ParseExclusiveOrExpression(), and lldb_private::dil::Token::pipe.
Referenced by ParseLogicalAndExpression().
|
private |
Definition at line 1022 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 218 of file DILParser.cpp.
References lldb_private::dil::Token::ampamp, CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, and ParseInclusiveOrExpression().
Referenced by ParseLogicalOrExpression().
|
private |
Definition at line 196 of file DILParser.cpp.
References CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, ParseLogicalAndExpression(), and lldb_private::dil::Token::pipepipe.
Referenced by ParseAssignmentExpression().
|
private |
Definition at line 408 of file DILParser.cpp.
References BailOut(), CurToken(), lldb::eDILModeFull, lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::Is(), m_dil_lexer, m_mode, ParseCastExpression(), lldb_private::dil::Token::percent, lldb_private::dil::Token::slash, and lldb_private::dil::Token::star.
Referenced by ParseAdditiveExpression().
|
private |
Definition at line 640 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(), ParseNestedNameSpecifier(), and ParseTypeSpecifier().
|
private |
Definition at line 1006 of file DILParser.cpp.
References BailOut(), CurToken(), lldb_private::dil::eErrorNode, lldb_private::dil::Token::integer_constant, m_dil_lexer, ParseFloatingPointLiteral(), and ParseIntegerLiteral().
Referenced by ParsePrimaryExpression().
|
private |
Definition at line 534 of file DILParser.cpp.
References lldb_private::dil::Token::arrow, BailOut(), lldb_private::dil::Token::colon, 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, ParseExpression(), ParseIdExpression(), ParsePrimaryExpression(), lldb_private::dil::Token::period, and lldb_private::dil::Token::r_square.
Referenced by ParseUnaryExpression().
|
private |
Definition at line 589 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(), ParseTypeId(), lldb_private::dil::Token::r_paren, and TentativeParsingRollback().
Referenced by ParsePostfixExpression().
|
private |
Definition at line 337 of file DILParser.cpp.
References CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::greater, lldb_private::dil::Token::greaterequal, lldb_private::dil::Token::less, lldb_private::dil::Token::lessequal, m_dil_lexer, and ParseShiftExpression().
Referenced by ParseEqualityExpression().
|
private |
Definition at line 361 of file DILParser.cpp.
References CurToken(), lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::greatergreater, lldb_private::dil::Token::lessless, m_dil_lexer, and ParseAdditiveExpression().
Referenced by ParseRelationalExpression().
|
private |
Definition at line 707 of file DILParser.cpp.
References lldb_private::dil::Token::amp, CurToken(), lldb_private::CompilerType::IsValid(), lldb_private::dil::LookupGlobalIdentifier(), lldb_private::dil::LookupIdentifier(), m_dil_lexer, m_stack_frame, m_use_dynamic, ParseBuiltinType(), ParseTypeSpecifierSeq(), lldb_private::dil::ResolveTypeByName(), ResolveTypeDeclarators(), and lldb_private::dil::Token::star.
Referenced by ParseCastExpression(), and ParsePrimaryExpression().
|
private |
Definition at line 861 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetSpelling(), lldb_private::dil::Token::identifier, and m_dil_lexer.
Referenced by ParseTypeSpecifier().
|
private |
Definition at line 813 of file DILParser.cpp.
References lldb_private::dil::Token::coloncolon, CurToken(), m_dil_lexer, ParseNestedNameSpecifier(), and ParseTypeName().
Referenced by ParseTypeSpecifierSeq().
|
private |
Definition at line 797 of file DILParser.cpp.
References ParseTypeSpecifier().
Referenced by ParseTypeId().
|
private |
Definition at line 491 of file DILParser.cpp.
References lldb_private::dil::AddrOf, lldb_private::dil::Token::amp, CurToken(), lldb_private::dil::Deref, lldb_private::dil::Token::exclaim, lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::LNot, m_dil_lexer, lldb_private::dil::Minus, lldb_private::dil::Token::minus, lldb_private::dil::Not, ParseCastExpression(), ParsePostfixExpression(), lldb_private::dil::Plus, lldb_private::dil::Token::plus, lldb_private::dil::Token::star, and lldb_private::dil::Token::tilde.
Referenced by ParseCastExpression().
|
private |
Definition at line 932 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 940 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 119 of file DILParser.cpp.
References lldb_private::dil::Token::eof, Expect(), and ParseExpression().
Referenced by Parse().
|
inlineprivate |
Definition at line 125 of file DILParser.h.
References m_dil_lexer, and m_error.
Referenced by ParseBuiltinType(), ParseCastExpression(), and ParsePrimaryExpression().
|
private |
Definition at line 140 of file DILParser.h.
Referenced by BailOut(), CurToken(), DILParser(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseConditionalExpression(), ParseEqualityExpression(), ParseExclusiveOrExpression(), ParseIdExpression(), ParseInclusiveOrExpression(), ParseLogicalAndExpression(), ParseLogicalOrExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseRelationalExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and TentativeParsingRollback().
|
private |
Definition at line 143 of file DILParser.h.
Referenced by BailOut(), DILParser(), and TentativeParsingRollback().
|
private |
Definition at line 138 of file DILParser.h.
Referenced by BailOut(), and DILParser().
|
private |
Definition at line 148 of file DILParser.h.
Referenced by DILParser(), ParseAndExpression(), and ParseMultiplicativeExpression().
|
private |
Definition at line 136 of file DILParser.h.
Referenced by DILParser(), ParseBuiltinType(), and ParseTypeId().
|
private |
Definition at line 145 of file DILParser.h.
Referenced by DILParser(), and ParseTypeId().