view anagram/agcore/error.h @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * error.h
 */

#ifndef ERROR_H
#define ERROR_H

#include "agstack.h"
#include "agstring.h"

class Error {
public:
  enum keytype {
    warn,
    fatal,
  };

  AgString file;
  int line;
  int column;
  keytype key;
  AgString message;

  static const char *keyString[];

  Error() : line(0), column(0), key(fatal) {}
  Error(AgString msg);                                          // misc error
  Error(int line, int column, AgString msg);                    // parse error
  Error(int line, int column, AgString file, AgString msg);     // config error

  void setFatal() { key=fatal; }
  int operator < (const Error &e) const { return line < e.line; }
};

extern AgStack<Error> errorList;

extern AgString errorReportFile;

extern int charRangeDiagnostic;
extern int eventDrivenDiagnostic;
extern int negativeCharDiagnostic;
extern int errorResynchDiagnostic;

void reset_errors(void);

void log_error();
void log_error(const char *);
void log_error(int,int);

void checkParams();


#endif /* ERROR_H */