aboutsummaryrefslogtreecommitdiff
path: root/src/interp/c-util.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/c-util.boot')
-rw-r--r--src/interp/c-util.boot21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot
index c26887c2..d2bd035a 100644
--- a/src/interp/c-util.boot
+++ b/src/interp/c-util.boot
@@ -1122,10 +1122,10 @@ backendCompileSPADSLAM(name,args,body) ==
COMP370 [u]
name
-
-backendCompile2 form ==
- form isnt [name,[type,args,:body],:junk] or junk ^= nil =>
- MOAN FORMAT(nil,'"******* parenthesis error in (~S (~S ...) ...)",name,type)
+backendCompile2: %Code -> %Symbol
+backendCompile2 code ==
+ code isnt [name,[type,args,:body],:junk] or junk ^= nil =>
+ systemError ['"parenthesis error in: ", code]
type = "SLAM" => backendCompileSLAM(name,args,body)
LASSQ(name,$clamList) => compClam(name,args,body,$clamList)
type = "SPADSLAM" => backendCompileSPADSLAM(name,args,body)
@@ -1136,3 +1136,16 @@ backendCompile2 form ==
else COMP370 [body]
name
+
+++ returns all fuild variables contained in `x'. Fuild variables are
+++ identifiers starting with '$', except domain variable names.
+backendFluidize x ==
+ IDENTP x and x ^= "$" and x ^= "$$" and
+ (PNAME x).0 = char "$" and not DIGITP((PNAME x).1) => x
+ isAtomicForm x => nil
+ first x = "FLUID" => second x
+ a := backendFluidize first x
+ b := backendFluidize rest x
+ a = nil => b
+ [a,:b]
+