[Bese-devel] a little patch

Larry D'Anna smoof-ra at elder-gods.org
Tue Aug 2 16:56:38 UTC 2005


this little patch modifies find-walker-handler so that if there is a
handler for a "special form" that isn't really a special form it will
use that handler instead of calling it an function call.  It shouldn't 
effect ucw behavior at all because all of the defwalker-handler's are 
real special forms, but it lets you shadow *walker-handlers* to add your 
own new special forms.

    --larry 
-------------- next part --------------

New patches:

[allow new special forms to be added to the walker by shadowing *walker-handlers*
smoof-ra at elder-gods.org**20050802165355] {
hunk ./src/walk.lisp 31
-      (case (car form)
-        ((block declare flet function go if labels let let*
-          macrolet progn quote return-from setq symbol-macrolet
-          tagbody unwind-protect catch multiple-value-call
-          multiple-value-prog1 throw load-time-value the
-          eval-when locally progv)
-         (or
-          (gethash (car form) *walker-handlers*)
-          (error "Sorry, No walker for the special operater ~S defined." (car form))))
-        (t (gethash 'application *walker-handlers*)))))
+      (aif (gethash (car form) *walker-handlers*)
+	   it
+	   (case (car form)
+	     ((block declare flet function go if labels let let*
+		     macrolet progn quote return-from setq symbol-macrolet
+		     tagbody unwind-protect catch multiple-value-call
+		     multiple-value-prog1 throw load-time-value the
+		     eval-when locally progv)
+	      (error "Sorry, No walker for the special operater ~S defined." (car form)))
+	     (t (gethash 'application *walker-handlers*))))))
}

Context:

[progv
smoof-ra at elder-gods.org**20050802150342] 
[labels can have declarations inside the body
smoof-ra at elder-gods.org**20050801193433] 
[declares needs to be copied in the labels handler just like the other lambda-function-form slots
smoof-ra at elder-gods.org**20050801193107] 
[oops i forgot to actually make the declaration-form instances
smoof-ra at elder-gods.org**20050801185641] 
[initial support for remembering declarations
smoof-ra at elder-gods.org**20050801184329
 
 this patch adds a mixin called implicit-progn-with-declare-mixin and 
 uses it instead of implicit-progn-mixin in all the places that allow declares.
 It has slot which should contain a list of the declares at the top of the 
 implicit-progn.  This patch doesn't do anything clever with the declares, 
 it just creates declaration-form objects and points their source slots 
 at the original declares, however it would be easy to modify parse-declaration
 to generate more usefull declaration objects.
 
] 
[Call the property :FEATURES, not FEATURES
Marco Baringer <mb at bese.it>**20050729103229] 
[Rename asdf property version to features, add "cps-interpreter"
Marco Baringer <mb at bese.it>**20050728120238] 
[dont need to register allow-other-keys because its not a binding
smoof-ra at elder-gods.org**20050727153603] 
[fixed type name mismatch for allow-other-keys-function-arguement-form
smoof-ra at elder-gods.org**20050727152456] 
[defmethod arguments should be ignorable, not ignore (openmcl warns whenever you ignore a specialized argument)
Marco Baringer <mb at bese.it>**20050726090308] 
[Typo in extract-argument-names
Marco Baringer <mb at bese.it>**20050726090256] 
[Fix generation of defmethod froms from defmethod/cc; added tests
Marco Baringer <mb at bese.it>**20050726085226] 
[Fix handling of optional arguments in apply-cps-lambda
Marco Baringer <mb at bese.it>**20050726085155] 
[More tests
Marco Baringer <mb at bese.it>**20050723133158] 
[Fix a bug in the handling of the case when LOOKUP finds a value for a name but the value is NIL
Marco Baringer <mb at bese.it>**20050723133106] 
[Export the symbol KALL
Marco Baringer <mb at bese.it>**20050723133052] 
[Change the test for constant-form'ness in walk.lisp
Marco Baringer <mb at bese.it>**20050723113019] 
[Extend the walker to handle #'(setf foo) function names
Marco Baringer <mb at bese.it>**20050723104431] 
[Fix bug in the lambda generated for method forms
Marco Baringer <mb at bese.it>**20050720144450] 
[Added ignore declarations to defun/cc and defmethod/cc to make the compiler happy
Marco Baringer <mb at bese.it>**20050720110112] 
[Temporarily comment out the log tests
Marco Baringer <mb at bese.it>**20050720092312] 
[Rename (optional|keyword|rest)-argument-form classes to include the -form suffix
Marco Baringer <mb at bese.it>**20050720092124] 
[Allow defun/cc defined functions te be called outside of a with-call/cc
Marco Baringer <mb at bese.it>**20050720091826] 
[Added support for &optional arguments in cps closures
Marco Baringer <mb at bese.it>**20050720091658] 
[Added defgeneric/cc
Marco Baringer <mb at bese.it>**20050719153441] 
[Move the error checking code for lambda arguments into apply, not lambda (in cps interpreter)
Marco Baringer <mb at bese.it>**20050719153121] 
[More cps tests
Marco Baringer <mb at bese.it>**20050719152327] 
[Fix openmcl's definition of lexical-variables to deal with ccl::definition-environment
Marco Baringer <mb at bese.it>**20050719152230] 
[Added support to the cps interpreter forl communicating with lexical variables
Marco Baringer <mb at bese.it>**20050707094608] 
[walk.lisp depends on lexenv.lisp
Marco Baringer <mb at bese.it>**20050707093140] 
[added support for walking local varibales in the lexical environment
Marco Baringer <mb at bese.it>**20050707093027
 
 this applies to all those variables defined the envorinment object
 grabbed via an &environment macro argument. 
 
] 
[mistyped #+openmcl in lexenv.lisp
Marco Baringer <mb at bese.it>**20050707092959] 
[added src/lexenv.lisp to arnesi.asd
Marco Baringer <mb at bese.it>**20050707091127] 
[Rename src/environment.lisp
Marco Baringer <mb at bese.it>**20050707091114] 
[Initial version of environment.lisp
Marco Baringer <mb at bese.it>**20050707091019] 
[Minor docstring fixup for with-call/cc
Marco Baringer <mb at bese.it>**20050707090619] 
[Big patch including all the cps interpreter stuff upto now
Marco Baringer <mb at bese.it>**20050707083739] 
[Fix bug in handling of defclass-struct's :predicate option
Marco Baringer <mb at bese.it>**20050706105324] 
[Initial Import
Marco Baringer <mb at bese.it>**20050706101657
 This import moves arnesi from arch to darcs. Nothing has actually changed since 
 bese-2004 at common-lisp.net/arnesi--dev--1.4--patch-14
] 
[added arch stuff to boring file
Marco Baringer <mb at bese.it>**20050706101630] 
[Setup boring file
Marco Baringer <mb at bese.it>**20050706100535] 
Patch bundle hash:
b8d27e89545c5f3b9537124e8c8a5f4799f280c4


More information about the bese-devel mailing list