package languages.l0; import java.io.Reader; import expressions.Expression; import java_cup.runtime.lr_parser; import languages.AbstractLanguage; import languages.LanguageParser; import languages.LanguageScanner; /** * This class represents the language L0. * * @author Benedikt Meurer * @version $Id$ */ public final class L0Language extends AbstractLanguage { // // Constructor // /** * Allocates a new <code>L0Language</code> instance. */ public L0Language() { } // // Parser/Scanner allocation // /** * {@inheritDoc} * * @see languages.Language#newParser(languages.LanguageScanner) */ public LanguageParser newParser(LanguageScanner scanner) { if (scanner == null) { throw new NullPointerException("scanner is null"); } final lr_parser parser = new L0Parser(scanner); return new LanguageParser() { public Expression parse() throws Exception { return (Expression)parser.parse().value; } }; } /** * {@inheritDoc} * * @see languages.Language#newScanner(java.io.Reader) */ public LanguageScanner newScanner(Reader reader) { if (reader == null) { throw new NullPointerException("reader is null"); } return new L0Scanner(reader); } }