Author: bernhard
Date: Sun Jun  3 05:20:17 2007
New Revision: 18776

Modified:
   trunk/languages/lisp/cl.pir
   trunk/languages/lisp/include/macros/standard.pir
   trunk/languages/lisp/lisp/bootstrap.l

Log:
[languages/lisp]
Pass a sub name to .SPECIAL_FORM, analogous to .DEFUN.
This allows to reintroduce parts of bootstrap.l 


Modified: trunk/languages/lisp/cl.pir
==============================================================================
--- trunk/languages/lisp/cl.pir (original)
+++ trunk/languages/lisp/cl.pir Sun Jun  3 05:20:17 2007
@@ -82,14 +82,14 @@
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "EVAL", _eval)
   .DEFUN(symbol, package, "EVAL", "_eval")
 
-  .SPECIAL_FORM(symbol, package, "FUNCTION", _function)
+  .SPECIAL_FORM(symbol, package, "FUNCTION", '_function')
 
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "GENSYM", _gensym)
   .DEFUN(symbol, package, "GENSYM", "_gensym")
 
-  .SPECIAL_FORM(symbol, package, "IF", _if)
+  .SPECIAL_FORM(symbol, package, "IF", '_if')
 
-  .SPECIAL_FORM(symbol, package, "LET", _let)
+  .SPECIAL_FORM(symbol, package, "LET", '_let')
 
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "LIST", _list)
   .DEFUN(symbol, package, "LIST", "_list")
@@ -103,9 +103,9 @@
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "PRINT", _print)
   .DEFUN(symbol, package, "PRINT", "_print")
 
-  .SPECIAL_FORM(symbol, package, "PROGN", _progn)
+  .SPECIAL_FORM(symbol, package, "PROGN", '_progn')
 
-  .SPECIAL_FORM(symbol, package, "QUOTE", _quote)
+  .SPECIAL_FORM(symbol, package, "QUOTE", '_quote')
 
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "READ", _read)
   .DEFUN(symbol, package, "READ", "_read")
@@ -119,7 +119,7 @@
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "RPLACD", _rplacd)
   .DEFUN(symbol, package, "RPLACD", "_rplacd")
 
-  .SPECIAL_FORM(symbol, package, "SETQ",_setq )
+  .SPECIAL_FORM(symbol, package, "SETQ", '_setq')
 
   # VALID_IN_PARROT_0_2_0 .DEFUN(symbol, package, "TYPE-OF", _type_of)
   .DEFUN(symbol, package, "TYPE-OF", "_type_of")
@@ -925,6 +925,7 @@
 
 .sub _setq
   .param pmc args
+
   .local string name
   .local pmc lexical
   .local pmc symbol

Modified: trunk/languages/lisp/include/macros/standard.pir
==============================================================================
--- trunk/languages/lisp/include/macros/standard.pir    (original)
+++ trunk/languages/lisp/include/macros/standard.pir    Sun Jun  3 05:20:17 2007
@@ -48,6 +48,8 @@
 
   _specialformp = new "LispSpecialForm"
   # VALID_IN_PARROT_0_2_0 _specialformp._set_body(.L)
+  .const .Sub _special_func = .L
+  _specialformp._set_body(_special_func)
 
   _namep = new "LispString"
   _namep = .N

Modified: trunk/languages/lisp/lisp/bootstrap.l
==============================================================================
--- trunk/languages/lisp/lisp/bootstrap.l       (original)
+++ trunk/languages/lisp/lisp/bootstrap.l       Sun Jun  3 05:20:17 2007
@@ -29,78 +29,78 @@
             "NOT" "NULL" "PACKAGE-NAME" "PRINT" "PROGN" "QUOTE" "READ"
             "READ-DELIMITED-LIST" "RPLACA" "RPLACD" "SETQ" "SYMBOL-FUNCTION"
             "SYMBOL-NAME" "SYMBOL-PACKAGE" "TYPE-OF" "VALUES"
-            "IN-PACKAGE" 
-            
+            "IN-PACKAGE"
+ 
             ;; Miscellaneous symbols
             "*GENSYM-COUNTER*" "*MACROEXPAND-HOOK*" "*PACKAGE*" "*READ-EVAL*"
             "*READTABLE*" "*STANDARD-INPUT*" "*STANDARD-OUTPUT*" "BASE-CHAR"
             "FLOAT" "HASH-TABLE" "INTEGER" "MACRO" "NIL" "PACKAGE" "STREAM"
             "STRING" "SYMBOL" "T")
 
