CreateNewVertex() public method

Creates a new vertex with a name equal to the current length of the vertex list
public CreateNewVertex ( ) : BaseVertex
return BaseVertex
Beispiel #1
0
        static void Main()
        {
            string epsilon = "0";
            Graph g = new Graph();

            //create vertices
            /*
            BaseVertex one = g.CreateNewVertex("0",false);
            BaseVertex two = g.CreateNewVertex("1",false);
            BaseVertex three = g.CreateNewVertex("2",false);
            */

            //BaseVertex four = g.CreateNewVertex("4",false);
            //BaseVertex five = g.CreateNewVertex("5",false);
            /*
            one.AddConnection(two, "a");

            two.AddConnection(two, "a");
            two.AddConnection(three, epsilon);

            three.AddConnection(three, "b");
            three.AddConnection(two, "a");
            three.AddConnection(one, "a");
            */

            BaseVertex v0 = g.CreateNewVertex("0", false);
            BaseVertex v1 = g.CreateNewVertex("1", true);
            BaseVertex v2 = g.CreateNewVertex("2", false);

            v0.AddConnection(v1, "a");

            v1.AddConnection(v1, "a");
            v1.AddConnection(v2, epsilon);

            v2.AddConnection(v2, "b");
            v2.AddConnection(v0, "a");
            v2.AddConnection(v1, "a");

            String nfaDOT = g.ToDOT("NFA");

            Converter c = new Converter(g,epsilon);

            //Console.WriteLine();
            c.convertToDFA(v0);
            //String dfaDOT = c.table.createGraph().ToDOT("DFA");
            //Console.WriteLine("Done");
            //Console.ReadLine();
        }
        public void AllCharsTest()
        {
            RDMain inst = this.testInst;
            PrivateObject param0 = new PrivateObject(inst); // TODO: Initialize to an appropriate value
            RDMain_Accessor target = new RDMain_Accessor(param0); // TODO: Initialize to an appropriate value
            target.tokenBuffer = ".";

            target.CharClass();

            Graph verificationGraph = new Graph();

            BaseVertex start = verificationGraph.StartVertex;
            start.Accepting = false;
            StringBuilder allChar = new StringBuilder();
            for (int i = 32; i <= 126; i++)
            {
                allChar.Append((char)i);
            }
            string trans = allChar.ToString();
            BaseVertex end = verificationGraph.CreateNewVertex(true);
            start.AddConnection(end, trans);

            Graph generated = target.lineGraph;

            Assert.AreEqual<Graph>(verificationGraph, generated, "Graphs are not equal.  \nExpected:\n\n{0}\n\nReceived:\n\n{1}",
                verificationGraph.ToDOT("Expected"), generated.ToDOT("Generated"));
            Assert.AreEqual<int>(target.tokenBuffer.Length, target.tokenPosition, "Token position is not in correct location. Expected {0}, Actual {1}",
                1, target.tokenPosition);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            Graph graph = new Graph();
            BaseVertex v1 = graph.CreateNewVertex("node1");
            BaseVertex v2 = graph.CreateNewVertex("node2");
            BaseVertex v3 = graph.CreateNewVertex("node3");
            BaseVertex v4 = graph.CreateNewVertex("node4");
            v1.Connections.Add(new Edge(v1, "", "a"));
            v1.Connections.Add(new Edge(v2, "", "a"));
            v1.Connections.Add(new Edge(v3, "", "a"));
            v1.Connections.Add(new Edge(v4, "", "a"));

            v1.Connections.Add(new Edge(v2, "", "b"));
            v1.Connections.Add(new Edge(v4, "", "b"));

            String s = graph.ToDOT("testgraph");
            Console.WriteLine(s);
        }
        public Graph createGraph()
        {
            normalizeNames();

            Graph g = new Graph();

            BaseVertex[] verts = new BaseVertex[rowNames.Count];
            Dictionary<String, BaseVertex> vertexTable = new Dictionary<string,BaseVertex>();

            for (int x = 0; x < rowNames.Count; x++)
            {
                bool accepting = false;
                foreach (BaseVertex v in ((VertexSet)rowNames[x]).vertices)
                {
                    if (v.Accepting)
                        accepting = true;
                }
                BaseVertex vertex = g.CreateNewVertex(((VertexSet)rowNames[x]).ToDOTString(), accepting);
                vertexTable.Add(vertex.Name, vertex);
                verts[x] = vertex;
            }

            //iterate over vertices
            for (int i = 0; i < rowNames.Count; i++)
            {
                //iterate over alphabet
                for (int x = 0; x < columnNames.Count; x++)
                {
                    String toVertexName = ((VertexSet)table[x][i]).ToDOTString();
                    verts[i].AddConnection(vertexTable[toVertexName], columnNames[x].ToString());
                }
            }

            g.StartVertex = g.Vertices[1];

            return g;
        }
        public void SimpleBracketZeroTest()
        {
            RDMain inst = this.testInst;
            PrivateObject param0 = new PrivateObject(inst); // TODO: Initialize to an appropriate value
            RDMain_Accessor target = new RDMain_Accessor(param0); // TODO: Initialize to an appropriate value
            target.tokenBuffer = "[0]";

            target.CharClass();

            Graph verificationGraph = new Graph();

            BaseVertex start = verificationGraph.StartVertex;
            start.Accepting = false;

            BaseVertex newV = verificationGraph.CreateNewVertex(true);
            start.AddConnection(newV, "0");

            Graph generated = target.lineGraph;

            Assert.AreEqual<Graph>(verificationGraph, generated, "Graphs are not equal.  \nExpected:\n\n{0}\n\nReceived:\n\n{1}",
                verificationGraph.ToDOT("Expected"), generated.ToDOT("Generated"));
            Assert.AreEqual<int>(target.tokenBuffer.Length, target.tokenPosition, "Token position is not in correct location. Expected {0}, Actual {1}",
                1, target.tokenPosition);
        }
        public void FullAlphaNumRangeTest()
        {
            RDMain inst = this.testInst;
            PrivateObject param0 = new PrivateObject(inst); // TODO: Initialize to an appropriate value
            RDMain_Accessor target = new RDMain_Accessor(param0); // TODO: Initialize to an appropriate value
            target.tokenBuffer = "[a-zA-Z0-9]";

            target.CharClass();

            Graph verificationGraph = new Graph();

            BaseVertex start = verificationGraph.StartVertex;
            start.Accepting = false;

            BaseVertex newV = verificationGraph.CreateNewVertex(true);
            start.AddConnection(newV, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");

            Graph generated = target.lineGraph;

            Assert.AreEqual<Graph>(verificationGraph, generated, "Graphs are not equal.  \nExpected:\n\n{0}\n\nReceived:\n\n{1}",
                verificationGraph.ToDOT("Expected"), generated.ToDOT("Generated"));
            Assert.AreEqual<int>(target.tokenBuffer.Length, target.tokenPosition, "Token position is not in correct location. Expected {0}, Actual {1}",
                1, target.tokenPosition);
        }
        public void DefinedCharClassExclusionTest()
        {
            RDMain inst = this.testInst;
            PrivateObject param0 = new PrivateObject(inst); // TODO: Initialize to an appropriate value
            RDMain_Accessor target = new RDMain_Accessor(param0); // TODO: Initialize to an appropriate value
            target.tokenBuffer = "[^0] IN $DIGIT";
            target.characterClasses["DIGIT"] = new Graph();
            BaseVertex v = target.characterClasses["DIGIT"].CreateNewVertex(true);
            target.characterClasses["DIGIT"].StartVertex.Accepting = false;
            target.characterClasses["DIGIT"].StartVertex.AddConnection(v, "0123456789");

            target.Regexp();

            Graph verificationGraph = new Graph();

            BaseVertex start = verificationGraph.StartVertex;
            start.Accepting = false;
            BaseVertex end = verificationGraph.CreateNewVertex(true);
            start.AddConnection(end, "123456789");

            Graph generated = target.lineGraph;

            Assert.AreEqual<Graph>(verificationGraph, generated, "Graphs are not equal.  \nExpected:\n\n{0}\n\nReceived:\n\n{1}",
                verificationGraph.ToDOT("Expected"), generated.ToDOT("Generated"));
            Assert.AreEqual<int>(target.tokenBuffer.Length, target.tokenPosition, "Token position is not in correct location. Expected {0}, Actual {1}",
                1, target.tokenPosition);
        }