package de.unisiegen.gtitool.core.entities.regex; import java.util.ArrayList; import javax.swing.event.EventListenerList; import de.unisiegen.gtitool.core.entities.Entity; import de.unisiegen.gtitool.core.entities.listener.PrettyStringChangedListener; import de.unisiegen.gtitool.core.parser.ParserOffset; import de.unisiegen.gtitool.core.parser.style.PrettyPrintable; import de.unisiegen.gtitool.core.parser.style.PrettyString; import de.unisiegen.gtitool.core.parser.style.PrettyToken; import de.unisiegen.gtitool.core.parser.style.Style; /** * Representation of a Token in the Regex * * @author Simon Meurer * @version */ public class TokenNode extends LeafNode { /** * The serial version uid */ private static final long serialVersionUID = -4513107256319511073L; /** * The {@link EventListenerList}. */ private EventListenerList listenerList = new EventListenerList (); /** * The name of the Token */ private String name; /** * The offset of this {@link TokenNode} in the source code. * * @see #getParserOffset() * @see #setParserOffset(ParserOffset) */ private ParserOffset parserOffset = NO_PARSER_OFFSET; /** * The position in the Syntaxtree */ private int position; /** * Contructor for a Token in the Regex * * @param name The name of the Token */ public TokenNode ( String name ) { this.name = name.toString (); } /** * {@inheritDoc} * * @see PrettyPrintable#addPrettyStringChangedListener(de.unisiegen.gtitool.core.entities.listener.PrettyStringChangedListener) */ public void addPrettyStringChangedListener ( PrettyStringChangedListener listener ) { this.listenerList.add ( PrettyStringChangedListener.class, listener ); } /** * {@inheritDoc} * * @see de.unisiegen.gtitool.core.entities.regex.RegexNode#clone() */ @Override public RegexNode clone () { return new TokenNode ( this.name ); } /** * {@inheritDoc} * * @see Comparable#compareTo(java.lang.Object) */ public int compareTo ( @SuppressWarnings ( "unused" ) RegexNode o ) { return 0; } /** * {@inheritDoc} * * @see Object#equals(java.lang.Object) */ @Override public boolean equals ( Object obj ) { if ( obj == this ) { return true; } if ( obj instanceof TokenNode ) { if ( this.name.equals ( ( ( TokenNode ) obj ).name ) ) { return this.position == ( ( TokenNode ) obj ).position; } } return false; } /** * {@inheritDoc} * * @see RegexNode#getAllChildren() */ @Override public ArrayList < RegexNode > getAllChildren () { ArrayList < RegexNode > nodes = new ArrayList < RegexNode > (); return nodes; } /** * {@inheritDoc} * * @see RegexNode#getChildren() */ @Override public ArrayList < RegexNode > getChildren () { ArrayList < RegexNode > nodes = new ArrayList < RegexNode > (); return nodes; } /** * {@inheritDoc} * * @see RegexNode#getLeftChildrenCount() */ @Override public int getLeftChildrenCount () { return 0; } /** * Returns the name. * * @return The name. * @see #name */ public String getName () { return this.name; } /** * {@inheritDoc} * * @see RegexNode#getNextUnfinishedNode() */ @Override public UnfinishedNode getNextUnfinishedNode () { return null; } /** * {@inheritDoc} * * @see RegexNode#getNodeString() */ @Override public PrettyString getNodeString () { PrettyString prettyString = new PrettyString (); prettyString.add ( new PrettyToken ( this.name, Style.TOKEN ) ); return prettyString; } /** * {@inheritDoc} * * @see Entity#getParserOffset() */ public ParserOffset getParserOffset () { return this.parserOffset; } /** * {@inheritDoc} * * @see LeafNode#getPosition() */ @Override public int getPosition () { return this.position; } /** * {@inheritDoc} * * @see RegexNode#getRightChildrenCount() */ @Override public int getRightChildrenCount () { return 0; } /** * {@inheritDoc} * * @see RegexNode#isInCoreSyntax() */ @Override public boolean isInCoreSyntax () { return true; } /** * {@inheritDoc} * * @see RegexNode#nullable() */ @Override public boolean nullable () { return false; } /** * {@inheritDoc} * * @see PrettyPrintable#removePrettyStringChangedListener(de.unisiegen.gtitool.core.entities.listener.PrettyStringChangedListener) */ public void removePrettyStringChangedListener ( PrettyStringChangedListener listener ) { this.listenerList.remove ( PrettyStringChangedListener.class, listener ); } /** * {@inheritDoc} * * @see Entity#setParserOffset(ParserOffset) */ public void setParserOffset ( ParserOffset parserOffset ) { this.parserOffset = parserOffset; } /** * {@inheritDoc} * * @see LeafNode#setPosition(int) */ @Override public void setPosition ( int position ) { this.position = position; } /** * {@inheritDoc} * * @see RegexNode#toCoreSyntax(boolean) */ @Override public RegexNode toCoreSyntax ( @SuppressWarnings ( "unused" ) boolean withCharacterClasses ) { return this; } /** * {@inheritDoc} * * @see PrettyPrintable#toPrettyString() */ public PrettyString toPrettyString () { PrettyString string = new PrettyString (); string.add ( ( new PrettyToken ( this.name, Style.TOKEN ) ) ); return string; } /** * {@inheritDoc} * * @see Object#toString() */ @Override public String toString () { return this.name; } }