예제 #1
0
        public Node AddToken(RegularExpressionToken token)
        {
            var newEnd = CreateNewNode();

            End.AddAdjacent(newEnd, token);
            End = newEnd;

            return(End);
        }
예제 #2
0
        public IGraph AddSequence(IGraph sequenceGraph)
        {
            if (sequenceGraph == null)
            {
                return(this);
            }
            End.AddAdjacent(sequenceGraph.Root, RegularExpressionToken.Blank);
            End = sequenceGraph.End;

            return(this);
        }
예제 #3
0
        public void RepeatPlus()
        {
            var newRoot = CreateNewNode();

            newRoot.AddAdjacent(Root, RegularExpressionToken.Blank);
            End.AddAdjacent(Root, RegularExpressionToken.Blank, true);
            Root = newRoot;

            var newEnd = CreateNewNode();

            End.AddAdjacent(newEnd, RegularExpressionToken.Blank);

            End = newEnd;
        }
예제 #4
0
        public IGraph AddChoice(IGraph concatGraph)
        {
            var newRoot = CreateNewNode();

            newRoot.AddAdjacent(Root, RegularExpressionToken.Blank);
            newRoot.AddAdjacent(concatGraph.Root, RegularExpressionToken.Blank);
            Root = newRoot;

            var newEnd = CreateNewNode();

            End.AddAdjacent(newEnd, RegularExpressionToken.Blank);
            concatGraph.End.AddAdjacent(newEnd, RegularExpressionToken.Blank);

            End = newEnd;

            return(this);
        }