diff options
Diffstat (limited to 'src/interp/c-util.boot')
-rw-r--r-- | src/interp/c-util.boot | 21 |
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] + |