package pl.edu.amu.wmi.daut.re; import pl.edu.amu.wmi.daut.base.AutomatonSpecification; import pl.edu.amu.wmi.daut.base.State; import pl.edu.amu.wmi.daut.base.AnyTransitionLabel; import pl.edu.amu.wmi.daut.base.NaiveAutomatonSpecification; import java.util.List; /** * Reprezentuje dowolny napis, dowolnej długości (także pusty). * Odpowiada to wyrażeniu regularnego '.*'. */ public class AnyStringOperator extends NullaryRegexpOperator { @Override public final AutomatonSpecification createFixedAutomaton() { NaiveAutomatonSpecification spec = new NaiveAutomatonSpecification(); State q = spec.addState(); spec.markAsInitial(q); spec.markAsFinal(q); spec.addTransition(q, q, new AnyTransitionLabel()); return spec; } /** * Fabryka operatora. */ public static class Factory extends NullaryRegexpOperatorFactory { @Override public int numberOfParams() { return 0; } protected RegexpOperator doCreateOperator(List<String> params) { return new AnyStringOperator(); } } /** * Metoda toString(). */ @Override public String toString() { return "ANY_STRING"; } }