llvm-mirror/include/llvm/Assembly/Parser.h

80 lines
2.6 KiB
C
Raw Normal View History

//===-- 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.
//
//===----------------------------------------------------------------------===//
2001-06-06 20:29:01 +00:00
//
2002-08-30 22:51:21 +00:00
// These classes are implemented by the lib/AsmParser library.
2001-06-06 20:29:01 +00:00
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_ASSEMBLY_PARSER_H
#define LLVM_ASSEMBLY_PARSER_H
#include <string>
namespace llvm {
2001-06-06 20:29:01 +00:00
class Module;
class ParseException;
// The useful interface defined by this file... Parse an ascii file, and return
2002-08-30 22:51:21 +00:00
// 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.
2001-06-06 20:29:01 +00:00
//
Module *ParseAssemblyFile(const std::string &Filename);// throw (ParseException)
Module *ParseAssemblyString(const char * AsmString, Module * M);// throw (ParseException)
2001-06-06 20:29:01 +00:00
//===------------------------------------------------------------------------===
// 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,
2005-04-22 03:27:20 +00:00
int LineNo = -1, int ColNo = -1);
2001-06-06 20:29:01 +00:00
ParseException(const ParseException &E);
// getMessage - Return the message passed in at construction time plus extra
2001-06-06 20:29:01 +00:00
// information extracted from the options used to parse with...
//
const std::string getMessage() const;
2001-06-06 20:29:01 +00:00
inline const std::string &getRawMessage() const { // Just the raw message...
2001-06-06 20:29:01 +00:00
return Message;
}
inline const std::string &getFilename() const {
return Filename;
2001-06-06 20:29:01 +00:00
}
// 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,
2001-06-06 20:29:01 +00:00
// 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;
2001-06-06 20:29:01 +00:00
int LineNo, ColumnNo; // -1 if not relevant
ParseException &operator=(const ParseException &E); // objects by reference
};
} // End llvm namespace
2001-06-06 20:29:01 +00:00
#endif