//===-- llvm/Assembly/Parser.h - Parser for VM assembly files ---*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file was developed by the LLVM research group and is distributed under // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // These classes are implemented by the lib/AsmParser library. // //===----------------------------------------------------------------------===// #ifndef LLVM_ASSEMBLY_PARSER_H #define LLVM_ASSEMBLY_PARSER_H #include <string> namespace llvm { class Module; class ParseException; // The useful interface defined by this file... Parse an ascii file, and return // the internal representation in a nice slice'n'dice'able representation. Note // that this does not verify that the generated LLVM is valid, so you should run // the verifier after parsing the file to check that it's ok. // Module *ParseAssemblyFile(const std::string &Filename);// throw (ParseException) Module *ParseAssemblyString(const char * AsmString, Module * M);// throw (ParseException) //===------------------------------------------------------------------------=== // Helper Classes //===------------------------------------------------------------------------=== // ParseException - For when an exceptional event is generated by the parser. // This class lets you print out the exception message // class ParseException { public: ParseException(const std::string &filename, const std::string &message, int LineNo = -1, int ColNo = -1); ParseException(const ParseException &E); // getMessage - Return the message passed in at construction time plus extra // information extracted from the options used to parse with... // const std::string getMessage() const; inline const std::string &getRawMessage() const { // Just the raw message... return Message; } inline const std::string &getFilename() const { return Filename; } // getErrorLocation - Return the line and column number of the error in the // input source file. The source filename can be derived from the // ParserOptions in effect. If positional information is not applicable, // these will return a value of -1. // inline const void getErrorLocation(int &Line, int &Column) const { Line = LineNo; Column = ColumnNo; } private : std::string Filename; std::string Message; int LineNo, ColumnNo; // -1 if not relevant ParseException &operator=(const ParseException &E); // objects by reference }; } // End llvm namespace #endif