Package abstrasy.interpreter

Examples of abstrasy.interpreter.InterpreterException


            }
            catch (ArithmeticException ex) {
                // prévoir la gestion de l'exception division par zéro sur exception seulement.
                // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
                if (ex.getMessage().equals("Division by zero")) {
                    throw new InterpreterException(StdErrors.Division_by_zero);
                }
                else {
                    throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
                }
            }
        }
        /*
         * s'il y a au moins un argument, on considère la forme (- n [args...])...
         */
        BigInteger r = number.get();
        try {
            for (int i = 1; i < asize; )
                r = r.divide(_getArg_(startAt, i++));
        }
        catch (ArithmeticException ex) {
            // prévoir la gestion de l'exception division par zéro sur exception seulement.
            // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
            if (ex.getMessage().equals("Division by zero")) {
                throw new InterpreterException(StdErrors.Division_by_zero);
            }
            else {
                throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
            }
        }
        return Node.createExternal(new External_Integer(r));
    }
View Full Code Here


            }
            catch (ArithmeticException ex) {
                // prévoir la gestion de l'exception division par zéro sur exception seulement.
                // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
                if (ex.getMessage().equals("Division by zero")) {
                    throw new InterpreterException(StdErrors.Division_by_zero);
                }
                else {
                    throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
                }
            }
            return null;
        }
        /*
         * s'il y a au moins un argument, on considère la forme (- n [args...])...
         */
        try {
            BigInteger[] v = new BigInteger[startAt.size() - 1];
            for (int i = 1; i < startAt.size(); i++) {
                v[i - 1] = _getArg_(startAt, i);
            }
            BigInteger old_r;
            BigInteger r;
            do {
                old_r = number.get();
                r = old_r;
                for (int i = 0; i < v.length; i++)
                    r = r.divide(v[i]);
            }
            while (!number.compareAndSet(old_r, r));
        }
        catch (ArithmeticException ex) {
            // prévoir la gestion de l'exception division par zéro sur exception seulement.
            // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
            if (ex.getMessage().equals("Division by zero")) {
                throw new InterpreterException(StdErrors.Division_by_zero);
            }
            else {
                throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
            }
        }
        return null;
    }
View Full Code Here

            }
            catch (ArithmeticException ex) {
                // prévoir la gestion de l'exception division par zéro sur exception seulement.
                // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
                if (ex.getMessage().equals("Division by zero")) {
                    throw new InterpreterException(StdErrors.Division_by_zero);
                }
                else {
                    throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
                }
            }

        }
        /*
         * s'il y a au moins un argument, on considère la forme (- n [args...])...
         */
        try {
            BigInteger[] v = new BigInteger[startAt.size() - 1];
            for (int i = 1; i < startAt.size(); i++) {
                v[i - 1] = _getArg_(startAt, i);
            }
            BigInteger old_r;
            BigInteger r;
            do {
                old_r = number.get();
                r = old_r;
                for (int i = 0; i < v.length; i++)
                    r = r.divide(v[i]);
            }
            while (!number.compareAndSet(old_r, r));
            return Node.createExternal(new External_Integer(old_r));
        }
        catch (ArithmeticException ex) {
            // prévoir la gestion de l'exception division par zéro sur exception seulement.
            // c'est plus rapide car on n'a pas besoin de tester la valeur à chaque fois.
            if (ex.getMessage().equals("Division by zero")) {
                throw new InterpreterException(StdErrors.Division_by_zero);
            }
            else {
                throw new InterpreterException(StdErrors.extend(StdErrors.Arithmetic_error, ex.getMessage()));
            }
        }
    }
View Full Code Here

     * @return old
     * @throws InterpreterException
     */
    public static final Node swap(Node node) throws InterpreterException {
        if (node == null)
            throw new InterpreterException(StdErrors.Internal_error);
        Interpreter interpreter = Interpreter.mySelf();
        Node pred = interpreter.getRoot();
        interpreter.setRoot(node);
        return pred;
    }
View Full Code Here

    public static final Node get() throws InterpreterException {
        Node res = Interpreter.mySelf().getRoot();
        if (res != null)
            return res.requireReadLockAccess();
        else
            throw new InterpreterException(StdErrors.Symbol_not_defined);
    }
View Full Code Here

    public Node external_mutator_open(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(3);
        SELF.require_SELF_mutable();
        if (inUse) {
            throw new InterpreterException(StdErrors.extend(StdErrors.Already_used, "File already open"));
        }
        file = new File(startAt.getSubNode(1, Node.TYPE_STRING).getString());
        mode = startAt.getSubNode(2, Node.TYPE_STRING).getString().toLowerCase().trim();
        if(mode.equals("r")||mode.equals("rw")||mode.equals("rws")||mode.equals("rwd")){
            raf=new RandomAccessFile(file,mode);
            inUse = true;
        }
        else{
            throw new InterpreterException(StdErrors.extend(StdErrors.Invalid_parameter, "Mode not supported"));
        }
        return null;
    }
View Full Code Here

    public Node external_mutator_set_length(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(2);
        SELF.require_SELF_mutable();
        long offset = (long)startAt.getSubNode(1, Node.TYPE_NUMBER).getNumber();
        if(offset<0){
            throw new InterpreterException(StdErrors.extend(StdErrors.Out_of_range,"length:"+offset));
        }
        raf.setLength(offset);
        /*
         * Sets the length of this file.
         * If the present length of the file as returned by the length method is greater than the newLength
View Full Code Here

    public Node external_mutator_set_offset(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(2);
        SELF.require_SELF_mutable();
        long offset = (long)startAt.getSubNode(1, Node.TYPE_NUMBER).getNumber();
        if(offset<0){
            throw new InterpreterException(StdErrors.extend(StdErrors.Out_of_range,"offset:"+offset));
        }
        raf.seek(offset);
        return null;
    }
View Full Code Here

        binded.requireNodeType(Node.VTYPE_DELEGABLE);
        Node bloop = binded;
        while (bloop != null && (bloop.isNamespace() || bloop.isScope())) {
            Heap bloop_h = ((Heap) bloop.getExternal());
            if (isItMe(bloop_h))
                throw new InterpreterException(StdErrors.Circulare_reference);
            bloop = bloop_h.extended;
        }
        this.extended = binded;
    }
View Full Code Here

     */


    final static private void require_delegable_(Node node) throws InterpreterException {
        if (node == null)
            throw new InterpreterException(StdErrors.Symbol_not_defined);
        else if (!node.isDelegable()) //System.out.println("*** "+ node);
            throw new InterpreterException(StdErrors.extend(StdErrors.Delegable_object_required, node.typeOfNode()));
    }
View Full Code Here

TOP

Related Classes of abstrasy.interpreter.InterpreterException

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.