예제 #1
0
        private static void ProccesParsedData(EntityHolder entityHolder)
        {
            List <DiagramFunction> allFunctions = entityHolder.Functions;
            List <DiagramNode>     allNodes     = entityHolder.DiagramNodes;
            List <DiagramLine>     allLines     = entityHolder.DiagramLines;

            for (int itter = 0; itter < allFunctions.Count; itter++)
            {
                if (allFunctions[itter].FunctionName == "drawLine")
                {
                    DiagramExecutor.CreateEdge(entityHolder.GetNodeByName(allFunctions[itter].ParametersNames[0]).Name,
                                               entityHolder.GetNodeByName(allFunctions[itter].ParametersNames[1]).Name,
                                               entityHolder.GetLineByName(allFunctions[itter].ParametersNames[2]));
                }
                else if (allFunctions[itter].FunctionName == "drawNode")
                {
                    DiagramExecutor.CreateNode(entityHolder.GetNodeByName(allFunctions[itter].ParametersNames[0]));
                }
            }
        }
예제 #2
0
        static void Main(string [] args)
        {
            Lexer lexer = new Lexer();

            char[] chars = File
                           .ReadAllText("D:\\Study\\Compilators\\TheoryOfCompilators\\Executer\\code.txt")
                           .ToCharArray();
            lexer.FindLex(chars);
            SyntaxParser          syntaxParser    = new SyntaxParser(lexer.AllLexes);
            List <StatementToken> listOfStatement = new List <StatementToken>();

            while (SyntaxParser._currentLex < lexer.AllLexes.Count)
            {
                listOfStatement.Add(new StatementToken().CreateToken());
            }
            SemanticAnalyzer.CheckDeclarationSemantic(listOfStatement);
            DiagramExecutor.Setup();
            ProccesParsedData(EntityHolder.GetInstance());
            DiagramExecutor.ShowDiagram();
        }