Package abstrasy

Examples of abstrasy.StaticHeap


        Node enode = startAt.getSubNode(3, Node.TYPE_LAZY);
        startAt.isGoodArgsCnt(4);
        Node xnode = null;
        Node rnode = null;
        Interpreter interpreter = Interpreter.mySelf();
        StaticHeap global = interpreter.getGLOBAL();
        boolean oldCanLoop = interpreter.isCanLoop();
        boolean oldInLoop = interpreter.isInLoop();
        interpreter.setCanLoop(true);
        interpreter.setInLoop(true);

        try {

            if (tcode.isPCode(PCoder.PC_DO)) {

                // closure pour le corps
                global.push();
                Heap myClosure = global.current();

                /*
                 * Correction du 10 mai 2011:
                 * =========================
                 *    Les boucles du type do{...} s'arrête dès qu'un résultat est retourné. Cela ne signifie
                 *    bien entendu pas que la condition qui permet l'itération n'est pas vérifiée. Toutefois,
                 *    comme les boucle du type do{...} ne peuvent retourner qu'un seul résultat, il est inutile
                 *    de relancer l'itération suivante ddès qu'un résultat est fourni. Ainsi, pour permettre
                 *    de continuer la boucle, il est possible de placer le résultat dans une variable et non de
                 *    la retourner directement comme résultat.
                 *
                 */
                while (xnode == null && interpreter.isCanIterate() && xPC_ConditionX(myClosure, cnode)) {
                    _clear_closure_(myClosure);
                    xnode = enode.exec(true);
                }
                global.pull();

            }
            else if (tcode.isPCode(PCoder.PC_LIST)) {
                /**
                 * boucle génératrice de listes.
                 *
                 * respecte la protection des listes finale.
                 *
                 * -> résultat jamais final.
                 *
                 */
                xnode = Node.createCList();
                //

                // closure pour le corps
                global.push();
                Heap myClosure = global.current();
                while (interpreter.isCanIterate() && xPC_ConditionX(myClosure, cnode)) {
                    _clear_closure_(myClosure);
                    rnode = enode.exec(true);
                    if (rnode != null)
                        xnode.addElement(rnode.secure());
                }
                global.pull();

            }
            else
                // erreur de syntaxe.
                throw new InterpreterException(StdErrors.Syntax_error);
View Full Code Here


         */
        Node res = null;

        Interpreter myself = Interpreter.mySelf();

        StaticHeap global = myself.getGLOBAL();

        /*
         * Permet de repporter les exceptions
         */
        Exception reportExcep = null;

        /*
         * ouverture de la file d'attente
         */
       
        LinkedList<Node> old_queue = myself.pendingMsg_OPEN();
       
        /*
         * Nouveau contexte...
         */
        global.push();
       
        try {
            res = xnode.exec(true);
        }
        catch (Exception e) {
            reportExcep = e;
        }

        /*
         * restaurer le contexte
         */
        global.pull();
       
        /*
         * fermeture de la file d'attente dans tous les cas...
         */
        myself.pendingMsg_CLOSE(old_queue);
View Full Code Here

TOP

Related Classes of abstrasy.StaticHeap

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.