-;        ;; Set the current package to SYSTEM so we don't have to prefix 
symbols.
-;        (cl:setq *package* (sys:%find-package "SYSTEM"))
-;        (%use-package (%find-package "SYSTEM") (%find-package "COMMON-LISP"))
-;        
-;        ;; Create a hash table used to store all the dispatching macros.
-;        (setq *dispatching-macros* (%make-hash-table))
-;        
-;        ;; #'xxx macro. See CLtL section 2.4.8.2 for details.
-;        (%set-hash *dispatching-macros*
-;                "'"
-;                (function
-;                 (lambda (stream char)
-;                   (list 'function (read stream)))))
-;        
-;        ;; #.xxx macro. See CLtL section 2.4.8.6 for details.
-;        (setq *read-eval* t)
-;        (%set-hash *dispatching-macros*
-;                "."
-;                (function
-;                 (lambda (stream char)
-;                   (if *read-eval*
-;                       (eval (read stream))
-;                     (error "reader-error" "*READ-EVAL* is NIL")))))
-;        
-;        ;; #< macro. See CLtL section 2.4.8.20 for details.
-;        (%set-hash *dispatching-macros*
-;                "<"
-;                (function
-;                 (lambda (stream char)
-;                   (error "reader-error" "#< is invalid syntax"))))
-;        
-;        ;; ##<Space> macro. See CLtL section 2.4.8.21 for details.
-;        (%set-hash *dispatching-macros*
-;                " "
-;                (function
-;                 (lambda (stream char)
-;                   (error "reader-error" "#| | is invalid syntax"))))
-;        
-;        ;; #) macro. See CLtL section 2.4.8.22 for details.
-;        (%set-hash *dispatching-macros*
-;                ")"
-;                (function
-;                 (lambda (stream char)
-;                   (error "reader-error" "#) is invalid syntax"))))
-;        
+;; Set the current package to SYSTEM so we don't have to prefix symbols.
+(cl:setq *package* (sys:%find-package "SYSTEM"))
+(%use-package (%find-package "SYSTEM") (%find-package "COMMON-LISP"))
+
+;; Create a hash table used to store all the dispatching macros.
+(setq *dispatching-macros* (%make-hash-table))
+
+;; #'xxx macro. See CLtL section 2.4.8.2 for details.
+(%set-hash *dispatching-macros*
+         "'"
+         (function
+          (lambda (stream char)
+            (list 'function (read stream)))))
+
+;; #.xxx macro. See CLtL section 2.4.8.6 for details.
+(setq *read-eval* t)
+(%set-hash *dispatching-macros*
+         "."
+         (function
+          (lambda (stream char)
+            (if *read-eval*
+                (eval (read stream))
+              (error "reader-error" "*READ-EVAL* is NIL")))))
+
+;; #< macro. See CLtL section 2.4.8.20 for details.
+(%set-hash *dispatching-macros*
+         "<"
+         (function
+          (lambda (stream char)
+            (error "reader-error" "#< is invalid syntax"))))
+
+;; ##<Space> macro. See CLtL section 2.4.8.21 for details.
+(%set-hash *dispatching-macros*
+         " "
+         (function
+          (lambda (stream char)
+            (error "reader-error" "#| | is invalid syntax"))))
+
+;; #) macro. See CLtL section 2.4.8.22 for details.
+(%set-hash *dispatching-macros*
+         ")"
+         (function
+          (lambda (stream char)
+            (error "reader-error" "#) is invalid syntax"))))
+
 ;        (setq *macroexpand-hook* #'(lambda (fn form env)
 ;                                   (apply fn (list form env))))
-;        
-;        ;; Create the KEYWORD package.
-;        (sys:%make-package "KEYWORD")
-;        
+
+;; Create the KEYWORD package.
+(sys:%make-package "KEYWORD")
+
 ;        (sys:load "lisp/objects.l")
 ;        (sys:load "lisp/core.l")
 ;        (sys:load "lisp/logic.l")
 ;        (sys:load "lisp/pred.l")
 ;        (sys:load "lisp/list.l")
 ;        (sys:load "lisp/math.l")
-;        
-;        ;; Create and alias the COMMON-LISP-USER package.
-;        (sys:%make-package "COMMON-LISP-USER")
-;        (sys:%alias-package (sys:%find-package "COMMON-LISP-USER") "CL-USER")
-;        
+
+;; Create and alias the COMMON-LISP-USER package.
+(sys:%make-package "COMMON-LISP-USER")
+(sys:%alias-package (sys:%find-package "COMMON-LISP-USER") "CL-USER")
+
 ;        (cl:setq *package* (sys:%find-package "CL-USER"))
 ;        (sys:%use-package (sys:%find-package "CL-USER")
 ;                        (sys:%find-package "COMMON-LISP"))
-;        
+
 ;        (in-package "COMMON-LISP-USER")

Reply via email to