package pl.edu.amu.wmi.daut.re; import java.util.List; import pl.edu.amu.wmi.daut.base.AutomatonSpecification; import pl.edu.amu.wmi.daut.base.NaiveAutomatonSpecification; import pl.edu.amu.wmi.daut.base.CharClassTransitionLabel; import pl.edu.amu.wmi.daut.base.State; /** * Klasa, reprezentująca klasę znaków z wyrażeń regularnych. */ public class CharClassOperator extends NullaryRegexpOperator { private String charClass; /** * Konstruktor, pobiera pożądaną klasę znaków. */ public CharClassOperator(String c) { this.charClass = c; } @Override public AutomatonSpecification createFixedAutomaton() { AutomatonSpecification automaton = new NaiveAutomatonSpecification(); State q0 = automaton.addState(); State q1 = automaton.addState(); automaton.addTransition(q0, q1, new CharClassTransitionLabel(charClass)); automaton.markAsInitial(q0); automaton.markAsFinal(q1); return automaton; } /** * Fabryka operatora. */ public static class Factory extends NullaryRegexpOperatorFactory { @Override public int numberOfParams() { return 1; } protected RegexpOperator doCreateOperator(List<String> params) { return new CharClassOperator(params.get(0)); } } /** * Metoda toString(). */ @Override public String toString() { return "CHAR_CLASS_" + charClass; } }