GOFFAsmParser.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //===- GOFFAsmParser.cpp - GOFF Assembly Parser ---------------------------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. #include "llvm/ADT/StringSwitch.h"
  9. #include "llvm/ADT/Twine.h"
  10. #include "llvm/MC/MCAsmInfo.h"
  11. #include "llvm/MC/MCContext.h"
  12. #include "llvm/MC/MCExpr.h"
  13. #include "llvm/MC/MCParser/MCAsmLexer.h"
  14. #include "llvm/MC/MCParser/MCAsmParserExtension.h"
  15. #include "llvm/MC/MCSectionGOFF.h"
  16. #include "llvm/MC/MCStreamer.h"
  17. #include "llvm/MC/MCSymbolGOFF.h"
  18. using namespace llvm;
  19. namespace {
  20. class GOFFAsmParser : public MCAsmParserExtension {
  21. template <bool (GOFFAsmParser::*HandlerMethod)(StringRef, SMLoc)>
  22. void addDirectiveHandler(StringRef Directive) {
  23. MCAsmParser::ExtensionDirectiveHandler Handler =
  24. std::make_pair(this, HandleDirective<GOFFAsmParser, HandlerMethod>);
  25. getParser().addDirectiveHandler(Directive, Handler);
  26. }
  27. public:
  28. GOFFAsmParser() {}
  29. void Initialize(MCAsmParser &Parser) override {
  30. // Call the base implementation.
  31. this->MCAsmParserExtension::Initialize(Parser);
  32. }
  33. };
  34. } // namespace
  35. namespace llvm {
  36. MCAsmParserExtension *createGOFFAsmParser() { return new GOFFAsmParser; }
  37. } // namespace llvm