public void parseProgram(int eIndex, string prg, string [] actions)
    {
        int nActs = 0;

        char[] lineDelimiters  = { '\n' };
        char[] spaceSeparators = { '|', '\n' };

        string[] instructions = prg.Split(lineDelimiters);

        nActs = (instructions.Length) - 1;

        programs [eIndex] = new ListString2D();
        action [eIndex]   = new ListInt1D();

        for (int i = 0; i < nActs; ++i)
        {
            ListString1D newInstruction = new ListString1D();
            string[]     instrParams    = instructions [i].Split(spaceSeparators);

            newInstruction.theList.AddRange(instrParams);

            programs [eIndex].theList.Add(newInstruction);

            if ((instructionColor != null) && (eIndex < instructionColor.Count))
            {
                instructionColor [eIndex].theList.Add(-1);
            }

            addAction(eIndex);
            setAction(eIndex, i, indexFromString(actions, instrParams [0]));
        }
    }
    public void _wm_GetConver()
    {
        WisdominiObject wisObj  = currentConver.GetComponent <WisdominiObject> ();
        ListString2D    newProg = wisObj.programs [0];

        programs        = new List <ListString2D> ();
        currentProgram  = null;
        programPointer_ = new List <int> ();
        programPointer_.Add(0);
        waitingForAnswer  = new List <bool> ();
        eventNamesInOrder = new List <string> ();
        delayTime         = new List <float> ();
        delayTime.Add(0.0f);
        isProgramRunning = new List <bool> ();
        isProgramRunning.Add(false);
        waitingForAnswer = new List <bool> ();
        waitingForAnswer.Add(false);
        programStacks         = new List <Stack> ();
        programStacksPointers = new List <Stack> ();
        instructionColor      = new List <ListInt1D> ();   // a color for each instruction of each program
        programIsWaitingForActionToComplete = new List <bool> ();
        programIsWaitingForActionToComplete.Add(false);
        programPointer = 0;
        programs.Add(newProg);
        Stack newStack = new Stack();

        programStacks.Add(newStack);
        Stack newProgramIndexStack = new Stack();

        programStacksPointers.Add(newProgramIndexStack);
        originalPrograms.Add(programs[0]);
        this.startProgram(0);
    }