public override DTDAutomata TryStartElement(string name) { DTDAutomata afterC = children.TryStartElement(name); if (afterC != Root.Invalid) { return(afterC.MakeSequence( Root.Empty.MakeChoice(this))); } else { return(Root.Invalid); } }
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); } }
public override DTDAutomata TryStartElement(string name) { return(left.TryStartElement(name).MakeChoice( right.TryStartElement(name))); }