Exemple #1
0
        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);
            }
        }
Exemple #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);
            }
        }
Exemple #3
0
 public override DTDAutomata TryStartElement(string name)
 {
     return(left.TryStartElement(name).MakeChoice(
                right.TryStartElement(name)));
 }