public override DTDAutomata TryStartElement(string name) { DTDAutomata dtdautomata = this.left.TryStartElement(name); DTDAutomata dtdautomata2 = this.right.TryStartElement(name); if (dtdautomata == base.Root.Invalid) { return((!this.left.Emptiable) ? dtdautomata : dtdautomata2); } DTDAutomata dtdautomata3 = dtdautomata.MakeSequence(this.right); if (this.left.Emptiable) { return(dtdautomata2.MakeChoice(dtdautomata3)); } return(dtdautomata3); }
public override DTDAutomata TryStartElement(string name) { DTDAutomata afterL = left.TryStartElement(name); DTDAutomata afterR = right.TryStartElement(name); if (afterL == Root.Invalid) { return((left.Emptiable) ? afterR : afterL); } // else DTDAutomata whenLeftConsumed = afterL.MakeSequence(right); if (left.Emptiable) { return(afterR.MakeChoice(whenLeftConsumed)); } else { return(whenLeftConsumed); } }
private DTDAutomata Choice(DTDAutomata l, DTDAutomata r) { return(l.MakeChoice(r)); }