1a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//===-- MCAsmParser.cpp - Abstract Asm Parser Interface -------------------===//
2a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//
3a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//                     The LLVM Compiler Infrastructure
4a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//
5a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// This file is distributed under the University of Illinois Open Source
6a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// License. See LICENSE.TXT for details.
7a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//
8a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//===----------------------------------------------------------------------===//
9a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar
10c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCAsmParser.h"
11d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm/ADT/Twine.h"
12c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCAsmLexer.h"
13c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
1494b9550a32d189704a8eae55505edf62662c0534Evan Cheng#include "llvm/MC/MCTargetAsmParser.h"
15d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm/Support/Debug.h"
16b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner#include "llvm/Support/SourceMgr.h"
17b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach#include "llvm/Support/raw_ostream.h"
18a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbarusing namespace llvm;
19a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar
20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesMCAsmParser::MCAsmParser() : TargetParser(nullptr), ShowParsedOperands(0) {
21a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar}
22a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar
23a3af370dc12f6d5100da5d614ab0a62da135569aDaniel DunbarMCAsmParser::~MCAsmParser() {
24a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar}
25b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner
2694b9550a32d189704a8eae55505edf62662c0534Evan Chengvoid MCAsmParser::setTargetParser(MCTargetAsmParser &P) {
27d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar  assert(!TargetParser && "Target parser is already initialized!");
28d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar  TargetParser = &P;
29d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar  TargetParser->Initialize(*this);
30d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar}
31d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar
3218b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callananconst AsmToken &MCAsmParser::getTok() {
3318b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan  return getLexer().getTok();
3418b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan}
3518b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan
36d8b7aa26134d2abee777f745c32005e63dea2455Chris Lattnerbool MCAsmParser::TokError(const Twine &Msg, ArrayRef<SMRange> Ranges) {
37d8b7aa26134d2abee777f745c32005e63dea2455Chris Lattner  Error(getLexer().getLoc(), Msg, Ranges);
38dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar  return true;
39dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar}
40dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar
41cb2ae3d98e3bb36e5813f8f69b00d39efd026dcdJim Grosbachbool MCAsmParser::parseExpression(const MCExpr *&Res) {
42b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner  SMLoc L;
43cb2ae3d98e3bb36e5813f8f69b00d39efd026dcdJim Grosbach  return parseExpression(Res, L);
44b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner}
45b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner
46b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbachvoid MCParsedAsmOperand::dump() const {
47286c4dc355b8be6806081b23c3097485821c7642Manman Ren#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
48b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach  dbgs() << "  " << *this;
49cc77eece74c8db09acc2af425e7e6c88a5bb30d1Manman Ren#endif
50b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach}
51