package languages.l0;
import java_cup.runtime.Symbol;
import languages.LanguageParserException;
import languages.LanguageScanner;
/**
* The parser class for the L0 language.
*
* @author Benedikt Meurer
* @version $Id$
*/
final class L0Parser extends L0AbstractParser {
//
// Constructor (package)
//
/**
* Allocates a new <code>L0Parser</code> that operates
* on tokens from the specified <code>scanner</code>.
*
* @param scanner the {@link LanguageScanner} to query
* the tokens from.
*/
L0Parser(LanguageScanner scanner) {
super(scanner);
}
//
// Error reporting
//
/**
* {@inheritDoc}
*
* @see java_cup.runtime.lr_parser#report_error(java.lang.String, java.lang.Object)
*/
@Override
public void report_error(String message, Object info) {
Symbol symbol = (Symbol)info;
if (symbol.sym == EOF_sym()) {
message = "Unexpected end of file";
}
throw new LanguageParserException(message, symbol.left, symbol.right);
}
/**
* {@inheritDoc}
*
* @see java_cup.runtime.lr_parser#report_fatal_error(java.lang.String, java.lang.Object)
*/
@Override
public void report_fatal_error(String message, Object info) throws Exception {
report_error(message, info);
}
}