Hex Artifact Content
Not logged in

Artifact 23a1328fcdffcd2af4aeb7b8df0a296751d7c049:


0000: 0a 28 63 6f 6e 64 2d 65 78 70 61 6e 64 0a 20 28  .(cond-expand. (
0010: 63 68 69 63 6b 65 6e 20 28 75 73 65 20 74 65 73  chicken (use tes
0020: 74 29 20 28 6c 6f 61 64 20 22 66 6d 74 2d 63 2d  t) (load "fmt-c-
0030: 63 68 69 63 6b 65 6e 2e 73 63 6d 22 29 29 0a 20  chicken.scm")). 
0040: 28 67 61 75 63 68 65 0a 20 20 28 75 73 65 20 67  (gauche.  (use g
0050: 61 75 63 68 65 2e 74 65 73 74 29 0a 20 20 28 75  auche.test).  (u
0060: 73 65 20 74 65 78 74 2e 66 6d 74 29 0a 20 20 28  se text.fmt).  (
0070: 75 73 65 20 74 65 78 74 2e 66 6d 74 2e 63 29 0a  use text.fmt.c).
0080: 20 20 28 64 65 66 69 6e 65 20 74 65 73 74 2d 62    (define test-b
0090: 65 67 69 6e 20 74 65 73 74 2d 73 74 61 72 74 29  egin test-start)
00a0: 0a 20 20 28 64 65 66 69 6e 65 20 6f 72 69 67 2d  .  (define orig-
00b0: 74 65 73 74 20 28 77 69 74 68 2d 6d 6f 64 75 6c  test (with-modul
00c0: 65 20 67 61 75 63 68 65 2e 74 65 73 74 20 74 65  e gauche.test te
00d0: 73 74 29 29 0a 20 20 28 64 65 66 69 6e 65 2d 73  st)).  (define-s
00e0: 79 6e 74 61 78 20 74 65 73 74 0a 20 20 20 20 28  yntax test.    (
00f0: 73 79 6e 74 61 78 2d 72 75 6c 65 73 20 28 29 0a  syntax-rules ().
0100: 20 20 20 20 20 20 28 28 74 65 73 74 20 6e 61 6d        ((test nam
0110: 65 20 65 78 70 65 63 74 65 64 20 65 78 70 72 29  e expected expr)
0120: 0a 20 20 20 20 20 20 20 28 6f 72 69 67 2d 74 65  .       (orig-te
0130: 73 74 20 6e 61 6d 65 20 65 78 70 65 63 74 65 64  st name expected
0140: 20 28 6c 61 6d 62 64 61 20 28 29 20 65 78 70 72   (lambda () expr
0150: 29 29 29 0a 20 20 20 20 20 20 28 28 74 65 73 74  ))).      ((test
0160: 20 65 78 70 65 63 74 65 64 20 65 78 70 72 29 0a   expected expr).
0170: 20 20 20 20 20 20 20 28 6f 72 69 67 2d 74 65 73         (orig-tes
0180: 74 20 28 6c 65 74 20 28 28 73 20 28 77 69 74 68  t (let ((s (with
0190: 2d 6f 75 74 70 75 74 2d 74 6f 2d 73 74 72 69 6e  -output-to-strin
01a0: 67 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 72  g (lambda () (wr
01b0: 69 74 65 20 27 65 78 70 72 29 29 29 29 29 0a 20  ite 'expr))))). 
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20     (substring s 
01e0: 30 20 28 6d 69 6e 20 36 30 20 28 73 74 72 69 6e  0 (min 60 (strin
01f0: 67 2d 6c 65 6e 67 74 68 20 73 29 29 29 29 0a 20  g-length s)))). 
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0210: 20 65 78 70 65 63 74 65 64 0a 20 20 20 20 20 20   expected.      
0220: 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d              (lam
0230: 62 64 61 20 28 29 20 65 78 70 72 29 29 29 0a 20  bda () expr))). 
0240: 20 20 20 20 20 29 29 29 0a 20 28 65 6c 73 65 29       ))). (else)
0250: 29 0a 0a 28 63 6f 6e 64 2d 65 78 70 61 6e 64 0a  )..(cond-expand.
0260: 20 28 63 68 69 63 6b 65 6e 0a 20 20 28 69 6d 70   (chicken.  (imp
0270: 6f 72 74 20 66 6d 74 20 66 6d 74 2d 63 29 29 0a  ort fmt fmt-c)).
0280: 20 28 65 6c 73 65 29 29 0a 0a 28 74 65 73 74 2d   (else))..(test-
0290: 62 65 67 69 6e 20 22 66 6d 74 2d 63 22 29 0a 0a  begin "fmt-c")..
02a0: 28 74 65 73 74 20 22 69 66 20 28 31 29 20 7b 0a  (test "if (1) {.
02b0: 20 20 20 20 32 3b 0a 7d 20 65 6c 73 65 20 7b 0a      2;.} else {.
02c0: 20 20 20 20 33 3b 0a 7d 0a 22 0a 20 20 20 20 28      3;.}.".    (
02d0: 66 6d 74 20 23 66 20 28 63 2d 69 66 20 31 20 32  fmt #f (c-if 1 2
02e0: 20 33 29 29 29 0a 0a 28 74 65 73 74 20 22 69 66   3)))..(test "if
02f0: 20 28 78 20 3f 20 79 20 3a 20 7a 29 20 7b 0a 20   (x ? y : z) {. 
0300: 20 20 20 32 3b 0a 7d 20 65 6c 73 65 20 7b 0a 20     2;.} else {. 
0310: 20 20 20 33 3b 0a 7d 0a 22 0a 20 20 20 20 28 66     3;.}.".    (f
0320: 6d 74 20 23 66 20 28 63 2d 69 66 20 28 63 2d 69  mt #f (c-if (c-i
0330: 66 20 27 78 20 27 79 20 27 7a 29 20 32 20 33 29  f 'x 'y 'z) 2 3)
0340: 29 29 0a 0a 28 74 65 73 74 20 22 69 66 20 28 78  ))..(test "if (x
0350: 20 3f 20 79 20 3a 20 7a 29 20 7b 0a 20 20 20 20   ? y : z) {.    
0360: 32 3b 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20  2;.} else {.    
0370: 33 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d 74 20  3;.}.".    (fmt 
0380: 23 66 20 28 63 2d 65 78 70 72 20 27 28 69 66 20  #f (c-expr '(if 
0390: 28 69 66 20 78 20 79 20 7a 29 20 32 20 33 29 29  (if x y z) 2 3))
03a0: 29 29 0a 0a 28 74 65 73 74 20 22 69 66 20 28 78  ))..(test "if (x
03b0: 20 3f 20 79 20 3a 20 7a 29 20 7b 0a 20 20 20 20   ? y : z) {.    
03c0: 32 3b 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20  2;.} else {.    
03d0: 33 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d 74 20  3;.}.".    (fmt 
03e0: 23 66 20 28 63 2d 65 78 70 72 20 27 28 25 62 65  #f (c-expr '(%be
03f0: 67 69 6e 20 28 69 66 20 28 69 66 20 78 20 79 20  gin (if (if x y 
0400: 7a 29 20 32 20 33 29 29 29 29 29 0a 0a 28 74 65  z) 2 3)))))..(te
0410: 73 74 20 22 69 6e 74 20 73 71 75 61 72 65 20 28  st "int square (
0420: 69 6e 74 20 78 29 20 7b 0a 20 20 20 20 72 65 74  int x) {.    ret
0430: 75 72 6e 20 78 20 2a 20 78 3b 0a 7d 0a 22 0a 20  urn x * x;.}.". 
0440: 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 66 75     (fmt #f (c-fu
0450: 6e 20 27 69 6e 74 20 27 73 71 75 61 72 65 20 27  n 'int 'square '
0460: 28 28 69 6e 74 20 78 29 29 20 28 63 2a 20 27 78  ((int x)) (c* 'x
0470: 20 27 78 29 29 29 29 0a 0a 28 74 65 73 74 20 22   'x))))..(test "
0480: 69 6e 74 20 66 6f 6f 20 28 69 6e 74 20 78 2c 20  int foo (int x, 
0490: 69 6e 74 20 79 2c 20 69 6e 74 20 7a 29 20 7b 0a  int y, int z) {.
04a0: 20 20 20 20 69 66 20 28 78 20 3f 20 79 20 3a 20      if (x ? y : 
04b0: 7a 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74  z) {.        ret
04c0: 75 72 6e 20 32 3b 0a 20 20 20 20 7d 20 65 6c 73  urn 2;.    } els
04d0: 65 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75  e {.        retu
04e0: 72 6e 20 33 3b 0a 20 20 20 20 7d 0a 7d 0a 22 0a  rn 3;.    }.}.".
04f0: 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 66      (fmt #f (c-f
0500: 75 6e 20 27 69 6e 74 20 27 66 6f 6f 20 27 28 28  un 'int 'foo '((
0510: 69 6e 74 20 78 29 20 28 69 6e 74 20 79 29 20 28  int x) (int y) (
0520: 69 6e 74 20 7a 29 29 0a 20 20 20 20 20 20 20 20  int z)).        
0530: 20 20 20 20 20 20 20 20 20 20 20 28 63 2d 69 66             (c-if
0540: 20 28 63 2d 69 66 20 27 78 20 27 79 20 27 7a 29   (c-if 'x 'y 'z)
0550: 20 32 20 33 29 29 29 29 0a 0a 28 74 65 73 74 20   2 3))))..(test 
0560: 22 76 6f 69 64 20 62 61 72 20 28 69 6e 74 20 6d  "void bar (int m
0570: 6f 64 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  ode, const char 
0580: 2a 6d 73 67 2c 20 75 6e 73 69 67 6e 65 64 20 69  *msg, unsigned i
0590: 6e 74 20 61 72 67 29 20 7b 0a 20 20 20 20 69 66  nt arg) {.    if
05a0: 20 28 6d 6f 64 65 20 3d 3d 20 31 29 20 7b 0a 20   (mode == 1) {. 
05b0: 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 6d 73         printf(ms
05c0: 67 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  g);.    } else {
05d0: 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28  .        printf(
05e0: 6d 73 67 2c 20 61 72 67 29 3b 0a 20 20 20 20 7d  msg, arg);.    }
05f0: 0a 7d 0a 22 0a 20 20 20 20 28 66 6d 74 20 23 66  .}.".    (fmt #f
0600: 20 28 63 2d 66 75 6e 20 27 76 6f 69 64 20 27 62   (c-fun 'void 'b
0610: 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ar.             
0620: 20 20 20 20 20 20 27 28 28 69 6e 74 20 6d 6f 64        '((int mod
0630: 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e).             
0640: 20 20 20 20 20 20 20 20 28 28 25 70 6f 69 6e 74          ((%point
0650: 65 72 20 28 63 6f 6e 73 74 20 63 68 61 72 29 29  er (const char))
0660: 20 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20   msg).          
0670: 20 20 20 20 20 20 20 20 20 20 20 28 28 75 6e 73             ((uns
0680: 69 67 6e 65 64 20 69 6e 74 29 20 61 72 67 29 29  igned int) arg))
0690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
06a0: 20 20 20 20 28 63 2d 69 66 20 28 63 3d 3d 20 27      (c-if (c== '
06b0: 6d 6f 64 65 20 31 29 20 27 28 70 72 69 6e 74 66  mode 1) '(printf
06c0: 20 6d 73 67 29 20 27 28 70 72 69 6e 74 66 20 6d   msg) '(printf m
06d0: 73 67 20 61 72 67 29 29 29 29 29 0a 0a 28 74 65  sg arg)))))..(te
06e0: 73 74 20 22 77 68 69 6c 65 20 28 28 6c 69 6e 65  st "while ((line
06f0: 20 3d 20 72 65 61 64 6c 69 6e 65 28 29 29 20 21   = readline()) !
0700: 3d 20 45 4f 46 29 20 7b 0a 20 20 20 20 70 72 69  = EOF) {.    pri
0710: 6e 74 66 28 5c 22 25 73 5c 22 2c 20 6c 69 6e 65  ntf(\"%s\", line
0720: 29 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d 74 20  );.}.".    (fmt 
0730: 23 66 20 28 63 2d 77 68 69 6c 65 20 28 63 21 3d  #f (c-while (c!=
0740: 20 28 63 3d 20 27 6c 69 6e 65 20 27 28 72 65 61   (c= 'line '(rea
0750: 64 6c 69 6e 65 29 29 20 27 45 4f 46 29 0a 20 20  dline)) 'EOF).  
0760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0770: 20 20 20 27 28 70 72 69 6e 74 66 20 22 25 73 22     '(printf "%s"
0780: 20 6c 69 6e 65 29 29 29 29 0a 0a 28 74 65 73 74   line))))..(test
0790: 20 22 73 77 69 74 63 68 20 28 79 29 20 7b 0a 20   "switch (y) {. 
07a0: 20 20 20 63 61 73 65 20 31 3a 0a 20 20 20 20 20     case 1:.     
07b0: 20 20 20 78 20 3d 20 31 3b 0a 20 20 20 20 20 20     x = 1;.      
07c0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 63 61 73    break;.    cas
07d0: 65 20 32 3a 0a 20 20 20 20 20 20 20 20 78 20 3d  e 2:.        x =
07e0: 20 34 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61   4;.        brea
07f0: 6b 3b 0a 20 20 20 20 64 65 66 61 75 6c 74 3a 0a  k;.    default:.
0800: 20 20 20 20 20 20 20 20 78 20 3d 20 35 3b 0a 20          x = 5;. 
0810: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 7d 0a         break;.}.
0820: 22 0a 20 20 20 20 28 66 6d 74 20 23 66 20 28 63  ".    (fmt #f (c
0830: 2d 73 77 69 74 63 68 20 27 79 0a 20 20 20 20 20  -switch 'y.     
0840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0850: 20 28 63 2d 63 61 73 65 20 31 20 28 63 3d 20 27   (c-case 1 (c= '
0860: 78 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20  x 1)).          
0870: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 2d 63              (c-c
0880: 61 73 65 20 32 20 28 63 3d 20 27 78 20 34 29 29  ase 2 (c= 'x 4))
0890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
08a0: 20 20 20 20 20 20 20 28 63 2d 64 65 66 61 75 6c         (c-defaul
08b0: 74 20 28 63 3d 20 27 78 20 35 29 29 29 29 29 0a  t (c= 'x 5))))).
08c0: 0a 28 74 65 73 74 20 22 73 77 69 74 63 68 20 28  .(test "switch (
08d0: 79 29 20 7b 0a 20 20 20 20 63 61 73 65 20 31 3a  y) {.    case 1:
08e0: 0a 20 20 20 20 20 20 20 20 78 20 3d 20 31 3b 0a  .        x = 1;.
08f0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
0900: 20 20 20 63 61 73 65 20 32 3a 0a 20 20 20 20 20     case 2:.     
0910: 20 20 20 78 20 3d 20 34 3b 0a 20 20 20 20 64 65     x = 4;.    de
0920: 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 78  fault:.        x
0930: 20 3d 20 35 3b 0a 20 20 20 20 20 20 20 20 62 72   = 5;.        br
0940: 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d  eak;.}.".    (fm
0950: 74 20 23 66 20 28 63 2d 73 77 69 74 63 68 20 27  t #f (c-switch '
0960: 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y.              
0970: 20 20 20 20 20 20 20 20 28 63 2d 63 61 73 65 20          (c-case 
0980: 31 20 28 63 3d 20 27 78 20 31 29 29 0a 20 20 20  1 (c= 'x 1)).   
0990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09a0: 20 20 20 28 63 2d 63 61 73 65 2f 66 61 6c 6c 74     (c-case/fallt
09b0: 68 72 6f 75 67 68 20 32 20 28 63 3d 20 27 78 20  hrough 2 (c= 'x 
09c0: 34 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  4)).            
09d0: 20 20 20 20 20 20 20 20 20 20 28 63 2d 64 65 66            (c-def
09e0: 61 75 6c 74 20 28 63 3d 20 27 78 20 35 29 29 29  ault (c= 'x 5)))
09f0: 29 29 0a 0a 28 74 65 73 74 20 22 73 77 69 74 63  ))..(test "switc
0a00: 68 20 28 79 29 20 7b 0a 20 20 20 20 63 61 73 65  h (y) {.    case
0a10: 20 31 3a 0a 20 20 20 20 20 20 20 20 78 20 3d 20   1:.        x = 
0a20: 31 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b  1;.        break
0a30: 3b 0a 20 20 20 20 63 61 73 65 20 32 3a 0a 20 20  ;.    case 2:.  
0a40: 20 20 20 20 20 20 78 20 3d 20 34 3b 0a 20 20 20        x = 4;.   
0a50: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20       break;.    
0a60: 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20  default:.       
0a70: 20 78 20 3d 20 35 3b 0a 20 20 20 20 20 20 20 20   x = 5;.        
0a80: 62 72 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20 20 28  break;.}.".    (
0a90: 66 6d 74 20 23 66 20 28 63 2d 73 77 69 74 63 68  fmt #f (c-switch
0aa0: 20 27 79 20 27 28 28 31 29 20 28 3d 20 78 20 31   'y '((1) (= x 1
0ab0: 29 29 20 27 28 28 32 29 20 28 3d 20 78 20 34 29  )) '((2) (= x 4)
0ac0: 29 20 27 28 65 6c 73 65 20 28 3d 20 78 20 35 29  ) '(else (= x 5)
0ad0: 29 29 29 29 0a 0a 28 74 65 73 74 20 22 73 77 69  ))))..(test "swi
0ae0: 74 63 68 20 28 79 29 20 7b 0a 20 20 20 20 63 61  tch (y) {.    ca
0af0: 73 65 20 31 3a 0a 20 20 20 20 20 20 20 20 78 20  se 1:.        x 
0b00: 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 62 72 65  = 1;.        bre
0b10: 61 6b 3b 0a 20 20 20 20 63 61 73 65 20 32 3a 0a  ak;.    case 2:.
0b20: 20 20 20 20 20 20 20 20 78 20 3d 20 34 3b 0a 20          x = 4;. 
0b30: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
0b40: 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20    default:.     
0b50: 20 20 20 78 20 3d 20 35 3b 0a 20 20 20 20 20 20     x = 5;.      
0b60: 20 20 62 72 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20    break;.}.".   
0b70: 20 28 66 6d 74 20 23 66 20 28 63 2d 65 78 70 72   (fmt #f (c-expr
0b80: 20 27 28 73 77 69 74 63 68 20 79 20 28 28 31 29   '(switch y ((1)
0b90: 20 28 3d 20 78 20 31 29 29 20 28 28 32 29 20 28   (= x 1)) ((2) (
0ba0: 3d 20 78 20 34 29 29 20 28 65 6c 73 65 20 28 3d  = x 4)) (else (=
0bb0: 20 78 20 35 29 29 29 29 29 29 0a 0a 28 74 65 73   x 5))))))..(tes
0bc0: 74 20 22 69 6e 74 20 71 20 28 69 6e 74 20 78 29  t "int q (int x)
0bd0: 20 7b 0a 20 20 20 20 73 77 69 74 63 68 20 28 78   {.    switch (x
0be0: 29 20 7b 0a 20 20 20 20 20 20 20 20 63 61 73 65  ) {.        case
0bf0: 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20   1:.            
0c00: 72 65 74 75 72 6e 20 31 3b 0a 20 20 20 20 20 20  return 1;.      
0c10: 20 20 63 61 73 65 20 32 3a 0a 20 20 20 20 20 20    case 2:.      
0c20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 34 3b 0a        return 4;.
0c30: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
0c40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
0c50: 75 72 6e 20 35 3b 0a 20 20 20 20 7d 0a 7d 0a 22  urn 5;.    }.}."
0c60: 0a 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d  .    (fmt #f (c-
0c70: 66 75 6e 20 27 69 6e 74 20 27 71 20 27 28 78 29  fun 'int 'q '(x)
0c80: 20 28 63 2d 73 77 69 74 63 68 20 27 78 20 27 28   (c-switch 'x '(
0c90: 28 31 29 20 31 29 20 27 28 28 32 29 20 34 29 20  (1) 1) '((2) 4) 
0ca0: 27 28 65 6c 73 65 20 35 29 29 29 29 29 0a 0a 28  '(else 5)))))..(
0cb0: 74 65 73 74 20 22 73 77 69 74 63 68 20 28 78 29  test "switch (x)
0cc0: 20 7b 0a 20 20 20 20 63 61 73 65 20 31 3a 0a 20   {.    case 1:. 
0cd0: 20 20 20 63 61 73 65 20 32 3a 0a 20 20 20 20 20     case 2:.     
0ce0: 20 20 20 66 6f 6f 28 29 3b 0a 20 20 20 20 20 20     foo();.      
0cf0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 64 65 66    break;.    def
0d00: 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 62 61  ault:.        ba
0d10: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 62 72 65  r();.        bre
0d20: 61 6b 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d 74  ak;.}.".    (fmt
0d30: 20 23 66 20 28 63 2d 65 78 70 72 20 27 28 73 77   #f (c-expr '(sw
0d40: 69 74 63 68 20 78 20 28 28 31 20 32 29 20 28 66  itch x ((1 2) (f
0d50: 6f 6f 29 29 20 28 65 6c 73 65 20 28 62 61 72 29  oo)) (else (bar)
0d60: 29 29 29 29 29 0a 0a 28 74 65 73 74 20 22 73 77  )))))..(test "sw
0d70: 69 74 63 68 20 28 78 29 20 7b 0a 20 20 20 20 63  itch (x) {.    c
0d80: 61 73 65 20 31 3a 0a 20 20 20 20 20 20 20 20 66  ase 1:.        f
0d90: 6f 6f 28 29 3b 0a 20 20 20 20 20 20 20 20 62 72  oo();.        br
0da0: 65 61 6b 3b 0a 20 20 20 20 63 61 73 65 20 32 3a  eak;.    case 2:
0db0: 0a 20 20 20 20 63 61 73 65 20 33 3a 0a 20 20 20  .    case 3:.   
0dc0: 20 20 20 20 20 62 61 72 28 29 3b 0a 20 20 20 20       bar();.    
0dd0: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 64      break;.    d
0de0: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20  efault:.        
0df0: 62 61 7a 28 29 3b 0a 20 20 20 20 20 20 20 20 62  baz();.        b
0e00: 72 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20 20 28 66  reak;.}.".    (f
0e10: 6d 74 20 23 66 20 28 63 2d 65 78 70 72 0a 20 20  mt #f (c-expr.  
0e20: 20 20 20 20 20 20 20 20 20 20 20 27 28 73 77 69             '(swi
0e30: 74 63 68 20 78 20 28 63 61 73 65 20 31 20 28 66  tch x (case 1 (f
0e40: 6f 6f 29 29 20 28 63 61 73 65 20 28 32 20 33 29  oo)) (case (2 3)
0e50: 20 28 62 61 72 29 29 20 28 65 6c 73 65 20 28 62   (bar)) (else (b
0e60: 61 7a 29 29 29 29 29 29 0a 0a 28 74 65 73 74 20  az))))))..(test 
0e70: 22 73 77 69 74 63 68 20 28 78 29 20 7b 0a 20 20  "switch (x) {.  
0e80: 20 20 63 61 73 65 20 31 3a 0a 20 20 20 20 63 61    case 1:.    ca
0e90: 73 65 20 32 3a 0a 20 20 20 20 20 20 20 20 66 6f  se 2:.        fo
0ea0: 6f 28 29 3b 0a 20 20 20 20 64 65 66 61 75 6c 74  o();.    default
0eb0: 3a 0a 20 20 20 20 20 20 20 20 62 61 72 28 29 3b  :.        bar();
0ec0: 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a  .        break;.
0ed0: 7d 0a 22 0a 20 20 20 20 28 66 6d 74 20 23 66 20  }.".    (fmt #f 
0ee0: 28 63 2d 65 78 70 72 20 27 28 73 77 69 74 63 68  (c-expr '(switch
0ef0: 20 78 20 28 63 61 73 65 2f 66 61 6c 6c 74 68 72   x (case/fallthr
0f00: 6f 75 67 68 20 28 31 20 32 29 20 28 66 6f 6f 29  ough (1 2) (foo)
0f10: 29 20 28 65 6c 73 65 20 28 62 61 72 29 29 29 29  ) (else (bar))))
0f20: 29 29 0a 0a 28 74 65 73 74 20 22 73 77 69 74 63  ))..(test "switc
0f30: 68 20 28 78 29 20 7b 0a 20 20 20 20 63 61 73 65  h (x) {.    case
0f40: 20 31 3a 0a 20 20 20 20 63 61 73 65 20 32 3a 0a   1:.    case 2:.
0f50: 20 20 20 20 20 20 20 20 66 6f 6f 28 29 3b 0a 20          foo();. 
0f60: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
0f70: 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20    default:.     
0f80: 20 20 20 62 61 72 28 29 3b 0a 20 20 20 20 20 20     bar();.      
0f90: 20 20 62 72 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20    break;.}.".   
0fa0: 20 28 66 6d 74 20 23 66 20 28 63 2d 65 78 70 72   (fmt #f (c-expr
0fb0: 20 27 28 73 77 69 74 63 68 20 78 20 28 28 31 20   '(switch x ((1 
0fc0: 32 29 20 28 66 6f 6f 29 29 20 28 64 65 66 61 75  2) (foo)) (defau
0fd0: 6c 74 20 28 62 61 72 29 29 29 29 29 29 0a 0a 28  lt (bar))))))..(
0fe0: 74 65 73 74 20 22 73 77 69 74 63 68 20 28 78 29  test "switch (x)
0ff0: 20 7b 0a 20 20 20 20 64 65 66 61 75 6c 74 3a 0a   {.    default:.
1000: 20 20 20 20 20 20 20 20 62 61 72 28 29 3b 0a 20          bar();. 
1010: 20 20 20 63 61 73 65 20 31 3a 0a 20 20 20 20 63     case 1:.    c
1020: 61 73 65 20 32 3a 0a 20 20 20 20 20 20 20 20 66  ase 2:.        f
1030: 6f 6f 28 29 3b 0a 20 20 20 20 20 20 20 20 62 72  oo();.        br
1040: 65 61 6b 3b 0a 7d 0a 22 0a 20 20 20 20 28 66 6d  eak;.}.".    (fm
1050: 74 20 23 66 20 28 63 2d 65 78 70 72 20 27 28 73  t #f (c-expr '(s
1060: 77 69 74 63 68 20 78 20 28 65 6c 73 65 2f 66 61  witch x (else/fa
1070: 6c 6c 74 68 72 6f 75 67 68 20 28 62 61 72 29 29  llthrough (bar))
1080: 20 28 28 31 20 32 29 20 28 66 6f 6f 29 29 29 29   ((1 2) (foo))))
1090: 29 29 0a 0a 28 74 65 73 74 20 22 66 6f 72 20 28  ))..(test "for (
10a0: 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b  i = 0; i < n; i+
10b0: 2b 29 20 7b 0a 20 20 20 20 70 72 69 6e 74 66 28  +) {.    printf(
10c0: 5c 22 69 3a 20 25 64 5c 22 29 3b 0a 7d 0a 22 0a  \"i: %d\");.}.".
10d0: 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 66      (fmt #f (c-f
10e0: 6f 72 20 28 63 3d 20 27 69 20 30 29 20 28 63 3c  or (c= 'i 0) (c<
10f0: 20 27 69 20 27 6e 29 20 28 63 2b 2b 2f 70 6f 73   'i 'n) (c++/pos
1100: 74 20 27 69 29 20 27 28 70 72 69 6e 74 66 20 22  t 'i) '(printf "
1110: 69 3a 20 25 64 22 29 29 29 29 0a 0a 28 74 65 73  i: %d"))))..(tes
1120: 74 20 22 61 20 2a 20 78 20 2b 20 62 20 2a 20 79  t "a * x + b * y
1130: 20 3d 3d 20 63 3b 5c 6e 22 0a 20 20 20 20 28 66   == c;\n".    (f
1140: 6d 74 20 23 66 20 28 63 3d 3d 20 28 63 2b 20 28  mt #f (c== (c+ (
1150: 63 2a 20 27 61 20 27 78 29 20 28 63 2a 20 27 62  c* 'a 'x) (c* 'b
1160: 20 27 79 29 29 20 27 63 29 29 29 0a 28 74 65 73   'y)) 'c))).(tes
1170: 74 20 22 61 20 2a 20 78 20 2b 20 62 20 2a 20 79  t "a * x + b * y
1180: 20 3d 3d 20 63 3b 5c 6e 22 0a 20 20 20 20 28 66   == c;\n".    (f
1190: 6d 74 20 23 66 20 28 63 2d 65 78 70 72 20 27 28  mt #f (c-expr '(
11a0: 3d 3d 20 28 2b 20 28 2a 20 61 20 78 29 20 28 2a  == (+ (* a x) (*
11b0: 20 62 20 79 29 29 20 63 29 29 29 29 0a 0a 28 74   b y)) c))))..(t
11c0: 65 73 74 20 22 28 61 20 2b 20 78 29 20 2a 20 28  est "(a + x) * (
11d0: 62 20 2b 20 79 29 20 3d 3d 20 63 3b 5c 6e 22 0a  b + y) == c;\n".
11e0: 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 65      (fmt #f (c-e
11f0: 78 70 72 20 27 28 3d 3d 20 28 2a 20 28 2b 20 61  xpr '(== (* (+ a
1200: 20 78 29 20 28 2b 20 62 20 79 29 29 20 63 29 29   x) (+ b y)) c))
1210: 29 29 0a 0a 28 74 65 73 74 0a 22 28 61 62 72 61  ))..(test."(abra
1220: 63 61 64 61 62 72 61 21 21 21 21 20 2b 20 78 79  cadabra!!!! + xy
1230: 6c 6f 70 68 6f 6e 65 3f 3f 3f 3f 29 0a 20 20 2a  lophone????).  *
1240: 20 28 62 61 6e 61 6e 61 72 61 6d 61 5f 5f 5f 5f   (bananarama____
1250: 20 2b 20 79 65 6c 6c 6f 77 73 74 6f 6e 65 70 61   + yellowstonepa
1260: 72 6b 7e 7e 7e 7e 29 0a 20 20 2a 20 28 63 72 79  rk~~~~).  * (cry
1270: 70 74 6f 61 6e 61 6c 79 73 69 73 20 2b 20 7a 65  ptoanalysis + ze
1280: 62 72 61 6d 61 6e 69 61 29 3b 5c 6e 22 0a 20 20  bramania);\n".  
1290: 20 20 28 66 6d 74 20 23 66 20 28 63 2d 65 78 70    (fmt #f (c-exp
12a0: 72 20 27 28 2a 20 28 2b 20 61 62 72 61 63 61 64  r '(* (+ abracad
12b0: 61 62 72 61 21 21 21 21 20 78 79 6c 6f 70 68 6f  abra!!!! xylopho
12c0: 6e 65 3f 3f 3f 3f 29 0a 20 20 20 20 20 20 20 20  ne????).        
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e0: 28 2b 20 62 61 6e 61 6e 61 72 61 6d 61 5f 5f 5f  (+ bananarama___
12f0: 5f 20 79 65 6c 6c 6f 77 73 74 6f 6e 65 70 61 72  _ yellowstonepar
1300: 6b 7e 7e 7e 7e 29 0a 20 20 20 20 20 20 20 20 20  k~~~~).         
1310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1320: 2b 20 63 72 79 70 74 6f 61 6e 61 6c 79 73 69 73  + cryptoanalysis
1330: 20 7a 65 62 72 61 6d 61 6e 69 61 29 29 29 29 29   zebramania)))))
1340: 0a 0a 28 74 65 73 74 0a 22 61 62 72 61 63 61 64  ..(test."abracad
1350: 61 62 72 61 28 78 79 6c 6f 70 68 6f 6e 65 2c 0a  abra(xylophone,.
1360: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 6e 61              bana
1370: 6e 61 72 61 6d 61 2c 0a 20 20 20 20 20 20 20 20  narama,.        
1380: 20 20 20 20 79 65 6c 6c 6f 77 73 74 6f 6e 65 70      yellowstonep
1390: 61 72 6b 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ark,.           
13a0: 20 63 72 79 70 74 6f 61 6e 61 6c 79 73 69 73 2c   cryptoanalysis,
13b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7a 65 62  .            zeb
13c0: 72 61 6d 61 6e 69 61 2c 0a 20 20 20 20 20 20 20  ramania,.       
13d0: 20 20 20 20 20 64 65 6c 69 67 68 74 66 75 6c 2c       delightful,
13e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 75 62  .            wub
13f0: 62 6c 65 66 6c 75 62 62 65 72 79 29 3b 5c 6e 22  bleflubbery);\n"
1400: 0a 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d  .    (fmt #f (c-
1410: 65 78 70 72 20 27 28 61 62 72 61 63 61 64 61 62  expr '(abracadab
1420: 72 61 20 78 79 6c 6f 70 68 6f 6e 65 0a 20 20 20  ra xylophone.   
1430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1450: 61 6e 61 6e 61 72 61 6d 61 0a 20 20 20 20 20 20  ananarama.      
1460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1470: 20 20 20 20 20 20 20 20 20 20 20 20 79 65 6c 6c              yell
1480: 6f 77 73 74 6f 6e 65 70 61 72 6b 0a 20 20 20 20  owstonepark.    
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 72                cr
14b0: 79 70 74 6f 61 6e 61 6c 79 73 69 73 0a 20 20 20  yptoanalysis.   
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7a                 z
14e0: 65 62 72 61 6d 61 6e 69 61 0a 20 20 20 20 20 20  ebramania.      
14f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1500: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 69              deli
1510: 67 68 74 66 75 6c 0a 20 20 20 20 20 20 20 20 20  ghtful.         
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1530: 20 20 20 20 20 20 20 20 20 77 75 62 62 6c 65 66           wubblef
1540: 6c 75 62 62 65 72 79 29 29 29 29 0a 0a 28 74 65  lubbery))))..(te
1550: 73 74 20 22 23 64 65 66 69 6e 65 20 66 6f 6f 28  st "#define foo(
1560: 78 2c 20 79 29 20 28 28 28 78 29 20 2b 20 28 79  x, y) (((x) + (y
1570: 29 29 29 5c 6e 22 0a 20 20 20 20 28 66 6d 74 20  )))\n".    (fmt 
1580: 23 66 20 28 63 70 70 2d 64 65 66 69 6e 65 20 27  #f (cpp-define '
1590: 28 66 6f 6f 20 28 69 6e 74 20 78 29 20 28 69 6e  (foo (int x) (in
15a0: 74 20 79 29 29 20 28 63 2b 20 27 78 20 27 79 29  t y)) (c+ 'x 'y)
15b0: 29 29 29 0a 0a 28 74 65 73 74 20 22 23 64 65 66  )))..(test "#def
15c0: 69 6e 65 20 6d 69 6e 28 78 2c 20 79 29 20 28 28  ine min(x, y) ((
15d0: 28 78 29 20 3c 20 28 79 29 29 20 3f 20 28 78 29  (x) < (y)) ? (x)
15e0: 20 3a 20 28 79 29 29 5c 6e 22 0a 20 20 20 20 28   : (y))\n".    (
15f0: 66 6d 74 20 23 66 20 28 63 70 70 2d 64 65 66 69  fmt #f (cpp-defi
1600: 6e 65 20 27 28 6d 69 6e 20 78 20 79 29 20 28 63  ne '(min x y) (c
1610: 2d 69 66 20 28 63 3c 20 27 78 20 27 79 29 20 27  -if (c< 'x 'y) '
1620: 78 20 27 79 29 29 29 29 0a 0a 28 74 65 73 74 0a  x 'y))))..(test.
1630: 22 23 64 65 66 69 6e 65 20 66 6f 6f 28 78 2c 20  "#define foo(x, 
1640: 79 29 20 28 61 62 72 61 63 61 64 61 62 72 61 28  y) (abracadabra(
1650: 28 28 78 29 20 2b 20 28 79 29 29 2c 20 5c 5c 0a  ((x) + (y)), \\.
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
1680: 79 6c 6f 70 68 6f 6e 65 2c 20 5c 5c 0a 20 20 20  ylophone, \\.   
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 6e 61              bana
16b0: 6e 61 72 61 6d 61 2c 20 5c 5c 0a 20 20 20 20 20  narama, \\.     
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 20 20 20 20 20 20 20 20 20 79 65 6c 6c 6f 77            yellow
16e0: 73 74 6f 6e 65 70 61 72 6b 2c 20 5c 5c 0a 20 20  stonepark, \\.  
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 72 79               cry
1710: 70 74 6f 61 6e 61 6c 79 73 69 73 2c 20 5c 5c 0a  ptoanalysis, \\.
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7a                 z
1740: 65 62 72 61 6d 61 6e 69 61 2c 20 5c 5c 0a 20 20  ebramania, \\.  
1750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c               del
1770: 69 67 68 74 66 75 6c 2c 20 5c 5c 0a 20 20 20 20  ightful, \\.    
1780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1790: 20 20 20 20 20 20 20 20 20 20 20 77 75 62 62 6c             wubbl
17a0: 65 66 6c 75 62 62 65 72 79 29 29 5c 6e 22 0a 20  eflubbery))\n". 
17b0: 20 20 20 28 66 6d 74 20 23 66 20 28 63 70 70 2d     (fmt #f (cpp-
17c0: 64 65 66 69 6e 65 20 27 28 66 6f 6f 20 78 20 79  define '(foo x y
17d0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
17e0: 20 20 20 20 20 20 20 20 20 20 27 28 61 62 72 61            '(abra
17f0: 63 61 64 61 62 72 61 20 28 2b 20 78 20 79 29 0a  cadabra (+ x y).
1800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1820: 20 20 20 20 20 20 78 79 6c 6f 70 68 6f 6e 65 0a        xylophone.
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 20 20 20 62 61 6e 61 6e 61 72 61 6d 61        bananarama
1860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1880: 20 20 20 20 20 20 20 79 65 6c 6c 6f 77 73 74 6f         yellowsto
1890: 6e 65 70 61 72 6b 0a 20 20 20 20 20 20 20 20 20  nepark.         
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 72 79               cry
18c0: 70 74 6f 61 6e 61 6c 79 73 69 73 0a 20 20 20 20  ptoanalysis.    
18d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f0: 20 20 7a 65 62 72 61 6d 61 6e 69 61 0a 20 20 20    zebramania.   
1900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1920: 20 20 20 64 65 6c 69 67 68 74 66 75 6c 0a 20 20     delightful.  
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1950: 20 20 20 20 77 75 62 62 6c 65 66 6c 75 62 62 65      wubbleflubbe
1960: 72 79 29 29 29 29 0a 0a 28 74 65 73 74 20 22 23  ry))))..(test "#
1970: 69 66 6e 64 65 66 20 46 4f 4f 5f 48 0a 23 64 65  ifndef FOO_H.#de
1980: 66 69 6e 65 20 46 4f 4f 5f 48 0a 0a 65 78 74 65  fine FOO_H..exte
1990: 72 6e 20 69 6e 74 20 66 6f 6f 20 28 29 3b 0a 0a  rn int foo ();..
19a0: 23 65 6e 64 69 66 20 20 2f 2a 20 21 20 46 4f 4f  #endif  /* ! FOO
19b0: 5f 48 20 2a 2f 0a 22 0a 20 20 20 20 28 66 6d 74  _H */.".    (fmt
19c0: 20 23 66 20 28 63 70 70 2d 77 72 61 70 2d 68 65   #f (cpp-wrap-he
19d0: 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20  ader.           
19e0: 20 20 27 46 4f 4f 5f 48 0a 20 20 20 20 20 20 20    'FOO_H.       
19f0: 20 20 20 20 20 20 28 63 2d 65 78 74 65 72 6e 20        (c-extern 
1a00: 28 63 2d 70 72 6f 74 6f 74 79 70 65 20 27 69 6e  (c-prototype 'in
1a10: 74 20 27 66 6f 6f 20 27 28 29 29 29 29 29 29 0a  t 'foo '()))))).
1a20: 0a 28 74 65 73 74 20 22 23 69 66 20 66 6f 6f 0a  .(test "#if foo.
1a30: 31 0a 23 65 6c 69 66 20 62 61 72 0a 32 0a 23 65  1.#elif bar.2.#e
1a40: 6c 69 66 20 62 61 7a 0a 33 0a 23 65 6c 73 65 20  lif baz.3.#else 
1a50: 0a 34 0a 23 65 6e 64 69 66 0a 22 0a 20 20 20 20  .4.#endif.".    
1a60: 28 66 6d 74 20 23 66 20 28 63 70 70 2d 69 66 20  (fmt #f (cpp-if 
1a70: 27 66 6f 6f 20 31 20 27 62 61 72 20 32 20 27 62  'foo 1 'bar 2 'b
1a80: 61 7a 20 33 20 34 29 29 29 0a 0a 28 74 65 73 74  az 3 4)))..(test
1a90: 20 22 2f 2a 20 74 68 69 73 20 69 73 20 61 20 2f   "/* this is a /
1aa0: 5c 5c 2a 20 6e 65 73 74 65 64 20 2a 5c 5c 2f 20  \\* nested *\\/ 
1ab0: 63 6f 6d 6d 65 6e 74 20 2a 2f 22 0a 20 20 20 20  comment */".    
1ac0: 28 66 6d 74 20 23 66 20 28 63 2d 63 6f 6d 6d 65  (fmt #f (c-comme
1ad0: 6e 74 20 22 20 74 68 69 73 20 69 73 20 61 20 22  nt " this is a "
1ae0: 20 28 63 2d 63 6f 6d 6d 65 6e 74 20 22 20 6e 65   (c-comment " ne
1af0: 73 74 65 64 20 22 29 20 22 20 63 6f 6d 6d 65 6e  sted ") " commen
1b00: 74 20 22 29 29 29 0a 0a 3b 3b 20 74 68 65 20 69  t ")))..;; the i
1b10: 6e 69 74 69 61 6c 20 6c 65 61 64 69 6e 67 20 73  nitial leading s
1b20: 70 61 63 65 20 69 73 20 61 6e 6e 6f 79 69 6e 67  pace is annoying
1b30: 20 62 75 74 20 68 61 72 64 20 74 6f 20 72 65 6d   but hard to rem
1b40: 6f 76 65 20 61 74 20 74 68 65 0a 3b 3b 20 6d 6f  ove at the.;; mo
1b50: 6d 65 6e 74 20 2d 20 74 68 65 20 69 6d 70 6f 72  ment - the impor
1b60: 74 61 6e 74 20 74 68 69 6e 67 20 69 73 20 77 65  tant thing is we
1b70: 20 70 72 65 73 65 72 76 65 20 69 6e 64 65 6e 74   preserve indent
1b80: 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 62 6f 64  ation in the bod
1b90: 79 0a 28 74 65 73 74 20 22 73 77 69 74 63 68 20  y.(test "switch 
1ba0: 28 79 29 20 7b 0a 20 20 20 20 63 61 73 65 20 31  (y) {.    case 1
1bb0: 3a 0a 20 20 20 20 20 20 20 20 78 20 3d 20 31 3b  :.        x = 1;
1bc0: 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a  .        break;.
1bd0: 20 20 20 20 0a 23 69 66 64 65 66 20 48 5f 54 57      .#ifdef H_TW
1be0: 4f 0a 20 20 20 20 63 61 73 65 20 32 3a 0a 20 20  O.    case 2:.  
1bf0: 20 20 20 20 20 20 78 20 3d 20 34 3b 0a 20 20 20        x = 4;.   
1c00: 20 20 20 20 20 62 72 65 61 6b 3b 0a 23 65 6e 64       break;.#end
1c10: 69 66 20 20 2f 2a 20 48 5f 54 57 4f 20 2a 2f 0a  if  /* H_TWO */.
1c20: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20      default:.   
1c30: 20 20 20 20 20 78 20 3d 20 35 3b 0a 20 20 20 20       x = 5;.    
1c40: 20 20 20 20 62 72 65 61 6b 3b 0a 7d 0a 22 0a 20      break;.}.". 
1c50: 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 65 78     (fmt #f (c-ex
1c60: 70 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  pr.             
1c70: 60 28 73 77 69 74 63 68 20 79 0a 20 20 20 20 20  `(switch y.     
1c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c90: 20 28 28 31 29 20 28 3d 20 78 20 31 29 29 0a 20   ((1) (= x 1)). 
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb0: 20 20 20 20 20 2c 28 63 70 70 2d 69 66 64 65 66       ,(cpp-ifdef
1cc0: 20 27 48 5f 54 57 4f 20 28 63 2d 63 61 73 65 20   'H_TWO (c-case 
1cd0: 27 28 32 29 20 27 28 3d 20 78 20 34 29 29 29 0a  '(2) '(= x 4))).
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf0: 20 20 20 20 20 20 28 65 6c 73 65 20 28 3d 20 78        (else (= x
1d00: 20 35 29 29 29 29 29 29 0a 0a 28 74 65 73 74 20   5))))))..(test 
1d10: 22 23 64 65 66 69 6e 65 20 65 70 72 69 6e 74 66  "#define eprintf
1d20: 28 2e 2e 2e 29 20 28 66 70 72 69 6e 74 66 28 73  (...) (fprintf(s
1d30: 74 64 65 72 72 2c 20 5f 5f 56 41 5f 41 52 47 53  tderr, __VA_ARGS
1d40: 5f 5f 29 29 5c 6e 22 0a 20 20 20 20 28 66 6d 74  __))\n".    (fmt
1d50: 20 23 66 20 28 63 2d 65 78 70 72 20 27 28 25 64   #f (c-expr '(%d
1d60: 65 66 69 6e 65 20 28 65 70 72 69 6e 74 66 20 2e  efine (eprintf .
1d70: 20 61 72 67 73 29 20 28 66 70 72 69 6e 74 66 20   args) (fprintf 
1d80: 73 74 64 65 72 72 20 61 72 67 73 29 29 29 29 29  stderr args)))))
1d90: 0a 0a 28 74 65 73 74 20 22 73 74 72 75 63 74 20  ..(test "struct 
1da0: 70 6f 69 6e 74 20 7b 0a 20 20 20 20 69 6e 74 20  point {.    int 
1db0: 78 3b 0a 20 20 20 20 69 6e 74 20 79 3b 0a 7d 3b  x;.    int y;.};
1dc0: 0a 22 0a 20 20 20 20 28 66 6d 74 20 23 66 20 28  .".    (fmt #f (
1dd0: 63 2d 65 78 70 72 20 60 28 73 74 72 75 63 74 20  c-expr `(struct 
1de0: 70 6f 69 6e 74 20 28 78 20 79 29 29 29 29 29 0a  point (x y))))).
1df0: 0a 28 74 65 73 74 20 22 73 74 72 75 63 74 20 65  .(test "struct e
1e00: 6d 70 6c 6f 79 65 65 20 7b 0a 20 20 20 20 73 68  mployee {.    sh
1e10: 6f 72 74 20 61 67 65 3b 0a 20 20 20 20 63 68 61  ort age;.    cha
1e20: 72 20 2a 6e 61 6d 65 3b 0a 20 20 20 20 73 74 72  r *name;.    str
1e30: 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 69 6e  uct {.        in
1e40: 74 20 79 65 61 72 3b 0a 20 20 20 20 20 20 20 20  t year;.        
1e50: 69 6e 74 20 6d 6f 6e 74 68 3b 0a 20 20 20 20 20  int month;.     
1e60: 20 20 20 69 6e 74 20 64 61 79 3b 0a 20 20 20 20     int day;.    
1e70: 7d 20 64 6f 62 3b 0a 7d 20 5f 5f 61 74 74 72 69  } dob;.} __attri
1e80: 62 75 74 65 5f 5f 20 28 28 70 61 63 6b 65 64 29  bute__ ((packed)
1e90: 29 3b 0a 22 0a 20 20 20 20 28 66 6d 74 20 23 66  );.".    (fmt #f
1ea0: 20 28 63 2d 65 78 70 72 20 60 28 73 74 72 75 63   (c-expr `(struc
1eb0: 74 20 65 6d 70 6c 6f 79 65 65 0a 20 20 20 20 20  t employee.     
1ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed0: 20 20 20 20 20 20 20 20 28 28 73 68 6f 72 74 20          ((short 
1ee0: 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20  age).           
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 28 28 25 70 6f 69 6e 74 65 72 20 63 68     ((%pointer ch
1f10: 61 72 29 20 6e 61 6d 65 29 0a 20 20 20 20 20 20  ar) name).      
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f30: 20 20 20 20 20 20 20 20 28 28 73 74 72 75 63 74          ((struct
1f40: 20 28 79 65 61 72 20 6d 6f 6e 74 68 20 64 61 79   (year month day
1f50: 29 29 20 64 6f 62 29 29 0a 20 20 20 20 20 20 20  )) dob)).       
1f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f70: 20 20 20 20 20 20 28 25 61 74 74 72 69 62 75 74        (%attribut
1f80: 65 20 70 61 63 6b 65 64 29 0a 20 20 20 20 20 20  e packed).      
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa0: 20 20 20 20 20 20 20 29 29 29 29 0a 0a 28 74 65         ))))..(te
1fb0: 73 74 20 22 63 6c 61 73 73 20 65 6d 70 6c 6f 79  st "class employ
1fc0: 65 65 20 7b 0a 20 20 20 20 73 68 6f 72 74 20 61  ee {.    short a
1fd0: 67 65 3b 0a 20 20 20 20 63 68 61 72 20 2a 6e 61  ge;.    char *na
1fe0: 6d 65 3b 0a 20 20 20 20 73 74 72 75 63 74 20 7b  me;.    struct {
1ff0: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 79 65 61  .        int yea
2000: 72 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6d  r;.        int m
2010: 6f 6e 74 68 3b 0a 20 20 20 20 20 20 20 20 69 6e  onth;.        in
2020: 74 20 64 61 79 3b 0a 20 20 20 20 7d 20 64 6f 62  t day;.    } dob
2030: 3b 0a 7d 20 5f 5f 61 74 74 72 69 62 75 74 65 5f  ;.} __attribute_
2040: 5f 20 28 28 70 61 63 6b 65 64 29 29 3b 0a 22 0a  _ ((packed));.".
2050: 20 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 63      (fmt #f (c-c
2060: 6c 61 73 73 20 27 65 6d 70 6c 6f 79 65 65 0a 20  lass 'employee. 
2070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2080: 20 20 20 20 20 27 28 28 73 68 6f 72 74 20 61 67       '((short ag
2090: 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e).             
20a0: 20 20 20 20 20 20 20 20 20 20 20 28 28 25 70 6f             ((%po
20b0: 69 6e 74 65 72 20 63 68 61 72 29 20 6e 61 6d 65  inter char) name
20c0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
20d0: 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 75            ((stru
20e0: 63 74 20 28 79 65 61 72 20 6d 6f 6e 74 68 20 64  ct (year month d
20f0: 61 79 29 29 20 64 6f 62 29 29 0a 20 20 20 20 20  ay)) dob)).     
2100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2110: 20 28 63 2d 61 74 74 72 69 62 75 74 65 20 27 70   (c-attribute 'p
2120: 61 63 6b 65 64 29 0a 20 20 20 20 20 20 20 20 20  acked).         
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 29 29               )))
2140: 0a 0a 28 74 65 73 74 20 22 75 6e 69 6f 6e 20 6f  ..(test "union o
2150: 62 6a 65 63 74 20 7b 0a 20 20 20 20 63 68 61 72  bject {.    char
2160: 20 74 61 67 3b 0a 20 20 20 20 73 74 72 75 63 74   tag;.    struct
2170: 20 7b 0a 20 20 20 20 20 20 20 20 63 68 61 72 20   {.        char 
2180: 74 61 67 3b 0a 20 20 20 20 20 20 20 20 63 68 61  tag;.        cha
2190: 72 20 2a 64 61 74 61 3b 0a 20 20 20 20 7d 20 73  r *data;.    } s
21a0: 74 72 69 6e 67 3b 0a 20 20 20 20 73 74 72 75 63  tring;.    struc
21b0: 74 20 7b 0a 20 20 20 20 20 20 20 20 63 68 61 72  t {.        char
21c0: 20 74 61 67 3b 0a 20 20 20 20 20 20 20 20 76 6f   tag;.        vo
21d0: 69 64 20 2a 63 61 72 3b 0a 20 20 20 20 20 20 20  id *car;.       
21e0: 20 76 6f 69 64 20 2a 63 64 72 3b 0a 20 20 20 20   void *cdr;.    
21f0: 7d 20 70 61 69 72 3b 0a 20 20 20 20 73 74 72 75  } pair;.    stru
2200: 63 74 20 7b 0a 20 20 20 20 20 20 20 20 63 68 61  ct {.        cha
2210: 72 20 74 61 67 3b 0a 20 20 20 20 20 20 20 20 75  r tag;.        u
2220: 6e 73 69 67 6e 65 64 20 69 6e 74 20 6c 65 6e 67  nsigned int leng
2230: 74 68 3b 0a 20 20 20 20 20 20 20 20 76 6f 69 64  th;.        void
2240: 20 2a 64 61 74 61 3b 0a 20 20 20 20 7d 20 76 65   *data;.    } ve
2250: 63 74 6f 72 3b 0a 7d 3b 0a 22 0a 20 20 20 20 28  ctor;.};.".    (
2260: 66 6d 74 20 23 66 20 28 63 2d 65 78 70 72 0a 20  fmt #f (c-expr. 
2270: 20 20 20 20 20 20 20 20 20 20 20 20 27 28 75 6e              '(un
2280: 69 6f 6e 20 6f 62 6a 65 63 74 0a 20 20 20 20 20  ion object.     
2290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a0: 28 28 63 68 61 72 20 74 61 67 29 0a 20 20 20 20  ((char tag).    
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c0: 20 20 28 28 73 74 72 75 63 74 20 28 28 63 68 61    ((struct ((cha
22d0: 72 20 74 61 67 29 20 28 28 2a 20 63 68 61 72 29  r tag) ((* char)
22e0: 20 64 61 74 61 29 29 29 20 73 74 72 69 6e 67 29   data))) string)
22f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2300: 20 20 20 20 20 20 20 28 28 73 74 72 75 63 74 20         ((struct 
2310: 28 28 63 68 61 72 20 74 61 67 29 0a 20 20 20 20  ((char tag).    
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2330: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 2a 20              ((* 
2340: 76 6f 69 64 29 20 63 61 72 29 0a 20 20 20 20 20  void) car).     
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2360: 20 20 20 20 20 20 20 20 20 20 20 28 28 2a 20 76             ((* v
2370: 6f 69 64 29 20 63 64 72 29 29 29 0a 20 20 20 20  oid) cdr))).    
2380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2390: 20 20 20 70 61 69 72 29 0a 20 20 20 20 20 20 20     pair).       
23a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
23b0: 28 73 74 72 75 63 74 20 28 28 63 68 61 72 20 74  (struct ((char t
23c0: 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ag).            
23d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e0: 20 20 20 20 28 28 75 6e 73 69 67 6e 65 64 20 69      ((unsigned i
23f0: 6e 74 29 20 6c 65 6e 67 74 68 29 0a 20 20 20 20  nt) length).    
2400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2410: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 2a 20              ((* 
2420: 76 6f 69 64 29 20 64 61 74 61 29 29 29 0a 20 20  void) data))).  
2430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2440: 20 20 20 20 20 76 65 63 74 6f 72 29 0a 20 20 20       vector).   
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2460: 20 20 20 29 29 29 29 29 0a 0a 28 74 65 73 74 20     )))))..(test 
2470: 22 65 6e 75 6d 20 74 79 70 65 5f 74 61 67 73 20  "enum type_tags 
2480: 7b 0a 20 20 20 20 54 59 50 45 5f 43 48 41 52 20  {.    TYPE_CHAR 
2490: 3d 20 31 2c 0a 20 20 20 20 54 59 50 45 5f 46 49  = 1,.    TYPE_FI
24a0: 58 4e 55 4d 2c 0a 20 20 20 20 54 59 50 45 5f 42  XNUM,.    TYPE_B
24b0: 4f 4f 4c 45 41 4e 2c 0a 20 20 20 20 54 59 50 45  OOLEAN,.    TYPE
24c0: 5f 4e 55 4c 4c 2c 0a 20 20 20 20 54 59 50 45 5f  _NULL,.    TYPE_
24d0: 45 4f 46 2c 0a 20 20 20 20 54 59 50 45 5f 53 54  EOF,.    TYPE_ST
24e0: 52 49 4e 47 2c 0a 20 20 20 20 54 59 50 45 5f 50  RING,.    TYPE_P
24f0: 41 49 52 2c 0a 20 20 20 20 54 59 50 45 5f 56 45  AIR,.    TYPE_VE
2500: 43 54 4f 52 0a 7d 3b 0a 22 0a 20 20 20 20 28 66  CTOR.};.".    (f
2510: 6d 74 20 23 66 20 28 63 2d 65 78 70 72 20 27 28  mt #f (c-expr '(
2520: 65 6e 75 6d 20 74 79 70 65 5f 74 61 67 73 20 28  enum type_tags (
2530: 28 54 59 50 45 5f 43 48 41 52 20 31 29 20 54 59  (TYPE_CHAR 1) TY
2540: 50 45 5f 46 49 58 4e 55 4d 20 54 59 50 45 5f 42  PE_FIXNUM TYPE_B
2550: 4f 4f 4c 45 41 4e 20 54 59 50 45 5f 4e 55 4c 4c  OOLEAN TYPE_NULL
2560: 20 54 59 50 45 5f 45 4f 46 20 54 59 50 45 5f 53   TYPE_EOF TYPE_S
2570: 54 52 49 4e 47 20 54 59 50 45 5f 50 41 49 52 20  TRING TYPE_PAIR 
2580: 54 59 50 45 5f 56 45 43 54 4f 52 29 29 29 29 29  TYPE_VECTOR)))))
2590: 0a 0a 28 74 65 73 74 20 22 23 64 65 66 69 6e 65  ..(test "#define
25a0: 20 4f 50 5f 45 56 41 4c 20 30 78 46 45 5c 6e 22   OP_EVAL 0xFE\n"
25b0: 20 28 66 6d 74 20 23 66 20 28 72 61 64 69 78 20   (fmt #f (radix 
25c0: 31 36 20 28 63 70 70 2d 64 65 66 69 6e 65 20 27  16 (cpp-define '
25d0: 4f 50 5f 45 56 41 4c 20 32 35 34 29 29 29 29 0a  OP_EVAL 254)))).
25e0: 0a 28 74 65 73 74 20 22 75 6e 73 69 67 6e 65 64  .(test "unsigned
25f0: 20 6c 6f 6e 67 20 74 61 62 6c 65 5b 53 49 5a 45   long table[SIZE
2600: 5d 20 3d 20 7b 31 2c 20 32 2c 20 33 2c 20 34 7d  ] = {1, 2, 3, 4}
2610: 3b 5c 6e 22 0a 20 20 20 20 28 66 6d 74 20 23 66  ;\n".    (fmt #f
2620: 20 28 63 2d 76 61 72 20 27 28 25 61 72 72 61 79   (c-var '(%array
2630: 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29   (unsigned long)
2640: 20 53 49 5a 45 29 20 27 74 61 62 6c 65 20 27 23   SIZE) 'table '#
2650: 28 31 20 32 20 33 20 34 29 29 29 29 0a 0a 28 74  (1 2 3 4))))..(t
2660: 65 73 74 20 22 69 6e 74 20 2a 61 72 72 61 79 5f  est "int *array_
2670: 6f 66 5f 70 74 72 5b 5d 3b 5c 6e 22 0a 20 20 20  of_ptr[];\n".   
2680: 20 28 66 6d 74 20 23 66 20 28 63 2d 76 61 72 20   (fmt #f (c-var 
2690: 27 28 25 61 72 72 61 79 20 28 2a 20 69 6e 74 29  '(%array (* int)
26a0: 29 20 27 61 72 72 61 79 5f 6f 66 5f 70 74 72 29  ) 'array_of_ptr)
26b0: 29 29 0a 0a 28 74 65 73 74 20 22 69 6e 74 20 28  ))..(test "int (
26c0: 2a 70 74 72 5f 74 6f 5f 61 72 72 61 79 29 5b 5d  *ptr_to_array)[]
26d0: 3b 5c 6e 22 0a 20 20 20 20 28 66 6d 74 20 23 66  ;\n".    (fmt #f
26e0: 20 28 63 2d 76 61 72 20 27 28 2a 20 28 25 61 72   (c-var '(* (%ar
26f0: 72 61 79 20 69 6e 74 29 29 20 27 70 74 72 5f 74  ray int)) 'ptr_t
2700: 6f 5f 61 72 72 61 79 29 29 29 0a 0a 28 74 65 73  o_array)))..(tes
2710: 74 20 22 66 6f 6f 20 2a 2a 74 61 62 6c 65 20 3d  t "foo **table =
2720: 20 7b 7b 31 2c 20 5c 22 66 6f 6f 5c 22 7d 2c 20   {{1, \"foo\"}, 
2730: 7b 32 2c 20 5c 22 62 61 72 5c 22 7d 2c 20 7b 33  {2, \"bar\"}, {3
2740: 2c 20 5c 22 62 61 7a 5c 22 7d 2c 20 7b 34 2c 20  , \"baz\"}, {4, 
2750: 5c 22 71 75 78 5c 22 7d 7d 3b 5c 6e 22 0a 20 20  \"qux\"}};\n".  
2760: 20 20 28 66 6d 74 20 23 66 20 28 63 2d 76 61 72    (fmt #f (c-var
2770: 20 27 28 2a 20 28 2a 20 66 6f 6f 29 29 20 27 74   '(* (* foo)) 't
2780: 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20  able.           
2790: 20 20 20 20 20 20 20 20 27 23 28 23 28 31 20 22          '#(#(1 "
27a0: 66 6f 6f 22 29 20 23 28 32 20 22 62 61 72 22 29  foo") #(2 "bar")
27b0: 20 23 28 33 20 22 62 61 7a 22 29 20 23 28 34 20   #(3 "baz") #(4 
27c0: 22 71 75 78 22 29 29 29 29 29 0a 0a 28 74 65 73  "qux")))))..(tes
27d0: 74 20 22 73 65 78 70 20 28 2a 66 29 28 73 65 78  t "sexp (*f)(sex
27e0: 70 2c 20 73 65 78 70 29 20 3d 20 4e 55 4c 4c 3b  p, sexp) = NULL;
27f0: 5c 6e 22 0a 20 20 20 20 28 66 6d 74 20 23 66 20  \n".    (fmt #f 
2800: 28 63 2d 76 61 72 20 27 28 25 66 75 6e 20 73 65  (c-var '(%fun se
2810: 78 70 20 28 73 65 78 70 20 73 65 78 70 29 29 20  xp (sexp sexp)) 
2820: 27 66 20 27 4e 55 4c 4c 29 29 29 0a 0a 28 74 65  'f 'NULL)))..(te
2830: 73 74 20 22 73 65 78 70 20 28 2a 29 28 73 65 78  st "sexp (*)(sex
2840: 70 29 20 28 2a 66 29 28 73 65 78 70 2c 20 73 65  p) (*f)(sexp, se
2850: 78 70 29 20 3d 20 4e 55 4c 4c 3b 5c 6e 22 0a 20  xp) = NULL;\n". 
2860: 20 20 20 28 66 6d 74 20 23 66 20 28 63 2d 76 61     (fmt #f (c-va
2870: 72 20 27 28 25 66 75 6e 20 28 25 66 75 6e 20 73  r '(%fun (%fun s
2880: 65 78 70 20 28 73 65 78 70 29 29 20 28 73 65 78  exp (sexp)) (sex
2890: 70 20 73 65 78 70 29 29 20 27 66 20 27 4e 55 4c  p sexp)) 'f 'NUL
28a0: 4c 29 29 29 0a 0a 28 74 65 73 74 20 22 74 79 70  L)))..(test "typ
28b0: 65 64 65 66 20 64 6f 75 62 6c 65 20 28 2a 66 29  edef double (*f)
28c0: 28 64 6f 75 62 6c 65 20 2a 2c 20 64 6f 75 62 6c  (double *, doubl
28d0: 65 2c 20 69 6e 74 29 3b 5c 6e 22 0a 20 20 20 20  e, int);\n".    
28e0: 28 66 6d 74 20 23 66 20 28 63 2d 74 79 70 65 64  (fmt #f (c-typed
28f0: 65 66 20 27 28 25 66 75 6e 20 64 6f 75 62 6c 65  ef '(%fun double
2900: 20 28 28 2a 20 64 6f 75 62 6c 65 29 20 64 6f 75   ((* double) dou
2910: 62 6c 65 20 69 6e 74 29 29 20 27 66 29 29 29 0a  ble int)) 'f))).
2920: 0a 28 74 65 73 74 20 22 5c 22 66 6f 6f 5c 5c 74  .(test "\"foo\\t
2930: 62 61 72 5c 22 3b 5c 6e 22 0a 20 20 20 20 28 66  bar\";\n".    (f
2940: 6d 74 20 23 66 20 28 63 2d 65 78 70 72 20 22 66  mt #f (c-expr "f
2950: 6f 6f 5c 74 62 61 72 22 29 29 29 0a 0a 28 74 65  oo\tbar")))..(te
2960: 73 74 2d 65 6e 64 29 0a 0a                       st-end)..