Artifact
23a1328fcdffcd2af4aeb7b8df0a296751d7c049:
- File
fmt/test-fmt-c.scm
— part of check-in
[80c8c83034]
at
2016-07-07 18:11:39
on branch trunk
— initial import
(user:
ovenpasta@pizzahack.eu
size: 10601)
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)..