Esempio n. 1
0
            public void AddAction(AnsiCsiAction ansiCsiAction)
            {
                if (ansiCsiAction == null)
                {
                    throw new ArgumentNullException("ansiCsiAction");
                }

                AnsiCsiParserNode node = Root;

                foreach (Char ch in ansiCsiAction.AnsiCsiSequence)
                {
                    AnsiCsiParserNode childNode = node.Find(ch);
                    if (childNode == null)
                    {
                        node.AddChild(childNode = new AnsiCsiParserNode(ch));
                    }
                    node = childNode;

                    if (node.IsLeaf)
                    {
                        throw new InvalidOperationException("Unbalanced sequence lengthes");
                    }
                }
                node.Action = ansiCsiAction;
            }
Esempio n. 2
0
            public void AddChild(AnsiCsiParserNode node)
            {
                if (node == null)
                {
                    throw new ArgumentNullException("node");
                }

                Nodes.Add(node.Char, node);
            }
Esempio n. 3
0
 public void ParseChar(Char value)
 {
     if (IsSequenceDetected)
     {
         Current = Current.Find(value);
     }
     else
     {
         Current = value != AnsiTextWriter.Esc ? null  // Just to fasten preprocessing non-ansi sequences
             : Root.Find(value);
     }
 }
Esempio n. 4
0
 public void Reset()
 {
     Current = null;
 }
Esempio n. 5
0
 public AnsiCsiParser()
 {
     Root = new AnsiCsiParserNode(default(char));
 }