MCAsmParser.cpp revision d8b7aa26134d2abee777f745c32005e63dea2455
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"
11c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCAsmLexer.h"
12c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
1394b9550a32d189704a8eae55505edf62662c0534Evan Cheng#include "llvm/MC/MCTargetAsmParser.h"
14b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner#include "llvm/Support/SourceMgr.h"
15b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach#include "llvm/Support/raw_ostream.h"
16b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach#include "llvm/Support/Debug.h"
17a7cfc08ebe737062917b442830eb5321b0f79e89Evan Cheng#include "llvm/ADT/Twine.h"
18a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbarusing namespace llvm;
19a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar
203c14ca47fc057c5999cd41ce2782e0ebaa2bcf7dDaniel DunbarMCAsmParser::MCAsmParser() : TargetParser(0), 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
41b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattnerbool MCAsmParser::ParseExpression(const MCExpr *&Res) {
42b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner  SMLoc L;
439521c95f97b7b2a06144d312d3be4672caacc6d0Chris Lattner  return ParseExpression(Res, L);
44b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner}
45b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner
46b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbachvoid MCParsedAsmOperand::dump() const {
47b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach  dbgs() << "  " << *this;
48b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach}
49