summaryrefslogtreecommitdiff
path: root/include/llvm/Assembly/Parser.h
blob: 5ac6ec20fa14b6d941d17a98cd0025b15f22a7d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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