/*******************************************************************************
* Copyright (c) 2008 Scott Stanchfield.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Based on the ANTLR parser generator by Terence Parr, http://antlr.org
* Ric Klaren <klaren@cs.utwente.nl>
* Scott Stanchfield - Modifications for XML Parsing
*******************************************************************************/
package com.javadude.antxr;
public class NoViableAltForCharException extends RecognitionException {
private static final long serialVersionUID = 1L;
public char foundChar;
public NoViableAltForCharException(char c, CharScanner scanner) {
super("NoViableAlt", scanner.getFilename(),
scanner.getLine(), scanner.getColumn());
foundChar = c;
}
/** @deprecated As of ANTXR 2.7.2 use {@see #NoViableAltForCharException(char, String, int, int) } */
@Deprecated
public NoViableAltForCharException(char c, String fileName, int line) {
this(c, fileName, line, -1);
}
public NoViableAltForCharException(char c, String fileName, int line, int column) {
super("NoViableAlt", fileName, line, column);
foundChar = c;
}
/**
* Returns a clean error message (no line number/column information)
*/
@Override
public String getMessage() {
String mesg = "unexpected char: ";
// I'm trying to mirror a change in the C++ stuff.
// But java seems to lack something convenient isprint-ish..
// actually we're kludging around unicode and non unicode savy
// output stuff like most terms.. Basically one would want to
// be able to tweak the generation of this message.
if ((foundChar >= ' ') && (foundChar <= '~')) {
mesg += '\'';
mesg += foundChar;
mesg += '\'';
}
else {
mesg += "0x"+Integer.toHexString(foundChar).toUpperCase();
}
return mesg;
}
}