Package abstrasy

Examples of abstrasy.Heap$DynamicConstants


    private static Node _TK_ = null;
  
    public Node external_get_TK(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(1);
        if (_TK_ == null) {
            Heap tkh = new Heap();
   
            tkh.put("HOUR", new Node(K_HOUR));
            tkh.put("MINUTE", new Node(K_MINUTE));
            tkh.put("SECOND", new Node(K_SECOND));
            tkh.put("MILLIS", new Node(K_MILLIS));
            tkh.put("DAY", new Node(K_DAY));
            tkh.put("MONTH", new Node(K_MONTH));
            tkh.put("YEAR", new Node(K_YEAR));

            tkh.put("DATE-SHORT-FORMAT", new Node(DATE_SHORT_FORMAT));
            tkh.put("DATE-LONG-FORMAT", new Node(DATE_LONG_FORMAT));
            tkh.put("TIME-SHORT-FORMAT", new Node(TIME_SHORT_FORMAT));
            tkh.put("TIME-DEFAULT-FORMAT", new Node(TIME_DEFAULT_FORMAT));
            tkh.put("TIME-LONG-FORMAT", new Node(TIME_LONG_FORMAT));
            tkh.put("TIME-STAMP-FORMAT", new Node(TIME_STAMP_FORMAT));
            tkh.put("DATE-STAMP-FORMAT", new Node(DATE_STAMP_FORMAT));
            tkh.put("DATETIME-STAMP-FORMAT", new Node(DATETIME_STAMP_FORMAT));
            tkh.put("MONTH-STAMP-FORMAT", new Node(MONTH_STAMP_FORMAT));
            tkh.put("YEAR-STAMP-FORMAT", new Node(YEAR_STAMP_FORMAT));
   
            tkh.put("RFC1123-STAMP-FORMAT", new Node(RFC1123_STAMP_FORMAT));
            tkh.put("RFC1036-STAMP-FORMAT", new Node(RFC1036_STAMP_FORMAT));
   
            tkh.put("ASCTIME-STAMP-FORMAT", new Node(ASCTIME_STAMP_FORMAT));
   
            _TK_ = new Node(tkh);
  }
        return _TK_;
  }
View Full Code Here


                 * (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());
View Full Code Here

        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);
View Full Code Here

                 * (foreach-combin [liste] k 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() && combinaisons.hasNext() && xnode==null) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(combinaisons.getNext());
                    argv_h.put(PCoder.ARGV, argv);
                    xnode = enode.exec(true);
                }

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

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-combin [liste] k 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() && combinaisons.hasNext()) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(combinaisons.getNext());
View Full Code Here

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

                // closure pour le corps
                abstrasy.Heap myClosure = new Heap();
                global.push(myClosure);
               
                /*
                 * 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
                abstrasy.Heap myClosure = new Heap();

                global.push(myClosure);
                while (interpreter.isCanIterate() && !xPC_ConditionX(myClosure, cnode)) {
                     _clear_closure_(myClosure);
                    rnode = enode.exec(true);
View Full Code Here

                 * (foreach-perm [liste] 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() && permut.hasNext() && xnode==null) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(permut.getNext());
                    argv_h.put(PCoder.ARGV, argv);
                    xnode = enode.exec(true);
                }

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

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-perm [liste] 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() && permut.hasNext()) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(permut.getNext());
View Full Code Here

                 * (foreach-circ [liste] 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() && permut.hasNext() && xnode==null) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(permut.getNext());
                    argv_h.put(PCoder.ARGV, argv);
                    xnode = enode.exec(true);
                }

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

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-circ [liste] 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() && permut.hasNext()) {
                    _clear_closure_(local);
                    argv = Node.createCList();
                    argv.setArray(permut.getNext());
View Full Code Here

                 * (foreach-col [[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 espace pour argv...

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-col [[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());
View Full Code Here

                 * (foreach-col [[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 exclusif pour argv.

            }
            else if (btype.isPCode(PCoder.PC_LIST)) {
                /**
                 * (foreach-col [[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());
View Full Code Here

       
        // longueur de l'expression...
        int size = startAt.size();

        // fermeture...
        Heap fermeture = null;

        // liste des règles
        ArrayList<Rule> rules = new ArrayList<Rule>();

        // résultat...
        Node res = null;

        //
        Interpreter interpreter = Interpreter.mySelf();

        /*
         * récupération de la liste des règles
         */
        Node liste_r = startAt.getSubNode(1, Node.TYPE_CLIST);

        /*
         * rechercher la description de la fermeture s'il y en a une...
         */
        Node with_cache = null;
        if (size == 4) {
            startAt.requirePCode(2,PCoder.PC_WITH);
            /*
             * il y a une fermeture...
             */
            with_cache = startAt.getSubNode(3, Node.TYPE_LAZY);
            fermeture = new Heap();
        }
    
           
        /**
         * protection du système...
         */
        BaseContextSnapshot contextSnapShot = new BaseContextSnapshot(interpreter);


        /**
         * boucle principale...
         */

        interpreter.setCanLoop(true);
        interpreter.setInLoop(true);

        Exception allExcep = null;
        try {

            /**
             * Lecture des règles...
             *
             */
            for (int i = 0; i < liste_r.size(); i++) {
                Node elem_r = liste_r.getSubNode(i, Node.TYPE_QEXPR);
                addRules(rules, elem_r);
            }

            /**
             * On va commencé la boucle d'inférence...
             */
            // placer la fermeture s'il y en a une...
            if(fermeture!=null){
                Heap.push(fermeture);
                with_cache.exec(true);
            }
            // préparer le heap local pour le traitement...
            Heap.push();
            Heap local = Heap.current();

            // préparer la boucle d'inférence...
            int verif;
            do {
                verif = 0;
View Full Code Here

TOP

Related Classes of abstrasy.Heap$DynamicConstants

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.