Package abstrasy

Examples of abstrasy.Interpreter$PackageEntry


            });

            this.lockCaretPos();
            while (caretpos >= 0) {
                Interpreter myself = Interpreter.mySelf();
                Interpreter.getSemaphore().sleep(100);
                if (myself.isThreadRaising()) {
                    this.unlockCaretPos();
                    SwingUtilities.invokeLater(new Runnable() {

                        public void run() {
                            fout.setCaretColor(getBackground());
View Full Code Here


        //System.out.println("*f*");
        return this;
    }
   
    public SilentException() {
        Interpreter myself = Interpreter.mySelf();
        if (myself.getTimeOutTimer().isRunning()) {
            myself.getTimeOutTimer().stop();
        }
    }
View Full Code Here

        int verif = input.read(sbuff);
        if (verif != bsize) {
            return Node.createNothing();
        }
        String serial2str = new String(sbuff, "UTF-8");
        Interpreter interpreter = Interpreter.interpr_getNewChildInterpreter();
        interpreter.setSource(serial2str);
        interpreter.compile();
        return interpreter.execute();
    }
View Full Code Here

        int verif = input.read(sbuff);
        if (verif != bsize) {
            return Node.createNothing();
        }
        String serial2str = new String(Tools.decompress(sbuff), "UTF-8");
        Interpreter interpreter = Interpreter.interpr_getNewChildInterpreter();
        interpreter.setSource(serial2str);
        interpreter.compile();
        return interpreter.execute();
    }
View Full Code Here

         *
         */
       
        startAt.isGoodArgsCnt(1,3);
       
        Interpreter myself=Interpreter.mySelf();
       
        /**
         * Le programmeur devrait pouvoir utiliser tous les systèmes en même temps:
         * =======================================================================
         * - mutex permet de gérer l'exclusion mutuelle des processus.
View Full Code Here

        startAt.isGoodArgsCnt(4);
        String target = startAt.getSubNode(3, Node.TYPE_STRING).getString();
        startAt.requirePCode(2, PCoder.PC_TO);
        Node msg = startAt.getSubNode(1, Node.VTYPE_VALUABLE);
        InterpreterSemaphore sema = Interpreter.getSemaphore();
        Interpreter amie = sema.getThread(target);
        if (amie != null) {
            /**
             * un acteur peut s'envoyer un message à lui-même...
             *
             */
 
View Full Code Here

     * @throws Exception
     * @todo Implémenter cette méthode abstrasy.PCFx
     */
    public Node eval(Node startAt) throws Exception {
        startAt.isGoodArgsLength(false,2);
        Interpreter interpreter = Interpreter.mySelf();
        //Node rnode=null;
        //
        //System.out.println("Return getCallerSignature :" + interpreter.getCallerSignature());
        if ((!interpreter.isTerminalNode()) || interpreter.getCallerSignature() == 0)
            // il ne devrait pas y avoir de signature GUID = 0...
            // si c'est le cas, c'est que qu'aucune fonction n'a été appelée...
            throw new InterpreterException(StdErrors.Continue_misplaced);

        int arg_i=1;
        // récupérer le premier élément..
        Node r = startAt.getSubNode(arg_i++, Node.VTYPE_VALUABLE);
       
        //S'il s'agit d'une expression quotée, il ne peut pas y avoir d'autres éléments...
        if(r.getQType()==Node.TYPE_QEXPR){
            startAt.isGoodArgsCnt(2);
            r=r.deref().letQuoted(false);
        }
        else{
            // sinon... on construit une expression temporaire...
            r=new Node().append(r);
            while(arg_i<startAt.size())
                r.addElement(startAt.getSubNode(arg_i++, Node.VTYPE_VALUABLE));
            r.setDTrace(startAt.getDTrace());
        }
        try {
            Heap.setRETURN(r);
        }
        catch (Exception ex) {
            throw new InterpreterException(StdErrors.Return_register_error);
        }

        //

        if (interpreter.getBreakCode() != Interpreter.BREAKCODE_TAIL)
            interpreter.setBreakCode(Interpreter.BREAKCODE_RETURN);

        return null;
    }
View Full Code Here

     * @throws Exception
     * @todo Implémenter cette méthode abstrasy.PCFx
     */
    public Node eval(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(1);
        Interpreter interpreter = Interpreter.mySelf();
    if (!interpreter.isTerminalNode()){
      throw new InterpreterException(StdErrors.Retry_misplaced);
    }
       
        throw new RetryException(startAt);
      
View Full Code Here

        }   
        Diag row = new Diag(rings);
       
        Node btype = startAt.getSubNode(i++, Node.TYPE_PCODE);
        Node enode = startAt.getSubNode(i++, Node.TYPE_LAZY);
        Interpreter interpreter = Interpreter.mySelf();
        boolean oldCanLoop = interpreter.isCanLoop();
        boolean oldInLoop = interpreter.isInLoop();
        interpreter.setCanLoop(true);
        interpreter.setInLoop(true);

        try {
            if (btype.isPCode(PCoder.PC_DO)) {
                /**
                 * (foreach-diag [[l1]...[ln]] do {...})
                 */
                Node argv;

                Heap.push(); // nouvel espace local pour argv (exclusivment)
                Heap argv_h = Heap.current(); // optimisation du 09/03/2012
               
                Heap.push(); // nouvel espace local
                Heap local = Heap.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 (interpreter.isCanIterate() && row.hasNext() && xnode==null) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(row.getNext());
                    argv_h.put(PCoder.ARGV, argv);
                    xnode = enode.exec(true);
                }

                Heap.pull(); // supprimer l'espace local...
                Heap.pull(); // supprimer l'espace de noms argv...

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-diag [[l1]...[ln]] list{...})
                 */
                Node argv;
                xnode = Node.createCList();

                Heap.push(); // nouvel espace local pour argv (exclusivment)
                Heap argv_h = Heap.current(); // optimisation du 09/03/2012

                Heap.push(); // nouvel espace local
                Heap local = Heap.current();

                while (interpreter.isCanIterate() && row.hasNext()) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(row.getNext());
                    argv_h.put(PCoder.ARGV, argv);
                    rnode = enode.exec(true);
                    if (rnode != null)
                        xnode.addElement(rnode.secure());
                   
                }

                Heap.pull(); // supprimer l'espace local...
                Heap.pull(); // supprimer l'espace de noms pour argv...


            }
            else {
                // erreur de syntaxe.
                throw new InterpreterException(StdErrors.Syntax_error);
            }
        }
        catch (Exception ex) {
            interpreter.consumeBreakCode_onLoop();
            interpreter.setCanLoop(oldCanLoop);
            interpreter.setInLoop(oldInLoop);
            throw ex;
        }
        interpreter.consumeBreakCode_onLoop();
        interpreter.setCanLoop(oldCanLoop);
        interpreter.setInLoop(oldInLoop);
        return xnode;
    }
