LLVM: lib/CodeGen/MIRParser/MILexer.cpp File Reference (original) (raw)
#include "[MILexer.h](MILexer%5F8h%5Fsource.html)"#include "[llvm/ADT/StringExtras.h](StringExtras%5F8h%5Fsource.html)"#include "[llvm/ADT/StringSwitch.h](StringSwitch%5F8h%5Fsource.html)"#include "[llvm/ADT/Twine.h](Twine%5F8h%5Fsource.html)"#include <cassert>#include <cctype>#include <string>
Go to the source code of this file.
| Functions | |
|---|---|
| static Cursor | skipWhitespace (Cursor C) |
| Skip the leading whitespace characters and return the updated cursor. | |
| static bool | isNewlineChar (char C) |
| static Cursor | skipComment (Cursor C) |
| Skip a line comment and return the updated cursor. | |
| static Cursor | skipMachineOperandComment (Cursor C) |
| Machine operands can have comments, enclosed between /* and /. | |
| static bool | isIdentifierChar (char C) |
| Return true if the given character satisfies the following regular expression: [-a-zA-Z$._0-9]. | |
| static std::string | unescapeQuotedString (StringRef Value) |
| Unescapes the given string value. | |
| static Cursor | lexStringConstant (Cursor C, ErrorCallbackType ErrorCallback) |
| Lex a string constant using the following regular expression: "[^"]*". | |
| static Cursor | lexName (Cursor C, MIToken &Token, MIToken::TokenKind Type, unsigned PrefixLength, ErrorCallbackType ErrorCallback) |
| static MIToken::TokenKind | getIdentifierKind (StringRef Identifier) |
| static Cursor | maybeLexIdentifier (Cursor C, MIToken &Token) |
| static Cursor | maybeLexMachineBasicBlock (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexIndex (Cursor C, MIToken &Token, StringRef Rule, MIToken::TokenKind Kind) |
| static Cursor | maybeLexIndexAndName (Cursor C, MIToken &Token, StringRef Rule, MIToken::TokenKind Kind) |
| static Cursor | maybeLexJumpTableIndex (Cursor C, MIToken &Token) |
| static Cursor | maybeLexStackObject (Cursor C, MIToken &Token) |
| static Cursor | maybeLexFixedStackObject (Cursor C, MIToken &Token) |
| static Cursor | maybeLexConstantPoolItem (Cursor C, MIToken &Token) |
| static Cursor | maybeLexSubRegisterIndex (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexIRBlock (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexIRValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexStringConstant (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | lexVirtualRegister (Cursor C, MIToken &Token) |
| static bool | isRegisterChar (char C) |
| Returns true for a character allowed in a register name. | |
| static Cursor | lexNamedVirtualRegister (Cursor C, MIToken &Token) |
| static Cursor | maybeLexRegister (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexGlobalValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexExternalSymbol (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static Cursor | maybeLexMCSymbol (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static bool | isValidHexFloatingPointPrefix (char C) |
| static Cursor | lexFloatingPointLiteral (Cursor Range, Cursor C, MIToken &Token) |
| static Cursor | maybeLexHexadecimalLiteral (Cursor C, MIToken &Token) |
| static Cursor | maybeLexNumericalLiteral (Cursor C, MIToken &Token) |
| static MIToken::TokenKind | getMetadataKeywordKind (StringRef Identifier) |
| static Cursor | maybeLexExclaim (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
| static MIToken::TokenKind | symbolToken (char C) |
| static Cursor | maybeLexSymbol (Cursor C, MIToken &Token) |
| static Cursor | maybeLexNewline (Cursor C, MIToken &Token) |
| static Cursor | maybeLexEscapedIRValue (Cursor C, MIToken &Token, ErrorCallbackType ErrorCallback) |
◆ getIdentifierKind()
Definition at line 190 of file MILexer.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::MIToken::Identifier, llvm::MIToken::kw_addrspace, llvm::MIToken::kw_afn, llvm::MIToken::kw_align, llvm::MIToken::kw_arcp, llvm::MIToken::kw_basealign, llvm::MIToken::kw_bb_id, llvm::MIToken::kw_bbsections, llvm::MIToken::kw_bfloat, llvm::MIToken::kw_blockaddress, llvm::MIToken::kw_call_entry, llvm::MIToken::kw_call_frame_size, llvm::MIToken::kw_cfi_aarch64_negate_ra_sign_state, llvm::MIToken::kw_cfi_aarch64_negate_ra_sign_state_with_pc, llvm::MIToken::kw_cfi_adjust_cfa_offset, llvm::MIToken::kw_cfi_def_cfa, llvm::MIToken::kw_cfi_def_cfa_offset, llvm::MIToken::kw_cfi_def_cfa_register, llvm::MIToken::kw_cfi_escape, llvm::MIToken::kw_cfi_llvm_def_aspace_cfa, llvm::MIToken::kw_cfi_offset, llvm::MIToken::kw_cfi_register, llvm::MIToken::kw_cfi_rel_offset, llvm::MIToken::kw_cfi_remember_state, llvm::MIToken::kw_cfi_restore, llvm::MIToken::kw_cfi_restore_state, llvm::MIToken::kw_cfi_same_value, llvm::MIToken::kw_cfi_type, llvm::MIToken::kw_cfi_undefined, llvm::MIToken::kw_cfi_window_save, llvm::MIToken::kw_constant_pool, llvm::MIToken::kw_contract, llvm::MIToken::kw_custom, llvm::MIToken::kw_dbg_instr_ref, llvm::MIToken::kw_deactivation_symbol, llvm::MIToken::kw_dead, llvm::MIToken::kw_debug_instr_number, llvm::MIToken::kw_debug_location, llvm::MIToken::kw_debug_use, llvm::MIToken::kw_def, llvm::MIToken::kw_dereferenceable, llvm::MIToken::kw_disjoint, llvm::MIToken::kw_distinct, llvm::MIToken::kw_double, llvm::MIToken::kw_early_clobber, llvm::MIToken::kw_ehfunclet_entry, llvm::MIToken::kw_exact, llvm::MIToken::kw_float, llvm::MIToken::kw_floatpred, llvm::MIToken::kw_fp128, llvm::MIToken::kw_frame_destroy, llvm::MIToken::kw_frame_setup, llvm::MIToken::kw_got, llvm::MIToken::kw_half, llvm::MIToken::kw_heap_alloc_marker, llvm::MIToken::kw_implicit, llvm::MIToken::kw_implicit_define, llvm::MIToken::kw_inbounds, llvm::MIToken::kw_inlineasm_br_indirect_target, llvm::MIToken::kw_internal, llvm::MIToken::kw_intpred, llvm::MIToken::kw_intrinsic, llvm::MIToken::kw_invariant, llvm::MIToken::kw_ir_block_address_taken, llvm::MIToken::kw_jump_table, llvm::MIToken::kw_killed, llvm::MIToken::kw_landing_pad, llvm::MIToken::kw_lanemask, llvm::MIToken::kw_liveins, llvm::MIToken::kw_liveout, llvm::MIToken::kw_machine_block_address_taken, llvm::MIToken::kw_ninf, llvm::MIToken::kw_nnan, llvm::MIToken::kw_nneg, llvm::MIToken::kw_noconvergent, llvm::MIToken::kw_nofpexcept, llvm::MIToken::kw_non_temporal, llvm::MIToken::kw_nsw, llvm::MIToken::kw_nsz, llvm::MIToken::kw_nusw, llvm::MIToken::kw_nuw, llvm::MIToken::kw_pcsections, llvm::MIToken::kw_post_instr_symbol, llvm::MIToken::kw_ppc_fp128, llvm::MIToken::kw_pre_instr_symbol, llvm::MIToken::kw_reassoc, llvm::MIToken::kw_renamable, llvm::MIToken::kw_samesign, llvm::MIToken::kw_shufflemask, llvm::MIToken::kw_stack, llvm::MIToken::kw_successors, llvm::MIToken::kw_target_flags, llvm::MIToken::kw_target_index, llvm::MIToken::kw_tied_def, llvm::MIToken::kw_undef, llvm::MIToken::kw_unknown_address, llvm::MIToken::kw_unknown_size, llvm::MIToken::kw_unpredictable, llvm::MIToken::kw_volatile, llvm::MIToken::kw_x86_fp80, and llvm::MIToken::underscore.
Referenced by maybeLexIdentifier().
◆ getMetadataKeywordKind()
Definition at line 614 of file MILexer.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::MIToken::Error, llvm::MIToken::md_alias_scope, llvm::MIToken::md_diexpr, llvm::MIToken::md_dilocation, llvm::MIToken::md_noalias, llvm::MIToken::md_noalias_addrspace, llvm::MIToken::md_range, and llvm::MIToken::md_tbaa.
Referenced by maybeLexExclaim().
◆ isIdentifierChar()
◆ isNewlineChar()
◆ isRegisterChar()
◆ isValidHexFloatingPointPrefix()
| bool isValidHexFloatingPointPrefix ( char C) | static |
|---|
◆ lexFloatingPointLiteral()
| Cursor lexFloatingPointLiteral ( Cursor Range, Cursor C, MIToken & Token ) | static |
|---|
◆ lexName()
Definition at line 168 of file MILexer.cpp.
References llvm::CallingConv::C, llvm::MIToken::Error, isIdentifierChar(), lexStringConstant(), Range, llvm::MIToken::reset(), llvm::MIToken::setOwnedStringValue(), llvm::MIToken::setStringValue(), llvm::String, and unescapeQuotedString().
Referenced by maybeLexExternalSymbol(), maybeLexGlobalValue(), maybeLexIRBlock(), maybeLexIRValue(), maybeLexStringConstant(), and maybeLexSubRegisterIndex().
◆ lexNamedVirtualRegister()
| Cursor lexNamedVirtualRegister ( Cursor C, MIToken & Token ) | static |
|---|
◆ lexStringConstant()
◆ lexVirtualRegister()
| Cursor lexVirtualRegister ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexConstantPoolItem()
| Cursor maybeLexConstantPoolItem ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexEscapedIRValue()
◆ maybeLexExclaim()
◆ maybeLexExternalSymbol()
◆ maybeLexFixedStackObject()
| Cursor maybeLexFixedStackObject ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexGlobalValue()
◆ maybeLexHexadecimalLiteral()
| Cursor maybeLexHexadecimalLiteral ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexIdentifier()
| Cursor maybeLexIdentifier ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexIndex()
◆ maybeLexIndexAndName()
◆ maybeLexIRBlock()
◆ maybeLexIRValue()
◆ maybeLexJumpTableIndex()
| Cursor maybeLexJumpTableIndex ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexMachineBasicBlock()
◆ maybeLexMCSymbol()
Definition at line 511 of file MILexer.cpp.
References llvm::CallingConv::C, llvm::MIToken::Error, isIdentifierChar(), lexStringConstant(), llvm::MIToken::MCSymbol, llvm::MIToken::reset(), llvm::MIToken::setOwnedStringValue(), llvm::MIToken::setStringValue(), llvm::StringRef::size(), llvm::String, and unescapeQuotedString().
◆ maybeLexNewline()
| Cursor maybeLexNewline ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexNumericalLiteral()
| Cursor maybeLexNumericalLiteral ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexRegister()
◆ maybeLexStackObject()
| Cursor maybeLexStackObject ( Cursor C, MIToken & Token ) | static |
|---|
◆ maybeLexStringConstant()
◆ maybeLexSubRegisterIndex()
◆ maybeLexSymbol()
| Cursor maybeLexSymbol ( Cursor C, MIToken & Token ) | static |
|---|
◆ skipComment()
| Cursor skipComment ( Cursor C) | static |
|---|
◆ skipMachineOperandComment()
| Cursor skipMachineOperandComment ( Cursor C) | static |
|---|
Machine operands can have comments, enclosed between /* and /.
This eats up all tokens, including / and */.
Definition at line 104 of file MILexer.cpp.
References llvm::CallingConv::C.
◆ skipWhitespace()
| Cursor skipWhitespace ( Cursor C) | static |
|---|
◆ symbolToken()
Definition at line 646 of file MILexer.cpp.
References llvm::CallingConv::C, llvm::MIToken::colon, llvm::MIToken::comma, llvm::MIToken::dot, llvm::MIToken::equal, llvm::MIToken::Error, llvm::MIToken::greater, llvm::MIToken::lbrace, llvm::MIToken::less, llvm::MIToken::lparen, llvm::MIToken::minus, llvm::MIToken::plus, llvm::MIToken::rbrace, and llvm::MIToken::rparen.
Referenced by maybeLexSymbol().