|
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 769 of file DILParser.cpp.
References error(), m_dil_lexer, m_error, and m_input_expr.
Referenced by Expect(), ExpectOneOf(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), and ResolveTypeDeclarators().
|
inlineprivate |
Definition at line 124 of file DILParser.h.
References m_dil_lexer.
Referenced by Expect(), ExpectOneOf(), ParseAdditiveExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseFloatingPointLiteral(), ParseIdExpression(), ParseIntegerLiteral(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and ResolveTypeDeclarators().
|
private |
Definition at line 845 of file DILParser.cpp.
References BailOut(), and CurToken().
Referenced by ParseCastExpression(), ParseIdExpression(), ParseNestedNameSpecifier(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseUnqualifiedId(), and Run().
|
private |
Definition at line 852 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 192 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 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(), ParseShiftExpression(), and lldb_private::dil::Token::plusequal.
Referenced by ParseAssignmentExpression(), and ParseExpression().
|
private |
Definition at line 761 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 545 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 243 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 132 of file DILParser.cpp.
References ParseAssignmentExpression().
Referenced by ParsePostfixExpression(), ParsePrimaryExpression(), and Run().
|
private |
Definition at line 829 of file DILParser.cpp.
References CurToken(), lldb_private::dil::Token::GetLocation(), and lldb_private::dil::Token::GetSpelling().
Referenced by ParseNumericLiteral().
|
private |
Definition at line 669 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 804 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 216 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 424 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 788 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 334 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 389 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 169 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 ParseAssignmentExpression().
|
private |
Definition at line 491 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 643 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 595 of file DILParser.cpp.
References lldb_private::dil::Token::coloncolon, CurToken(), m_dil_lexer, ParseNestedNameSpecifier(), and ParseTypeName().
Referenced by ParseTypeSpecifierSeq().
|
private |
Definition at line 579 of file DILParser.cpp.
References ParseTypeSpecifier().
Referenced by ParseTypeId().
|
private |
Definition at line 297 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 714 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 722 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 118 of file DILParser.h.
References m_dil_lexer, and m_error.
Referenced by ParseBuiltinType(), and ParseCastExpression().
|
private |
Definition at line 133 of file DILParser.h.
Referenced by BailOut(), CurToken(), DILParser(), ParseAdditiveExpression(), ParseAssignmentExpression(), ParseBooleanLiteral(), ParseBuiltinType(), ParseCastExpression(), ParseIdExpression(), ParseMultiplicativeExpression(), ParseNestedNameSpecifier(), ParseNumericLiteral(), ParsePostfixExpression(), ParsePrimaryExpression(), ParseShiftExpression(), ParseTypeId(), ParseTypeName(), ParseTypeSpecifier(), ParseUnaryExpression(), ParseUnqualifiedId(), and TentativeParsingRollback().
|
private |
Definition at line 136 of file DILParser.h.
Referenced by BailOut(), DILParser(), and TentativeParsingRollback().
|
private |
Definition at line 131 of file DILParser.h.
Referenced by BailOut(), and DILParser().
|
private |
Definition at line 141 of file DILParser.h.
Referenced by DILParser(), and ParseMultiplicativeExpression().
|
private |
Definition at line 129 of file DILParser.h.
Referenced by DILParser(), ParseBuiltinType(), and ParseTypeId().
|
private |
Definition at line 138 of file DILParser.h.
Referenced by DILParser(), and ParseTypeId().