1 import java.util.ArrayList; 2 import java.util.Map; 3 import java.util.Map.Entry; 4 5 /** 6 * Created by IntelliJ IDEA. 7 * Code By: Bo Li, libo@libo.me 8 * Date: 2009-12-10 9 * Time: 15:27:37 10 * CBIT, Roskilde University 11 */ 12 public class AltRe extends RegEx{ 13 RegEx re1, re2; 14 15 public AltRe(RegEx re1,RegEx re2){ 16 this.re1 = re1; 17 this.re2 = re2; 18 } 19 public NFA translate(NFA.stateName name){ 20 int s1 = name.next(); 21 int s2 = name.next(); 22 NFA nfa1 = re1.translate(name); 23 NFA nfa2 = re2.translate(name); 24 NFA nfa = new NFA(s1,s2); 25 for(Entry<Integer,ArrayList<transition>> entry : nfa1.trans.entrySet()) 26 for(transition t : entry.getValue()) 27 nfa.AddTransitions(t.previousState,t.nextState,t.lab); 28 for(Entry<Integer,ArrayList<transition>> entry : nfa2.trans.entrySet()) 29 for(transition t : entry.getValue()) 30 nfa.AddTransitions(t.previousState,t.nextState,t.lab); 31 nfa.AddTransitions(s1,nfa1.Start(),"lambda"); 32 nfa.AddTransitions(s1,nfa2.Start(),"lambda"); 33 nfa.AddTransitions(nfa1.Exit(),s2,"lambda"); 34 nfa.AddTransitions(nfa2.Exit(),s2,"lambda"); 35 return nfa; 36 } 37 public String toString(){ 38 return "("+re1.toString()+"+"+re2.toString()+")"; 39 } 40 } 41