Changeset 4546


Ignore:
Timestamp:
10/26/03 18:55:35 (18 years ago)
Author:
piso
Message:

macroexpand_1(): symbol macro support.

File:
1 edited

Legend:

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

    r4540 r4546  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Lisp.java,v 1.169 2003-10-25 21:53:57 piso Exp $
     5 * $Id: Lisp.java,v 1.170 2003-10-26 18:55:35 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    248248                }
    249249                if (obj instanceof SpecialOperator)
    250                     obj = Primitives.get((Symbol)car,
    251                         Symbol.MACROEXPAND_MACRO, NIL);
     250                    obj = Primitives.get((Symbol)car, Symbol.MACROEXPAND_MACRO,
     251                                        NIL);
    252252                if (obj instanceof MacroObject) {
    253253                    LispObject expander = ((MacroObject)obj).getExpander();
     
    259259                    return results[0];
    260260                }
     261            }
     262        } else if (form instanceof Symbol) {
     263            Symbol symbol = (Symbol) form;
     264            LispObject obj = null;
     265            if (symbol.isSpecialVariable())
     266                obj = thread.lookupSpecial(symbol);
     267            else
     268                obj = env.lookup(symbol);
     269            if (obj == null)
     270                obj = symbol.getSymbolValue();
     271            if (obj instanceof SymbolMacro) {
     272                results[0] = ((SymbolMacro)obj).getExpansion();
     273                results[1] = T;
     274                thread.setValues(results);
     275                return results[0];
    261276            }
    262277        }
Note: See TracChangeset for help on using the changeset viewer.