package de.unisiegen.gtitool.core.parser.nonterminalsymbol; import java.io.StringReader; import java_cup.runtime.lr_parser; import de.unisiegen.gtitool.core.entities.NonterminalSymbol; import de.unisiegen.gtitool.core.parser.GTIParser; import de.unisiegen.gtitool.core.parser.Parseable; import de.unisiegen.gtitool.core.parser.scanner.GTIScanner; /** * The {@link NonterminalSymbol} {@link Parseable} class. * * @author Christian Fehler * @version $Id: NonterminalSymbolParseable.java 547 2008-02-10 22:24:57Z fehler * $ */ public final class NonterminalSymbolParseable implements Parseable { /** * Returns a new {@link GTIParser}. * * @param gtiScanner The input {@link GTIScanner}. * @return A new {@link GTIParser}. * @see Parseable#newParser(GTIScanner) */ public final GTIParser newParser ( GTIScanner gtiScanner ) { if ( gtiScanner == null ) { throw new NullPointerException ( "scanner is null" ); //$NON-NLS-1$ } final lr_parser parser = new NonterminalSymbolParser ( gtiScanner ); return new GTIParser () { public NonterminalSymbol parse () throws Exception { return ( NonterminalSymbol ) parser.parse ().value; } }; } /** * Returns a new {@link GTIParser}. * * @param text The input {@link String}. * @return A new {@link GTIParser}. * @see Parseable#newParser(String) */ public final GTIParser newParser ( String text ) { return newParser ( newScanner ( text ) ); } /** * Returns a new {@link GTIScanner}. * * @param text The input {@link String}. * @return A new {@link GTIScanner}. * @see Parseable#newScanner(String) */ public final GTIScanner newScanner ( String text ) { if ( text == null ) { throw new NullPointerException ( "text is null" ); //$NON-NLS-1$ } return new NonterminalSymbolScanner ( new StringReader ( text ) ); } }