diff options
Diffstat (limited to 'include/llvm/Assembly/Parser.h')
-rw-r--r-- | include/llvm/Assembly/Parser.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/include/llvm/Assembly/Parser.h b/include/llvm/Assembly/Parser.h new file mode 100644 index 0000000000..5ac6ec20fa --- /dev/null +++ b/include/llvm/Assembly/Parser.h @@ -0,0 +1,66 @@ +//===-- 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 ToolCommandLine; +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 ToolCommandLine &Opts) 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 ToolCommandLine &Opts, 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 ToolCommandLine &getOptions() const { + return Opts; // Get the options obj used to parse. + } + + // 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 : + const ToolCommandLine &Opts; + string Message; + int LineNo, ColumnNo; // -1 if not relevant + + ParseException &operator=(const ParseException &E); // objects by reference +}; + +#endif |