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;
/**
*
* Klasa RangeEscapeSignOperator reprezentująca zakres znaków,
* w którym operatory traktujemy jak normalne znaki.
*/
public class RangeEscapeSignOperator extends NullaryRegexpOperator {
private String s;
@Override
public AutomatonSpecification createFixedAutomaton() {
AutomatonSpecification automaton = new NaiveAutomatonSpecification();
automaton.markAsInitial(automaton.addState());
automaton.markAsFinal(automaton.addTransitionSequence(automaton.getInitialState(), this.s));
return automaton;
}
/**
* Konstruktor klasy.
* @param s - napis, w którym operatory nie mają być interpretowane
*/
public RangeEscapeSignOperator(String s) {
this.setString(s);
}
private void setString(String str) {
this.s = str;
}
/**
* Fabryka operatora.
*/
public static class Factory extends NullaryRegexpOperatorFactory {
@Override
public int numberOfParams() {
return 1;
}
@Override
protected RegexpOperator doCreateOperator(List<String> params) {
return new RangeEscapeSignOperator(params.get(0));
}
}
}