llvm-6502/include/llvm/Assembly/Parser.h
2001-07-23 02:35:57 +00:00

66 lines
2.0 KiB
C++

//===-- llvm/assembly/Parser.h - Parser for VM assembly files ----*- C++ -*--=//
//
// These classes are implemented by the lib/AssemblyParser library.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_ASSEMBLY_PARSER_H
#define LLVM_ASSEMBLY_PARSER_H
#include <string>
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.
//
Module *ParseAssemblyFile(const string &Filename) 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 string &filename, const 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 string getMessage() const;
inline const string getRawMessage() const { // Just the raw message...
return Message;
}
inline const 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 :
string Filename;
string Message;
int LineNo, ColumnNo; // -1 if not relevant
ParseException &operator=(const ParseException &E); // objects by reference
};
#endif