예제 #1
0
파일: Compile.cs 프로젝트: Robson10/UML-2
        public static string TransformBlockToCode(ListCanvasBlocks blocks, ListCanvasLines lines)
        {
            string code = "";

            try
            {
                blocks.Sort((x, y) => x.ID.CompareTo(y.ID));
                var indexBegin = blocks.FindIndex(x => x.Shape == Helper.Shape.Start);
                int endId      = lines.Find(x => x.BeginId == blocks[indexBegin].ID).EndId;
                StartToCode(ref code, blocks[indexBegin], endId);
                for (int i = 0; i < blocks.Count; i++)
                {
                    if (blocks[i].Shape == Helper.Shape.Decision)
                    {
                        DecisionToCode(ref code, blocks[i], ref lines);
                    }
                    else if (blocks[i].Shape != Helper.Shape.End && blocks[i].Shape != Helper.Shape.Start)
                    {
                        endId = lines.Find(x => x.BeginId == blocks[i].ID).EndId;
                        InputExecutionToCode(ref code, blocks[i], endId);
                    }
                    else if (blocks[i].Shape == Helper.Shape.End)
                    {
                        EndToCode(ref code, blocks[i].ID);
                    }
                    code += Environment.NewLine;
                }
                FinishCode(ref code);
                Results.Text = code;
            }
            catch
            {
            }
            return(code);
        }
예제 #2
0
파일: Compile.cs 프로젝트: Robson10/UML-2
 private static void DecisionToCode(ref string code, MyBlock block, ref ListCanvasLines lines)
 {
     code += "          case(" + block.ID + "):" + Environment.NewLine +
             "               " + block.Code + Environment.NewLine +
             //"               {" + Environment.NewLine +
             "                   ID=" + lines.Find(x => x.BeginId == block.ID && x.IsTrue).EndId + ";" +
             Environment.NewLine +
             //"               }" + Environment.NewLine +
             "               else" + Environment.NewLine +
             //"               {" + Environment.NewLine +
             "                   ID=" + lines.Find(x => x.BeginId == block.ID && !x.IsTrue).EndId + ";" +
             Environment.NewLine +
             //"               }" + Environment.NewLine +
             "              break;" + Environment.NewLine;
 }