|
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 846 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 127 of file DILParser.h.
References m_dil_lexer.
Referenced by Expect(), ExpectOneOf(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseExclusiveOrExpression(), ParseFloatingPointLiteral(), ParseIdExpression(), ParseInclusiveOrExpression(), ParseIntegerLiteral(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and ResolveTypeDeclarators().
|
private |
Definition at line 922 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseCastExpression(), ParseIdExpression(), ParseNestedNameSpecifier(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseUnqualifiedId(), and Run().
|
private |
Definition at line 929 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 263 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 212 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 ParseShiftExpression().
Referenced by ParseExclusiveOrExpression().
|
private |
Definition at line 145 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(), ParseInclusiveOrExpression(), and lldb_private::dil::Token::plusequal.
Referenced by ParseAssignmentExpression(), and ParseExpression().
|
private |
Definition at line 838 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 620 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 314 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 190 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 ParsePostfixExpression(), ParsePrimaryExpression(), and Run().
|
private |
Definition at line 906 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), and lldb_private::dil::Token::GetSpelling().
Referenced by ParseNumericLiteral().
|
private |
Definition at line 746 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 168 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 ParseAssignmentExpression().
|
private |
Definition at line 881 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 287 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 499 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 865 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 409 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 464 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 240 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 ParseAndExpression().
|
private |
Definition at line 566 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().
|
private |
Definition at line 720 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 672 of file DILParser.cpp.
References lldb_private::dil::Token::coloncolon, CurToken(), m_dil_lexer, ParseNestedNameSpecifier(), and ParseTypeName().
Referenced by ParseTypeSpecifierSeq().
|
private |
Definition at line 656 of file DILParser.cpp.
References ParseTypeSpecifier().
Referenced by ParseTypeId().
|
private |
Definition at line 369 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, 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 791 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 799 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 121 of file DILParser.h.
References m_dil_lexer, and m_error.
Referenced by ParseBuiltinType(), and ParseCastExpression().
|
private |
Definition at line 136 of file DILParser.h.
Referenced by BailOut(), CurToken(), DILParser(), ParseAdditiveExpression(), ParseAndExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseExclusiveOrExpression(), ParseIdExpression(), ParseInclusiveOrExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and TentativeParsingRollback().
|
private |
Definition at line 139 of file DILParser.h.
Referenced by BailOut(), DILParser(), and TentativeParsingRollback().
|
private |
Definition at line 134 of file DILParser.h.
Referenced by BailOut(), and DILParser().
|
private |
Definition at line 144 of file DILParser.h.
Referenced by DILParser(), ParseAndExpression(), and ParseMultiplicativeExpression().
|
private |
Definition at line 132 of file DILParser.h.
Referenced by DILParser(), ParseBuiltinType(), and ParseTypeId().
|
private |
Definition at line 141 of file DILParser.h.
Referenced by DILParser(), and ParseTypeId().