You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
/*
|
|
* @(#)ErrorReporter.java 2.1 2003/10/07
|
|
*
|
|
* Copyright (C) 1999, 2003 D.A. Watt and D.F. Brown
|
|
* Dept. of Computing Science, University of Glasgow, Glasgow G12 8QQ Scotland
|
|
* and School of Computer and Math Sciences, The Robert Gordon University,
|
|
* St. Andrew Street, Aberdeen AB25 1HG, Scotland.
|
|
* All rights reserved.
|
|
*
|
|
* This software is provided free for educational use only. It may
|
|
* not be used for commercial purposes without the prior written permission
|
|
* of the authors.
|
|
*/
|
|
|
|
package triangle;
|
|
|
|
import triangle.syntacticAnalyzer.SourcePosition;
|
|
|
|
public class ErrorReporter {
|
|
|
|
private int numErrors;
|
|
|
|
private boolean throwExceptions;
|
|
|
|
/**
|
|
* @param throwExceptions if true, throw exceptions (good for unit tests) otherwise write to stdout
|
|
*/
|
|
public ErrorReporter(boolean throwExceptions) {
|
|
numErrors = 0;
|
|
this.throwExceptions = throwExceptions;
|
|
}
|
|
|
|
public void reportError(String message, String tokenName, SourcePosition pos) {
|
|
|
|
numErrors++;
|
|
|
|
String s = ("ERROR: ");
|
|
|
|
for (int p = 0; p < message.length(); p++)
|
|
if (message.charAt(p) == '%')
|
|
s += tokenName;
|
|
else
|
|
s += message.charAt(p);
|
|
s += (" " + pos.start + ".." + pos.finish);
|
|
|
|
if (throwExceptions) {
|
|
throw new RuntimeException(s);
|
|
} else {
|
|
System.out.println(s);
|
|
}
|
|
|
|
}
|
|
|
|
public void reportRestriction(String message) {
|
|
System.out.println("RESTRICTION: " + message);
|
|
}
|
|
|
|
public int getNumErrors() {
|
|
return numErrors;
|
|
}
|
|
}
|
|
|