package net.sf.orcc.frontend.schedule; import java.util.HashSet; import java.util.Set; import net.sf.orcc.df.Tag; import org.jgrapht.graph.DefaultDirectedGraph; public class Automaton extends DefaultDirectedGraph<Integer, SimpleEdge> { private static final long serialVersionUID = 1L; private Set<Tag> alphabet; private Set<Integer> finalStates; private Integer initialState; public Automaton(Class<? extends SimpleEdge> edgeClass) { super(edgeClass); initialState = -1; finalStates = new HashSet<Integer>(); alphabet = new HashSet<Tag>(); } public boolean addFinalState(Integer s) { return finalStates.add(s); } public Set<Tag> getAlphabet() { return alphabet; } public Set<Integer> getFinalStates() { return finalStates; } public Integer getInitialState() { return initialState; } public boolean registerLetter(Tag letter) { return alphabet.add(letter); } public void setAlphabet(Set<Tag> newAlphabet) { alphabet = newAlphabet; } public void setInitialState(Integer s) { initialState = s; } }