Changeset 8774


Ignore:
Timestamp:
03/14/05 20:24:37 (16 years ago)
Author:
piso
Message:

MACRO-FUNCTION

File:
1 edited

Legend:

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

    r8770 r8774  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: Primitives.java,v 1.741 2005-03-14 17:50:28 piso Exp $
     5 * $Id: Primitives.java,v 1.742 2005-03-14 20:24:37 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    15511551
    15521552    // ### macro-function
    1553     // Need to support optional second argument specifying environment.
    15541553    private static final Primitive MACRO_FUNCTION =
    15551554        new Primitive("macro-function", "symbol &optional environment")
     
    15691568                    ((AutoloadMacro)obj).load();
    15701569                    obj = get((Symbol) arg, Symbol.MACROEXPAND_MACRO, NIL);
     1570                }
     1571                if (obj instanceof MacroObject)
     1572                    return ((MacroObject)obj).getExpander();
     1573            }
     1574            return NIL;
     1575        }
     1576        public LispObject execute(LispObject first, LispObject second)
     1577            throws ConditionThrowable
     1578        {
     1579            LispObject obj;
     1580            if (second != NIL) {
     1581                Environment env = checkEnvironment(second);
     1582                obj = env.lookupFunction(first);
     1583            } else
     1584                obj = first.getSymbolFunction();
     1585            if (obj instanceof AutoloadMacro) {
     1586                ((AutoloadMacro)obj).load();
     1587                obj = first.getSymbolFunction();
     1588            }
     1589            if (obj instanceof MacroObject)
     1590                return ((MacroObject)obj).getExpander();
     1591            if (obj instanceof SpecialOperator) {
     1592                obj = get((Symbol) first, Symbol.MACROEXPAND_MACRO, NIL);
     1593                if (obj instanceof AutoloadMacro) {
     1594                    ((AutoloadMacro)obj).load();
     1595                    obj = get((Symbol) first, Symbol.MACROEXPAND_MACRO, NIL);
    15711596                }
    15721597                if (obj instanceof MacroObject)
Note: See TracChangeset for help on using the changeset viewer.