1 //===-- llvm/assembly/Parser.h - Parser for VM assembly files ----*- C++ -*--=//
3 // These classes are implemented by the lib/AssemblyParser library.
5 //===----------------------------------------------------------------------===//
7 #ifndef LLVM_ASSEMBLY_PARSER_H
8 #define LLVM_ASSEMBLY_PARSER_H
13 class ToolCommandLine;
17 // The useful interface defined by this file... Parse an ascii file, and return
18 // the internal representation in a nice slice'n'dice'able representation.
20 Module *ParseAssemblyFile(const ToolCommandLine &Opts) throw (ParseException);
22 //===------------------------------------------------------------------------===
24 //===------------------------------------------------------------------------===
26 // ParseException - For when an exceptional event is generated by the parser.
27 // This class lets you print out the exception message
29 class ParseException {
31 ParseException(const ToolCommandLine &Opts, const string &message,
32 int LineNo = -1, int ColNo = -1);
34 ParseException(const ParseException &E);
36 // getMessage - Return the message passed in at construction time plus extra
37 // information extracted from the options used to parse with...
39 const string getMessage() const;
41 inline const string getRawMessage() const { // Just the raw message...
45 inline const ToolCommandLine &getOptions() const {
46 return Opts; // Get the options obj used to parse.
49 // getErrorLocation - Return the line and column number of the error in the
50 // input source file. The source filename can be derived from the
51 // ParserOptions in effect. If positional information is not applicable,
52 // these will return a value of -1.
54 inline const void getErrorLocation(int &Line, int &Column) const {
55 Line = LineNo; Column = ColumnNo;
59 const ToolCommandLine &Opts;
61 int LineNo, ColumnNo; // -1 if not relevant
63 ParseException &operator=(const ParseException &E); // objects by reference