summaryrefslogtreecommitdiff
path: root/include/llvm/Assembly/Parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Assembly/Parser.h')
-rw-r--r--include/llvm/Assembly/Parser.h66
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