diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/boot/ast.boot | 5 | ||||
-rw-r--r-- | src/boot/strap/ast.clisp | 7 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 67c2e3a9..9dba7e32 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-12-12 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * boot/ast.boot (bfIS1): Tidy. + 2010-12-11 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/i-syscmd.boot: Use try-finally expression instead of Lisp diff --git a/src/boot/ast.boot b/src/boot/ast.boot index ed2ff3bc..9e1882dd 100644 --- a/src/boot/ast.boot +++ b/src/boot/ast.boot @@ -640,10 +640,11 @@ bfISReverse(x,a) == bfIS1(lhs,rhs) == rhs = nil => ['NULL,lhs] string? rhs => ['EQ,lhs,['QUOTE,INTERN rhs]] - NUMBERP rhs => ["EQUAL",lhs,rhs] + integer? rhs => ['EQL,lhs,rhs] atom rhs => ['PROGN,bfLetForm(rhs,lhs),'T] rhs is ['QUOTE,a] => - IDENTP a => ['EQ,lhs,rhs] + symbol? a => ['EQ,lhs,rhs] + string? a => bfAND [['STRINGP,lhs],["STRING=",lhs,a]] ["EQUAL",lhs,rhs] rhs is ['L%T,c,d] => l := bfLET(c,lhs) diff --git a/src/boot/strap/ast.clisp b/src/boot/strap/ast.clisp index 8511e03e..023496b2 100644 --- a/src/boot/strap/ast.clisp +++ b/src/boot/strap/ast.clisp @@ -957,7 +957,7 @@ (COND ((NULL |rhs|) (LIST 'NULL |lhs|)) ((STRINGP |rhs|) (LIST 'EQ |lhs| (LIST 'QUOTE (INTERN |rhs|)))) - ((NUMBERP |rhs|) (LIST 'EQUAL |lhs| |rhs|)) + ((INTEGERP |rhs|) (LIST 'EQL |lhs| |rhs|)) ((ATOM |rhs|) (LIST 'PROGN (|bfLetForm| |rhs| |lhs|) 'T)) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'QUOTE) (PROGN @@ -965,7 +965,10 @@ (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|)) (PROGN (SETQ |a| (CAR |ISTMP#1|)) T)))) (COND - ((IDENTP |a|) (LIST 'EQ |lhs| |rhs|)) + ((SYMBOLP |a|) (LIST 'EQ |lhs| |rhs|)) + ((STRINGP |a|) + (|bfAND| (LIST (LIST 'STRINGP |lhs|) + (LIST 'STRING= |lhs| |a|)))) (T (LIST 'EQUAL |lhs| |rhs|)))) ((AND (CONSP |rhs|) (EQ (CAR |rhs|) 'L%T) (PROGN |