DFAState.java 890 字节
Newer Older
xindoo's avatar
xindoo 已提交
1 2
package xyz.xindoo.re.dfa;

xindoo's avatar
update  
xindoo 已提交
3
import xyz.xindoo.re.common.State;
xindoo's avatar
update  
xindoo 已提交
4 5
import xyz.xindoo.re.common.StateType;

xindoo's avatar
xindoo 已提交
6 7 8 9 10
import java.util.HashSet;
import java.util.Set;

public class DFAState extends State {
    public Set<State> nfaStates = new HashSet<>();
11
    // 保存对应NFAState的id,一个DFAState可能是多个NFAState的集合,所以拼接成String
xindoo's avatar
xindoo 已提交
12 13
    private String allStateIds;
    public DFAState() {
xindoo's avatar
update  
xindoo 已提交
14
        this.stateType = StateType.GENERAL;
xindoo's avatar
xindoo 已提交
15 16 17 18 19
    }

    public DFAState(String allStateIds, Set<State> states) {
        this.allStateIds = allStateIds;
        this.nfaStates.addAll(states);
xindoo's avatar
xindoo 已提交
20

xindoo's avatar
xindoo 已提交
21
        for (State state : states) {
xindoo's avatar
update  
xindoo 已提交
22 23
            if (state.isEndState()) {  // 如果有任意节点是终止态,新建的DFA节点就是终止态
                this.stateType = StateType.END;
xindoo's avatar
xindoo 已提交
24 25 26
            }
        }
    }
27 28 29 30

    public String getAllStateIds() {
        return allStateIds;
    }
xindoo's avatar
xindoo 已提交
31
}