Changeset 8648


Ignore:
Timestamp:
02/27/05 20:00:49 (16 years ago)
Author:
piso
Message:

eval()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Lisp.java

    r8639 r8648  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: Lisp.java,v 1.322 2005-02-26 17:31:28 piso Exp $
     5 * $Id: Lisp.java,v 1.323 2005-02-27 20:00:49 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    178178            LispObject car = form.car();
    179179            if (car instanceof Symbol) {
    180                 LispObject obj = env.lookupFunctional(car);
     180                LispObject obj = env.lookupFunction(car);
    181181                if (obj instanceof Autoload) {
    182182                    Autoload autoload = (Autoload) obj;
     
    340340            LispObject first = obj.car();
    341341            if (first instanceof Symbol) {
    342                 LispObject fun = env.lookupFunctional(first);
     342                LispObject fun = env.lookupFunction(first);
     343                if (fun instanceof SpecialOperator) {
     344                    if (profiling)
     345                        if (!sampling)
     346                            fun.incrementCallCount();
     347                    // Don't eval args!
     348                    return fun.execute(obj.cdr(), env);
     349                }
     350                if (fun instanceof MacroObject)
     351                    return eval(macroexpand(obj, env, thread), env, thread);
     352                if (fun instanceof Autoload) {
     353                    Autoload autoload = (Autoload) fun;
     354                    autoload.load();
     355                    return eval(obj, env, thread);
     356                }
    343357                if (fun == null)
    344358                    return signal(new UndefinedFunction(first));
    345                 switch (fun.getFunctionalType()) {
    346                     case FTYPE_SPECIAL_OPERATOR: {
    347                         if (profiling)
    348                             if (!sampling)
    349                                 fun.incrementCallCount();
    350                         // Don't eval args!
    351                         return fun.execute(obj.cdr(), env);
    352                     }
    353                     case FTYPE_MACRO:
    354                         return eval(macroexpand(obj, env, thread), env, thread);
    355                     case FTYPE_AUTOLOAD: {
    356                         Autoload autoload = (Autoload) fun;
    357                         autoload.load();
    358                         return eval(obj, env, thread);
    359                     }
    360                     default:
    361                         return evalCall(fun, obj.cdr(), env, thread);
    362                 }
     359                return evalCall(fun, obj.cdr(), env, thread);
    363360            } else {
    364361                if (first.car() == Symbol.LAMBDA) {
Note: See TracChangeset for help on using the changeset viewer.