|
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 1032 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(), ParseUnaryExpression(), and ResolveTypeDeclarators().
|
inlineprivate |
Definition at line 133 of file DILParser.h.
References m_dil_lexer.
Referenced by Expect(), ExpectOneOf(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseConditionalBranches(), 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 1108 of file DILParser.cpp.
References BailOut(), CurToken(), lldb_private::dil::Token::equal, lldb_private::dil::Token::minusequal, and lldb_private::dil::Token::plusequal.
Referenced by ParseCastExpression(), ParseConditionalBranches(), ParseIdExpression(), ParseNestedNameSpecifier(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseUnqualifiedId(), and Run().
|
private |
Definition at line 1119 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 411 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 311 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 150 of file DILParser.cpp.
References lldb_private::dil::Token::ampequal, lldb_private::dil::Token::caretequal, CurToken(), lldb_private::dil::Token::equal, lldb_private::dil::GetBinaryOpKindFromToken(), lldb_private::dil::Token::GetKind(), lldb_private::dil::Token::GetLocation(), lldb_private::dil::Token::greatergreaterequal, lldb_private::dil::Token::lesslessequal, m_dil_lexer, lldb_private::dil::Token::minusequal, ParseConditionalBranches(), ParseLogicalOrExpression(), ParsePureExpression(), lldb_private::dil::Token::percentequal, lldb_private::dil::Token::pipeequal, lldb_private::dil::Token::plusequal, lldb_private::dil::Token::question, lldb_private::dil::Token::slashequal, and lldb_private::dil::Token::starequal.
Referenced by ParseExpression().
|
private |
Definition at line 1024 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 806 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 462 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().
Definition at line 202 of file DILParser.cpp.
References lldb_private::dil::Token::colon, CurToken(), Expect(), lldb_private::dil::Token::GetLocation(), m_dil_lexer, and ParsePureExpression().
Referenced by ParseAssignmentExpression(), and ParseConditionalExpression().
|
private |
Definition at line 192 of file DILParser.cpp.
References CurToken(), ParseConditionalBranches(), ParseLogicalOrExpression(), and lldb_private::dil::Token::question.
Referenced by ParsePureExpression().
|
private |
Definition at line 339 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 289 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 ParseAssignmentExpression().
Referenced by Run().
|
private |
Definition at line 1092 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), and lldb_private::dil::Token::GetSpelling().
Referenced by ParseNumericLiteral().
|
private |
Definition at line 932 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 267 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 1067 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 245 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 223 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(), and ParseConditionalExpression().
|
private |
Definition at line 435 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 685 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 1051 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 570 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, lldb_private::dil::Token::minusminus, ParseIdExpression(), ParsePrimaryExpression(), ParsePureExpression(), lldb_private::dil::Token::period, lldb_private::dil::Token::plusplus, and lldb_private::dil::Token::r_square.
Referenced by ParseUnaryExpression().
|
private |
Definition at line 634 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(), ParseIdExpression(), ParseNumericLiteral(), ParsePureExpression(), ParseTypeId(), lldb_private::dil::Token::r_paren, and TentativeParsingRollback().
Referenced by ParsePostfixExpression().
|
private |
Definition at line 182 of file DILParser.cpp.
References ParseConditionalExpression().
Referenced by ParseAssignmentExpression(), ParseConditionalBranches(), ParsePostfixExpression(), and ParsePrimaryExpression().
|
private |
Definition at line 364 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 388 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 752 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 906 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 858 of file DILParser.cpp.
References lldb_private::dil::Token::coloncolon, CurToken(), m_dil_lexer, ParseNestedNameSpecifier(), and ParseTypeName().
Referenced by ParseTypeSpecifierSeq().
|
private |
Definition at line 842 of file DILParser.cpp.
References ParseTypeSpecifier().
Referenced by ParseTypeId().
|
private |
Definition at line 518 of file DILParser.cpp.
References lldb_private::dil::AddrOf, lldb_private::dil::Token::amp, BailOut(), 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::Token::minusminus, lldb_private::dil::Not, ParseCastExpression(), ParsePostfixExpression(), lldb_private::dil::Plus, lldb_private::dil::Token::plus, lldb_private::dil::Token::plusplus, lldb_private::dil::Token::star, and lldb_private::dil::Token::tilde.
Referenced by ParseCastExpression().
|
private |
Definition at line 977 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 985 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 127 of file DILParser.h.
References m_dil_lexer, and m_error.
Referenced by ParseBuiltinType(), ParseCastExpression(), and ParsePrimaryExpression().
|
private |
Definition at line 142 of file DILParser.h.
Referenced by BailOut(), CurToken(), DILParser(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseConditionalBranches(), ParseEqualityExpression(), ParseExclusiveOrExpression(), ParseIdExpression(), ParseInclusiveOrExpression(), ParseLogicalAndExpression(), ParseLogicalOrExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseRelationalExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and TentativeParsingRollback().
|
private |
Definition at line 145 of file DILParser.h.
Referenced by BailOut(), DILParser(), and TentativeParsingRollback().
|
private |
Definition at line 140 of file DILParser.h.
Referenced by BailOut(), and DILParser().
|
private |
Definition at line 150 of file DILParser.h.
Referenced by DILParser(), ParseAndExpression(), and ParseMultiplicativeExpression().
|
private |
Definition at line 138 of file DILParser.h.
Referenced by DILParser(), ParseBuiltinType(), and ParseTypeId().
|
private |
Definition at line 147 of file DILParser.h.
Referenced by DILParser(), and ParseTypeId().