Example #1
0
        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);
        }
Example #2
0
        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));
 }