View Full Code Here

        }

        /**
         * préparer la gestion de la pile de manière terminale...
         */
        Interpreter interpreter = Interpreter.mySelf();
        StaticHeap global = interpreter.getGLOBAL();

        global.push();
        // retenir le heap de control
        Heap controlh=global.current();
       
        /**
         * si la forme compte un symbole...
         */
        if (snode != null)
            Heap.defv(snode.getSymbol(), xnode);



        /**
         * la section a besoin d'un contexte.
         */
        global.push();
        // on retient la référence du contexte courant...
        Heap local=global.current();

        /**
         * A toutes fins utiles, on sauve l'état de la pile...
         */
        BaseContextSnapshot contextSnapshot = new BaseContextSnapshot(interpreter);
       
       
        /**
         * Début de la boucle...
         */

        boolean retry = true;
        Node res = null;
   
        boolean oldInLoop=interpreter.isInLoop();

        while (retry) {
           
            if (anode!=null)
                controlh.put(PCoder.ARGV, anode);
            else
                controlh.put(PCoder.ARGV, Node.createCList());
           
            try {
                _clear_closure_(local);
                interpreter.setInLoop(true);
                res = xnode.exec(true);
                retry = false;
            }
            catch (RestartException retrex) {
                contextSnapshot.restore();
                Node experform = retrex.getPerform();
               
                if (experform == null)
                    retry = true;
               
                else if (xnode.equalsIdentity(experform))
                    retry = true;
           
                else {
                    retry = false;
                    throw retrex;
                }
               
                anode = retrex.getArgs();
               
               
            }
            catch (SilentException silex) {
                contextSnapshot.restore();
                retry = false;
                throw silex;
            }
            catch (Exception excep) {
                contextSnapshot.restore();
                retry = false;
                throw excep; // fait suivre l'exception...
            }
        }

        interpreter.setInLoop(oldInLoop);
       
        // heap local
        global.pull();
        // headp controlh
        global.pull();
View Full Code Here

TOP

Related Classes of abstrasy.Interpreter$PackageEntry

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.