Hex Artifact Content
Not logged in

Artifact e0c1e860e7b1bb97d64e5467e341669e32098cf8:


0000: 3b 3b 3b 20 53 52 46 49 20 33 38 3a 20 45 78 74  ;;; SRFI 38: Ext
0010: 65 72 6e 61 6c 20 52 65 70 72 65 73 65 6e 74 61  ernal Representa
0020: 74 69 6f 6e 20 6f 66 20 44 61 74 61 20 57 69 74  tion of Data Wit
0030: 68 20 53 68 61 72 65 64 20 53 74 72 75 63 74 75  h Shared Structu
0040: 72 65 0a 3b 3b 3b 0a 3b 3b 3b 20 24 49 64 3a 20  re.;;;.;;; $Id: 
0050: 25 33 61 33 38 2e 73 6c 73 20 36 31 34 39 20 32  %3a38.sls 6149 2
0060: 30 30 39 2d 30 33 2d 31 39 20 30 32 3a 34 31 3a  009-03-19 02:41:
0070: 35 36 5a 20 77 69 6c 6c 20 24 0a 3b 3b 3b 0a 3b  56Z will $.;;;.;
0080: 3b 3b 20 53 65 65 20 3c 68 74 74 70 3a 2f 2f 73  ;; See <http://s
0090: 72 66 69 2e 73 63 68 65 6d 65 72 73 2e 6f 72 67  rfi.schemers.org
00a0: 2f 73 72 66 69 2d 33 38 2f 73 72 66 69 2d 33 38  /srfi-38/srfi-38
00b0: 2e 68 74 6d 6c 3e 20 66 6f 72 20 74 68 65 20 66  .html> for the f
00c0: 75 6c 6c 20 64 6f 63 75 6d 65 6e 74 2e 0a 3b 3b  ull document..;;
00d0: 3b 0a 3b 3b 3b 20 54 68 69 73 20 66 69 6c 65 20  ;.;;; This file 
00e0: 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20 74 68  contains code th
00f0: 61 74 20 69 73 20 63 6f 70 79 72 69 67 68 74 65  at is copyrighte
0100: 64 20 62 79 20 74 77 6f 20 73 65 70 61 72 61 74  d by two separat
0110: 65 0a 3b 3b 3b 20 53 52 46 49 2d 73 74 79 6c 65  e.;;; SRFI-style
0120: 20 63 6f 70 79 72 69 67 68 74 73 2e 0a 3b 3b 3b   copyrights..;;;
0130: 0a 3b 3b 3b 20 54 68 65 20 63 6f 64 65 20 66 6f  .;;; The code fo
0140: 72 20 77 72 69 74 65 2d 77 69 74 68 2d 73 68 61  r write-with-sha
0150: 72 65 64 2d 73 74 72 75 63 74 75 72 65 20 69 73  red-structure is
0160: 20 61 74 74 72 69 62 75 74 65 64 20 74 6f 0a 3b   attributed to.;
0170: 3b 3b 20 41 6c 20 50 65 74 72 6f 76 73 6b 79 20  ;; Al Petrovsky 
0180: 61 6e 64 20 63 6f 70 79 72 69 67 68 74 65 64 20  and copyrighted 
0190: 62 79 20 52 61 79 20 44 69 6c 6c 69 6e 67 65 72  by Ray Dillinger
01a0: 2e 0a 3b 3b 3b 0a 3b 3b 3b 20 41 6c 6c 20 6f 74  ..;;;.;;; All ot
01b0: 68 65 72 20 63 6f 64 65 20 77 61 73 20 77 72 69  her code was wri
01c0: 74 74 65 6e 20 62 79 20 57 69 6c 6c 69 61 6d 20  tten by William 
01d0: 44 20 43 6c 69 6e 67 65 72 2e 0a 0a 28 6c 69 62  D Clinger...(lib
01e0: 72 61 72 79 20 28 73 72 66 69 20 73 33 38 20 77  rary (srfi s38 w
01f0: 69 74 68 2d 73 68 61 72 65 64 2d 73 74 72 75 63  ith-shared-struc
0200: 74 75 72 65 29 0a 0a 20 20 28 65 78 70 6f 72 74  ture)..  (export
0210: 20 77 72 69 74 65 2d 77 69 74 68 2d 73 68 61 72   write-with-shar
0220: 65 64 2d 73 74 72 75 63 74 75 72 65 20 77 72 69  ed-structure wri
0230: 74 65 2f 73 73 0a 20 20 20 20 20 20 20 20 20 20  te/ss.          
0240: 72 65 61 64 2d 77 69 74 68 2d 73 68 61 72 65 64  read-with-shared
0250: 2d 73 74 72 75 63 74 75 72 65 20 20 72 65 61 64  -structure  read
0260: 2f 73 73 29 0a 0a 20 20 28 69 6d 70 6f 72 74 20  /ss)..  (import 
0270: 28 72 6e 72 73 20 62 61 73 65 29 0a 20 20 20 20  (rnrs base).    
0280: 20 20 20 20 20 20 28 72 6e 72 73 20 75 6e 69 63        (rnrs unic
0290: 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 28  ode).          (
02a0: 72 6e 72 73 20 62 79 74 65 76 65 63 74 6f 72 73  rnrs bytevectors
02b0: 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 6e 6c  ).          (onl
02c0: 79 20 28 72 6e 72 73 20 6c 69 73 74 73 29 20 6d  y (rnrs lists) m
02d0: 65 6d 71 29 0a 20 20 20 20 20 20 20 20 20 20 28  emq).          (
02e0: 72 6e 72 73 20 63 6f 6e 74 72 6f 6c 29 0a 20 20  rnrs control).  
02f0: 20 20 20 20 20 20 20 20 28 6f 6e 6c 79 20 28 72          (only (r
0300: 6e 72 73 20 69 6f 20 70 6f 72 74 73 29 20 70 6f  nrs io ports) po
0310: 72 74 3f 20 74 65 78 74 75 61 6c 2d 70 6f 72 74  rt? textual-port
0320: 3f 29 0a 20 20 20 20 20 20 20 20 20 20 28 72 6e  ?).          (rn
0330: 72 73 20 69 6f 20 73 69 6d 70 6c 65 29 0a 20 20  rs io simple).  
0340: 20 20 20 20 20 20 20 20 28 72 6e 72 73 20 68 61          (rnrs ha
0350: 73 68 74 61 62 6c 65 73 29 0a 20 20 20 20 20 20  shtables).      
0360: 20 20 20 20 28 72 6e 72 73 20 6d 75 74 61 62 6c      (rnrs mutabl
0370: 65 2d 73 74 72 69 6e 67 73 29 0a 20 20 20 20 20  e-strings).     
0380: 20 20 20 20 20 28 72 6e 72 73 20 6d 75 74 61 62       (rnrs mutab
0390: 6c 65 2d 70 61 69 72 73 29 0a 20 20 20 20 20 20  le-pairs).      
03a0: 20 20 20 20 28 73 72 66 69 20 73 39 39 20 72 65      (srfi s99 re
03b0: 63 6f 72 64 73 20 70 72 6f 63 65 64 75 72 61 6c  cords procedural
03c0: 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 6e 6c  ).          (onl
03d0: 79 20 28 73 72 66 69 20 73 39 39 20 72 65 63 6f  y (srfi s99 reco
03e0: 72 64 73 20 69 6e 73 70 65 63 74 69 6f 6e 29 20  rds inspection) 
03f0: 72 65 63 6f 72 64 3f 29 29 0a 0a 3b 3b 3b 20 43  record?))..;;; C
0400: 6f 70 79 72 69 67 68 74 20 28 43 29 20 52 61 79  opyright (C) Ray
0410: 20 44 69 6c 6c 69 6e 67 65 72 20 32 30 30 33 2e   Dillinger 2003.
0420: 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65   All Rights Rese
0430: 72 76 65 64 2e 20 0a 3b 3b 3b 0a 3b 3b 3b 20 54  rved. .;;;.;;; T
0440: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61 6e 64  his document and
0450: 20 74 72 61 6e 73 6c 61 74 69 6f 6e 73 20 6f 66   translations of
0460: 20 69 74 20 6d 61 79 20 62 65 20 63 6f 70 69 65   it may be copie
0470: 64 20 61 6e 64 20 66 75 72 6e 69 73 68 65 64 20  d and furnished 
0480: 74 6f 0a 3b 3b 3b 20 6f 74 68 65 72 73 2c 20 61  to.;;; others, a
0490: 6e 64 20 64 65 72 69 76 61 74 69 76 65 20 77 6f  nd derivative wo
04a0: 72 6b 73 20 74 68 61 74 20 63 6f 6d 6d 65 6e 74  rks that comment
04b0: 20 6f 6e 20 6f 72 20 6f 74 68 65 72 77 69 73 65   on or otherwise
04c0: 20 65 78 70 6c 61 69 6e 20 69 74 0a 3b 3b 3b 20   explain it.;;; 
04d0: 6f 72 20 61 73 73 69 73 74 20 69 6e 20 69 74 73  or assist in its
04e0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
04f0: 6d 61 79 20 62 65 20 70 72 65 70 61 72 65 64 2c  may be prepared,
0500: 20 63 6f 70 69 65 64 2c 20 70 75 62 6c 69 73 68   copied, publish
0510: 65 64 20 61 6e 64 0a 3b 3b 3b 20 64 69 73 74 72  ed and.;;; distr
0520: 69 62 75 74 65 64 2c 20 69 6e 20 77 68 6f 6c 65  ibuted, in whole
0530: 20 6f 72 20 69 6e 20 70 61 72 74 2c 20 77 69 74   or in part, wit
0540: 68 6f 75 74 20 72 65 73 74 72 69 63 74 69 6f 6e  hout restriction
0550: 20 6f 66 20 61 6e 79 20 6b 69 6e 64 2c 0a 3b 3b   of any kind,.;;
0560: 3b 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20  ; provided that 
0570: 74 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69  the above copyri
0580: 67 68 74 20 6e 6f 74 69 63 65 20 61 6e 64 20 74  ght notice and t
0590: 68 69 73 20 70 61 72 61 67 72 61 70 68 20 61 72  his paragraph ar
05a0: 65 0a 3b 3b 3b 20 69 6e 63 6c 75 64 65 64 20 6f  e.;;; included o
05b0: 6e 20 61 6c 6c 20 73 75 63 68 20 63 6f 70 69 65  n all such copie
05c0: 73 20 61 6e 64 20 64 65 72 69 76 61 74 69 76 65  s and derivative
05d0: 20 77 6f 72 6b 73 2e 20 48 6f 77 65 76 65 72 2c   works. However,
05e0: 20 74 68 69 73 0a 3b 3b 3b 20 64 6f 63 75 6d 65   this.;;; docume
05f0: 6e 74 20 69 74 73 65 6c 66 20 6d 61 79 20 6e 6f  nt itself may no
0600: 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 69 6e  t be modified in
0610: 20 61 6e 79 20 77 61 79 2c 20 73 75 63 68 20 61   any way, such a
0620: 73 20 62 79 20 72 65 6d 6f 76 69 6e 67 0a 3b 3b  s by removing.;;
0630: 3b 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20  ; the copyright 
0640: 6e 6f 74 69 63 65 20 6f 72 20 72 65 66 65 72 65  notice or refere
0650: 6e 63 65 73 20 74 6f 20 74 68 65 20 53 63 68 65  nces to the Sche
0660: 6d 65 20 52 65 71 75 65 73 74 20 46 6f 72 0a 3b  me Request For.;
0670: 3b 3b 20 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ;; Implementatio
0680: 6e 20 70 72 6f 63 65 73 73 20 6f 72 20 65 64 69  n process or edi
0690: 74 6f 72 73 2c 20 65 78 63 65 70 74 20 61 73 20  tors, except as 
06a0: 6e 65 65 64 65 64 20 66 6f 72 20 74 68 65 20 70  needed for the p
06b0: 75 72 70 6f 73 65 20 6f 66 0a 3b 3b 3b 20 64 65  urpose of.;;; de
06c0: 76 65 6c 6f 70 69 6e 67 20 53 52 46 49 73 20 69  veloping SRFIs i
06d0: 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
06e0: 20 70 72 6f 63 65 64 75 72 65 73 20 66 6f 72 20   procedures for 
06f0: 63 6f 70 79 72 69 67 68 74 73 20 64 65 66 69 6e  copyrights defin
0700: 65 64 0a 3b 3b 3b 20 69 6e 20 74 68 65 20 53 52  ed.;;; in the SR
0710: 46 49 20 70 72 6f 63 65 73 73 20 6d 75 73 74 20  FI process must 
0720: 62 65 20 66 6f 6c 6c 6f 77 65 64 2c 20 6f 72 20  be followed, or 
0730: 61 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 74  as required to t
0740: 72 61 6e 73 6c 61 74 65 20 69 74 0a 3b 3b 3b 20  ranslate it.;;; 
0750: 69 6e 74 6f 20 6c 61 6e 67 75 61 67 65 73 20 6f  into languages o
0760: 74 68 65 72 20 74 68 61 6e 20 45 6e 67 6c 69 73  ther than Englis
0770: 68 2e 0a 3b 3b 3b 0a 3b 3b 3b 20 54 68 65 20 6c  h..;;;.;;; The l
0780: 69 6d 69 74 65 64 20 70 65 72 6d 69 73 73 69 6f  imited permissio
0790: 6e 73 20 67 72 61 6e 74 65 64 20 61 62 6f 76 65  ns granted above
07a0: 20 61 72 65 20 70 65 72 70 65 74 75 61 6c 20 61   are perpetual a
07b0: 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 62 65 0a 3b  nd will not be.;
07c0: 3b 3b 20 72 65 76 6f 6b 65 64 20 62 79 20 74 68  ;; revoked by th
07d0: 65 20 61 75 74 68 6f 72 73 20 6f 72 20 74 68 65  e authors or the
07e0: 69 72 20 73 75 63 63 65 73 73 6f 72 73 20 6f 72  ir successors or
07f0: 20 61 73 73 69 67 6e 73 2e 0a 3b 3b 3b 0a 3b 3b   assigns..;;;.;;
0800: 3b 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  ; This document 
0810: 61 6e 64 20 74 68 65 20 69 6e 66 6f 72 6d 61 74  and the informat
0820: 69 6f 6e 20 63 6f 6e 74 61 69 6e 65 64 20 68 65  ion contained he
0830: 72 65 69 6e 20 69 73 20 70 72 6f 76 69 64 65 64  rein is provided
0840: 20 6f 6e 20 61 6e 0a 3b 3b 3b 20 22 41 53 20 49   on an.;;; "AS I
0850: 53 22 20 62 61 73 69 73 20 61 6e 64 20 54 48 45  S" basis and THE
0860: 20 41 55 54 48 4f 52 20 41 4e 44 20 54 48 45 20   AUTHOR AND THE 
0870: 53 52 46 49 20 45 44 49 54 4f 52 53 20 44 49 53  SRFI EDITORS DIS
0880: 43 4c 41 49 4d 20 41 4c 4c 0a 3b 3b 3b 20 57 41  CLAIM ALL.;;; WA
0890: 52 52 41 4e 54 49 45 53 2c 20 45 58 50 52 45 53  RRANTIES, EXPRES
08a0: 53 20 4f 52 20 49 4d 50 4c 49 45 44 2c 20 49 4e  S OR IMPLIED, IN
08b0: 43 4c 55 44 49 4e 47 20 42 55 54 20 4e 4f 54 20  CLUDING BUT NOT 
08c0: 4c 49 4d 49 54 45 44 20 54 4f 20 41 4e 59 0a 3b  LIMITED TO ANY.;
08d0: 3b 3b 20 57 41 52 52 41 4e 54 59 20 54 48 41 54  ;; WARRANTY THAT
08e0: 20 54 48 45 20 55 53 45 20 4f 46 20 54 48 45 20   THE USE OF THE 
08f0: 49 4e 46 4f 52 4d 41 54 49 4f 4e 20 48 45 52 45  INFORMATION HERE
0900: 49 4e 20 57 49 4c 4c 20 4e 4f 54 20 49 4e 46 52  IN WILL NOT INFR
0910: 49 4e 47 45 20 41 4e 59 0a 3b 3b 3b 20 52 49 47  INGE ANY.;;; RIG
0920: 48 54 53 20 4f 52 20 41 4e 59 20 49 4d 50 4c 49  HTS OR ANY IMPLI
0930: 45 44 20 57 41 52 52 41 4e 54 49 45 53 20 4f 46  ED WARRANTIES OF
0940: 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59   MERCHANTABILITY
0950: 20 4f 52 20 46 49 54 4e 45 53 53 20 46 4f 52 20   OR FITNESS FOR 
0960: 41 0a 3b 3b 3b 20 50 41 52 54 49 43 55 4c 41 52  A.;;; PARTICULAR
0970: 20 50 55 52 50 4f 53 45 2e 0a 0a 3b 3b 3b 20 41   PURPOSE...;;; A
0980: 20 70 72 69 6e 74 65 72 20 74 68 61 74 20 73 68   printer that sh
0990: 6f 77 73 20 61 6c 6c 20 73 68 61 72 69 6e 67 20  ows all sharing 
09a0: 6f 66 20 73 75 62 73 74 72 75 63 74 75 72 65 73  of substructures
09b0: 2e 20 20 55 73 65 73 20 74 68 65 20 43 6f 6d 6d  .  Uses the Comm
09c0: 6f 6e 0a 3b 3b 3b 20 4c 69 73 70 20 70 72 69 6e  on.;;; Lisp prin
09d0: 74 2d 63 69 72 63 6c 65 20 6e 6f 74 61 74 69 6f  t-circle notatio
09e0: 6e 3a 20 23 6e 23 20 72 65 66 65 72 73 20 74 6f  n: #n# refers to
09f0: 20 61 20 70 72 65 76 69 6f 75 73 20 73 75 62 73   a previous subs
0a00: 74 72 75 63 74 75 72 65 0a 3b 3b 3b 20 6c 61 62  tructure.;;; lab
0a10: 65 6c 65 64 20 77 69 74 68 20 23 6e 3d 2e 20 20  eled with #n=.  
0a20: 20 54 61 6b 65 73 20 4f 28 6e 5e 32 29 20 74 69   Takes O(n^2) ti
0a30: 6d 65 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 20 61 74  me...;;; Code at
0a40: 74 72 69 62 75 74 65 64 20 74 6f 20 41 6c 2a 20  tributed to Al* 
0a50: 50 65 74 72 6f 66 73 6b 79 2c 20 6d 6f 64 69 66  Petrofsky, modif
0a60: 69 65 64 20 62 79 20 44 69 6c 6c 69 6e 67 65 72  ied by Dillinger
0a70: 2e 20 20 0a 3b 3b 3b 0a 3b 3b 3b 20 4d 6f 64 69  .  .;;;.;;; Modi
0a80: 66 69 65 64 20 44 65 63 65 6d 62 65 72 20 32 30  fied December 20
0a90: 30 38 20 62 79 20 57 69 6c 6c 20 43 6c 69 6e 67  08 by Will Cling
0aa0: 65 72 20 74 6f 20 75 73 65 20 52 36 52 53 2d 73  er to use R6RS-s
0ab0: 74 79 6c 65 20 68 61 73 68 74 61 62 6c 65 73 0a  tyle hashtables.
0ac0: 3b 3b 3b 20 61 6e 64 20 74 6f 20 72 65 63 6f 67  ;;; and to recog
0ad0: 6e 69 7a 65 20 52 36 52 53 20 64 61 74 61 20 73  nize R6RS data s
0ae0: 74 72 75 63 74 75 72 65 73 2e 20 20 4e 6f 77 20  tructures.  Now 
0af0: 72 75 6e 73 20 69 6e 20 4f 28 6e 29 20 74 69 6d  runs in O(n) tim
0b00: 65 20 69 66 0a 3b 3b 3b 20 74 68 65 20 68 61 73  e if.;;; the has
0b10: 68 74 61 62 6c 65 20 61 63 63 65 73 73 65 73 20  htable accesses 
0b20: 61 72 65 20 4f 28 31 29 2e 0a 0a 28 64 65 66 69  are O(1)...(defi
0b30: 6e 65 20 28 77 72 69 74 65 2d 77 69 74 68 2d 73  ne (write-with-s
0b40: 68 61 72 65 64 2d 73 74 72 75 63 74 75 72 65 20  hared-structure 
0b50: 6f 62 6a 20 2e 20 6f 70 74 69 6f 6e 61 6c 2d 70  obj . optional-p
0b60: 6f 72 74 29 0a 0a 20 20 28 64 65 66 69 6e 65 20  ort)..  (define 
0b70: 28 6c 6f 6f 6b 75 70 20 6b 65 79 20 73 74 61 74  (lookup key stat
0b80: 65 29 0a 20 20 20 20 28 68 61 73 68 74 61 62 6c  e).    (hashtabl
0b90: 65 2d 72 65 66 20 73 74 61 74 65 20 6b 65 79 20  e-ref state key 
0ba0: 23 66 29 29 0a 0a 20 20 28 64 65 66 69 6e 65 20  #f))..  (define 
0bb0: 28 70 72 65 73 65 6e 74 3f 20 6b 65 79 20 73 74  (present? key st
0bc0: 61 74 65 29 0a 20 20 20 20 28 68 61 73 68 74 61  ate).    (hashta
0bd0: 62 6c 65 2d 63 6f 6e 74 61 69 6e 73 3f 20 73 74  ble-contains? st
0be0: 61 74 65 20 6b 65 79 29 29 0a 0a 20 20 28 64 65  ate key))..  (de
0bf0: 66 69 6e 65 20 28 75 70 64 61 74 65 64 2d 73 74  fine (updated-st
0c00: 61 74 65 20 6b 65 79 20 76 61 6c 20 73 74 61 74  ate key val stat
0c10: 65 29 0a 20 20 20 20 28 68 61 73 68 74 61 62 6c  e).    (hashtabl
0c20: 65 2d 73 65 74 21 20 73 74 61 74 65 20 6b 65 79  e-set! state key
0c30: 20 76 61 6c 29 0a 20 20 20 20 73 74 61 74 65 29   val).    state)
0c40: 0a 0a 20 20 3b 3b 20 41 6e 20 6f 62 6a 65 63 74  ..  ;; An object
0c50: 20 69 73 20 69 6e 74 65 72 65 73 74 69 6e 67 20   is interesting 
0c60: 69 66 20 69 74 20 6d 69 67 68 74 20 68 61 76 65  if it might have
0c70: 20 61 20 6d 75 74 61 62 6c 65 20 73 74 61 74 65   a mutable state
0c80: 2e 0a 20 20 3b 3b 20 41 6e 20 69 6e 74 65 72 65  ..  ;; An intere
0c90: 73 74 69 6e 67 20 6f 62 6a 65 63 74 20 69 73 20  sting object is 
0ca0: 65 73 70 65 63 69 61 6c 6c 79 20 69 6e 74 65 72  especially inter
0cb0: 65 73 74 69 6e 67 20 69 66 20 69 74 20 68 61 73  esting if it has
0cc0: 0a 20 20 3b 3b 20 61 20 73 74 61 6e 64 61 72 64  .  ;; a standard
0cd0: 20 65 78 74 65 72 6e 61 6c 20 72 65 70 72 65 73   external repres
0ce0: 65 6e 74 61 74 69 6f 6e 20 28 61 63 63 6f 72 64  entation (accord
0cf0: 69 6e 67 20 74 6f 20 53 52 46 49 20 33 38 29 0a  ing to SRFI 38).
0d00: 20 20 3b 3b 20 74 68 61 74 20 6d 69 67 68 74 20    ;; that might 
0d10: 63 6f 6e 74 61 69 6e 20 74 68 65 20 6f 62 6a 65  contain the obje
0d20: 63 74 20 69 74 73 65 6c 66 2e 20 20 54 68 65 20  ct itself.  The 
0d30: 69 6e 74 65 72 65 73 74 69 6e 67 0a 20 20 3b 3b  interesting.  ;;
0d40: 20 6f 62 6a 65 63 74 73 20 64 65 73 63 72 69 62   objects describ
0d50: 65 64 20 62 79 20 74 68 65 20 52 35 52 53 20 6f  ed by the R5RS o
0d60: 72 20 52 36 52 53 20 61 72 65 3a 0a 20 20 3b 3b  r R6RS are:.  ;;
0d70: 0a 20 20 3b 3b 20 20 20 20 20 70 61 69 72 73 20  .  ;;     pairs 
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 70              (esp
0d90: 65 63 69 61 6c 6c 79 20 69 6e 74 65 72 65 73 74  ecially interest
0da0: 69 6e 67 29 0a 20 20 3b 3b 20 20 20 20 20 76 65  ing).  ;;     ve
0db0: 63 74 6f 72 73 20 20 20 20 20 20 20 20 20 20 20  ctors           
0dc0: 28 65 73 70 65 63 69 61 6c 6c 79 20 69 6e 74 65  (especially inte
0dd0: 72 65 73 74 69 6e 67 29 0a 20 20 3b 3b 20 20 20  resting).  ;;   
0de0: 20 20 73 74 72 69 6e 67 73 0a 20 20 3b 3b 20 20    strings.  ;;  
0df0: 20 20 20 62 79 74 65 76 65 63 74 6f 72 73 0a 20     bytevectors. 
0e00: 20 3b 3b 20 20 20 20 20 72 65 63 6f 72 64 73 0a   ;;     records.
0e10: 20 20 3b 3b 20 20 20 20 20 70 6f 72 74 73 0a 20    ;;     ports. 
0e20: 20 3b 3b 20 20 20 20 20 68 61 73 68 74 61 62 6c   ;;     hashtabl
0e30: 65 73 0a 20 20 3b 3b 0a 20 20 3b 3b 20 57 65 20  es.  ;;.  ;; We 
0e40: 74 72 65 61 74 20 7a 65 72 6f 2d 6c 65 6e 67 74  treat zero-lengt
0e50: 68 20 76 65 63 74 6f 72 73 2c 20 73 74 72 69 6e  h vectors, strin
0e60: 67 73 2c 20 61 6e 64 20 62 79 74 65 76 65 63 74  gs, and bytevect
0e70: 6f 72 73 0a 20 20 3b 3b 20 61 73 20 75 6e 69 6e  ors.  ;; as unin
0e80: 74 65 72 65 73 74 69 6e 67 20 62 65 63 61 75 73  teresting becaus
0e90: 65 20 74 68 65 79 20 64 6f 6e 27 74 20 68 61 76  e they don't hav
0ea0: 65 20 61 20 6d 75 74 61 62 6c 65 20 73 74 61 74  e a mutable stat
0eb0: 65 0a 20 20 3b 3b 20 61 6e 64 20 74 68 65 20 72  e.  ;; and the r
0ec0: 65 66 65 72 65 6e 63 65 20 69 6d 70 6c 65 6d 65  eference impleme
0ed0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 53 52 46 49  ntation for SRFI
0ee0: 20 33 38 20 61 6c 73 6f 20 74 72 65 61 74 65 64   38 also treated
0ef0: 0a 20 20 3b 3b 20 74 68 65 6d 20 61 73 20 75 6e  .  ;; them as un
0f00: 69 6e 74 65 72 65 73 74 69 6e 67 2e 0a 0a 20 20  interesting...  
0f10: 28 64 65 66 69 6e 65 20 28 69 6e 74 65 72 65 73  (define (interes
0f20: 74 69 6e 67 3f 20 6f 62 6a 29 0a 20 20 20 20 28  ting? obj).    (
0f30: 6f 72 20 28 70 61 69 72 3f 20 6f 62 6a 29 0a 20  or (pair? obj). 
0f40: 20 20 20 20 20 20 20 28 61 6e 64 20 28 76 65 63         (and (vec
0f50: 74 6f 72 3f 20 6f 62 6a 29 20 28 6e 6f 74 20 28  tor? obj) (not (
0f60: 7a 65 72 6f 3f 20 28 76 65 63 74 6f 72 2d 6c 65  zero? (vector-le
0f70: 6e 67 74 68 20 6f 62 6a 29 29 29 29 0a 20 20 20  ngth obj)))).   
0f80: 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e       (and (strin
0f90: 67 3f 20 6f 62 6a 29 20 28 6e 6f 74 20 28 7a 65  g? obj) (not (ze
0fa0: 72 6f 3f 20 28 73 74 72 69 6e 67 2d 6c 65 6e 67  ro? (string-leng
0fb0: 74 68 20 6f 62 6a 29 29 29 29 0a 20 20 20 20 20  th obj)))).     
0fc0: 20 20 20 28 62 79 74 65 76 65 63 74 6f 72 3f 20     (bytevector? 
0fd0: 6f 62 6a 29 0a 20 20 20 20 20 20 20 20 28 72 65  obj).        (re
0fe0: 63 6f 72 64 3f 20 6f 62 6a 29 0a 20 20 20 20 20  cord? obj).     
0ff0: 20 20 20 28 70 6f 72 74 3f 20 6f 62 6a 29 0a 20     (port? obj). 
1000: 20 20 20 20 20 20 20 28 68 61 73 68 74 61 62 6c         (hashtabl
1010: 65 3f 20 6f 62 6a 29 29 29 0a 0a 20 20 3b 3b 20  e? obj)))..  ;; 
1020: 54 68 65 20 73 74 61 74 65 20 68 61 73 20 61 6e  The state has an
1030: 20 65 6e 74 72 79 20 66 6f 72 20 65 61 63 68 20   entry for each 
1040: 69 6e 74 65 72 65 73 74 69 6e 67 20 70 61 72 74  interesting part
1050: 20 6f 66 20 4f 42 4a 2e 20 20 54 68 65 0a 20 20   of OBJ.  The.  
1060: 3b 3b 20 61 73 73 6f 63 69 61 74 65 64 20 76 61  ;; associated va
1070: 6c 75 65 20 77 69 6c 6c 20 62 65 3a 0a 20 20 3b  lue will be:.  ;
1080: 3b 20 20 2d 2d 20 61 20 6e 75 6d 62 65 72 20 69  ;  -- a number i
1090: 66 20 74 68 65 20 70 61 72 74 20 68 61 73 20 62  f the part has b
10a0: 65 65 6e 20 67 69 76 65 6e 20 6f 6e 65 2c 0a 20  een given one,. 
10b0: 20 3b 3b 20 20 2d 2d 20 23 74 20 69 66 20 74 68   ;;  -- #t if th
10c0: 65 20 70 61 72 74 20 77 69 6c 6c 20 6e 65 65 64  e part will need
10d0: 20 74 6f 20 62 65 20 61 73 73 69 67 6e 65 64 20   to be assigned 
10e0: 61 20 6e 75 6d 62 65 72 20 62 75 74 20 68 61 73  a number but has
10f0: 20 6e 6f 74 20 62 65 65 6e 20 79 65 74 2c 0a 20   not been yet,. 
1100: 20 3b 3b 20 20 2d 2d 20 23 66 20 69 66 20 74 68   ;;  -- #f if th
1110: 65 20 70 61 72 74 20 77 69 6c 6c 20 6e 6f 74 20  e part will not 
1120: 6e 65 65 64 20 61 20 6e 75 6d 62 65 72 2e 0a 20  need a number.. 
1130: 20 3b 3b 20 54 68 65 20 73 74 61 74 65 20 61 6c   ;; The state al
1140: 73 6f 20 61 73 73 6f 63 69 61 74 65 73 20 61 20  so associates a 
1150: 73 79 6d 62 6f 6c 20 28 63 6f 75 6e 74 65 72 29  symbol (counter)
1160: 20 77 69 74 68 20 74 68 65 20 6d 6f 73 74 0a 20   with the most. 
1170: 20 3b 3b 20 72 65 63 65 6e 74 6c 79 20 61 73 73   ;; recently ass
1180: 69 67 6e 65 64 20 6e 75 6d 62 65 72 2e 0a 20 20  igned number..  
1190: 3b 3b 20 52 65 74 75 72 6e 73 20 61 20 73 74 61  ;; Returns a sta
11a0: 74 65 20 77 69 74 68 20 6e 65 77 20 65 6e 74 72  te with new entr
11b0: 69 65 73 20 66 6f 72 20 61 6e 79 20 70 61 72 74  ies for any part
11c0: 73 20 74 68 61 74 20 68 61 64 0a 20 20 3b 3b 20  s that had.  ;; 
11d0: 6e 75 6d 62 65 72 73 20 61 73 73 69 67 6e 65 64  numbers assigned
11e0: 2e 0a 0a 20 20 28 64 65 66 69 6e 65 20 28 77 72  ...  (define (wr
11f0: 69 74 65 2d 6f 62 6a 20 6f 62 6a 20 73 74 61 74  ite-obj obj stat
1200: 65 20 6f 75 74 70 6f 72 74 29 0a 0a 20 20 20 20  e outport)..    
1210: 28 64 65 66 69 6e 65 20 28 77 72 69 74 65 2d 69  (define (write-i
1220: 6e 74 65 72 65 73 74 69 6e 67 20 73 74 61 74 65  nteresting state
1230: 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28  ).      (cond ((
1240: 70 61 69 72 3f 20 6f 62 6a 29 0a 20 20 20 20 20  pair? obj).     
1250: 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79          (display
1260: 20 22 28 22 20 6f 75 74 70 6f 72 74 29 0a 20 20   "(" outport).  
1270: 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20             (let 
1280: 77 72 69 74 65 2d 63 64 72 20 28 28 6f 62 6a 20  write-cdr ((obj 
1290: 28 63 64 72 20 6f 62 6a 29 29 0a 20 20 20 20 20  (cdr obj)).     
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b0: 20 20 20 20 20 20 20 20 28 73 74 61 74 65 20 28          (state (
12c0: 77 72 69 74 65 2d 6f 62 6a 20 28 63 61 72 20 6f  write-obj (car o
12d0: 62 6a 29 20 73 74 61 74 65 20 6f 75 74 70 6f 72  bj) state outpor
12e0: 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  t))).           
12f0: 20 20 20 20 28 63 6f 6e 64 20 28 28 61 6e 64 20      (cond ((and 
1300: 28 70 61 69 72 3f 20 6f 62 6a 29 0a 20 20 20 20  (pair? obj).    
1310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1320: 20 20 20 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f         (not (loo
1330: 6b 75 70 20 6f 62 6a 20 73 74 61 74 65 29 29 29  kup obj state)))
1340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1350: 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 20         (display 
1360: 22 20 22 20 6f 75 74 70 6f 72 74 29 0a 20 20 20  " " outport).   
1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1380: 20 20 20 28 77 72 69 74 65 2d 63 64 72 20 28 63     (write-cdr (c
1390: 64 72 20 6f 62 6a 29 0a 20 20 20 20 20 20 20 20  dr obj).        
13a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b0: 20 20 20 20 20 20 20 20 20 28 77 72 69 74 65 2d           (write-
13c0: 6f 62 6a 20 28 63 61 72 20 6f 62 6a 29 20 73 74  obj (car obj) st
13d0: 61 74 65 20 6f 75 74 70 6f 72 74 29 29 29 0a 20  ate outport))). 
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f0: 20 20 20 20 28 28 6e 75 6c 6c 3f 20 6f 62 6a 29      ((null? obj)
1400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1410: 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 20         (display 
1420: 22 29 22 20 6f 75 74 70 6f 72 74 29 0a 20 20 20  ")" outport).   
1430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1440: 20 20 20 73 74 61 74 65 29 0a 20 20 20 20 20 20     state).      
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1460: 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20  else.           
1470: 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70             (disp
1480: 6c 61 79 20 22 20 2e 20 22 20 6f 75 74 70 6f 72  lay " . " outpor
1490: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t).             
14a0: 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28           (let ((
14b0: 73 74 61 74 65 20 28 77 72 69 74 65 2d 6f 62 6a  state (write-obj
14c0: 20 6f 62 6a 20 73 74 61 74 65 20 6f 75 74 70 6f   obj state outpo
14d0: 72 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  rt))).          
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64                (d
14f0: 69 73 70 6c 61 79 20 22 29 22 20 6f 75 74 70 6f  isplay ")" outpo
1500: 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  rt).            
1510: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74              stat
1520: 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  e))))).         
1530: 20 20 20 28 28 76 65 63 74 6f 72 3f 20 6f 62 6a     ((vector? obj
1540: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  ).             (
1550: 64 69 73 70 6c 61 79 20 22 23 28 22 20 6f 75 74  display "#(" out
1560: 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20  port).          
1570: 20 20 20 28 6c 65 74 20 28 28 6c 65 6e 20 28 76     (let ((len (v
1580: 65 63 74 6f 72 2d 6c 65 6e 67 74 68 20 6f 62 6a  ector-length obj
1590: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
15a0: 20 20 20 28 6c 65 74 20 77 72 69 74 65 2d 76 65     (let write-ve
15b0: 63 20 28 28 69 20 31 29 0a 20 20 20 20 20 20 20  c ((i 1).       
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 20 20 20 20 20 20 28 73 74 61 74 65 20 28          (state (
15e0: 77 72 69 74 65 2d 6f 62 6a 20 28 76 65 63 74 6f  write-obj (vecto
15f0: 72 2d 72 65 66 20 6f 62 6a 20 30 29 0a 20 20 20  r-ref obj 0).   
1600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1630: 61 74 65 20 6f 75 74 70 6f 72 74 29 29 29 0a 20  ate outport))). 
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1650: 28 63 6f 6e 64 20 28 28 3d 20 69 20 6c 65 6e 29  (cond ((= i len)
1660: 20 28 64 69 73 70 6c 61 79 20 22 29 22 20 6f 75   (display ")" ou
1670: 74 70 6f 72 74 29 20 73 74 61 74 65 29 0a 20 20  tport) state).  
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 20 20 20 28 65 6c 73 65 20 28 64 69 73 70       (else (disp
16a0: 6c 61 79 20 22 20 22 20 6f 75 74 70 6f 72 74 29  lay " " outport)
16b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77                (w
16d0: 72 69 74 65 2d 76 65 63 20 28 2b 20 69 20 31 29  rite-vec (+ i 1)
16e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
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 28 77 72 69 74 65 2d           (write-
1710: 6f 62 6a 20 28 76 65 63 74 6f 72 2d 72 65 66 20  obj (vector-ref 
1720: 6f 62 6a 20 69 29 0a 20 20 20 20 20 20 20 20 20  obj i).         
1730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1750: 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20            state 
1760: 6f 75 74 70 6f 72 74 29 29 29 29 29 29 29 0a 20  outport))))))). 
1770: 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 65 6c             ;; el
1780: 73 65 20 69 74 27 73 20 61 20 73 74 72 69 6e 67  se it's a string
1790: 20 6f 72 20 73 6f 6d 65 74 68 69 6e 67 0a 20 20   or something.  
17a0: 20 20 20 20 20 20 20 20 20 20 28 65 6c 73 65 20            (else 
17b0: 28 77 72 69 74 65 20 6f 62 6a 20 6f 75 74 70 6f  (write obj outpo
17c0: 72 74 29 20 73 74 61 74 65 29 29 29 0a 0a 20 20  rt) state)))..  
17d0: 20 20 28 63 6f 6e 64 20 28 28 69 6e 74 65 72 65    (cond ((intere
17e0: 73 74 69 6e 67 3f 20 6f 62 6a 29 0a 20 20 20 20  sting? obj).    
17f0: 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61         (let ((va
1800: 6c 20 28 6c 6f 6f 6b 75 70 20 6f 62 6a 20 73 74  l (lookup obj st
1810: 61 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20  ate))).         
1820: 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 6f 74 20      (cond ((not 
1830: 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20  val).           
1840: 20 20 20 20 20 20 20 20 20 28 77 72 69 74 65 2d           (write-
1850: 69 6e 74 65 72 65 73 74 69 6e 67 20 73 74 61 74  interesting stat
1860: 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)).            
1870: 20 20 20 20 20 20 20 28 28 6e 75 6d 62 65 72 3f         ((number?
1880: 20 76 61 6c 29 20 0a 20 20 20 20 20 20 20 20 20   val) .         
1890: 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69             (begi
18a0: 6e 20 28 64 69 73 70 6c 61 79 20 22 23 22 20 6f  n (display "#" o
18b0: 75 74 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20  utport).        
18c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d0: 20 20 20 28 77 72 69 74 65 20 76 61 6c 20 6f 75     (write val ou
18e0: 74 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20  tport).         
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1900: 20 20 28 64 69 73 70 6c 61 79 20 22 23 22 20 6f    (display "#" o
1910: 75 74 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20  utport).        
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1930: 20 20 20 73 74 61 74 65 29 29 0a 20 20 20 20 20     state)).     
1940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65                (e
1950: 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  lse.            
1960: 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28          (let* ((
1970: 6e 20 28 2b 20 31 20 28 6c 6f 6f 6b 75 70 20 27  n (+ 1 (lookup '
1980: 63 6f 75 6e 74 65 72 20 73 74 61 74 65 29 29 29  counter state)))
1990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61              (sta
19b0: 74 65 20 28 75 70 64 61 74 65 64 2d 73 74 61 74  te (updated-stat
19c0: 65 20 27 63 6f 75 6e 74 65 72 20 6e 20 73 74 61  e 'counter n sta
19d0: 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  te))).          
19e0: 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67              (beg
19f0: 69 6e 20 28 64 69 73 70 6c 61 79 20 22 23 22 20  in (display "#" 
1a00: 6f 75 74 70 6f 72 74 29 0a 20 20 20 20 20 20 20  outport).       
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a20: 20 20 20 20 20 20 28 77 72 69 74 65 20 6e 20 6f        (write n o
1a30: 75 74 70 6f 72 74 29 20 0a 20 20 20 20 20 20 20  utport) .       
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a50: 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 20 22        (display "
1a60: 3d 22 20 6f 75 74 70 6f 72 74 29 29 0a 20 20 20  =" outport)).   
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a80: 20 20 20 28 77 72 69 74 65 2d 69 6e 74 65 72 65     (write-intere
1a90: 73 74 69 6e 67 20 28 75 70 64 61 74 65 64 2d 73  sting (updated-s
1aa0: 74 61 74 65 20 6f 62 6a 20 6e 20 73 74 61 74 65  tate obj n state
1ab0: 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  ))))))).        
1ac0: 20 20 28 65 6c 73 65 20 28 77 72 69 74 65 20 6f    (else (write o
1ad0: 62 6a 20 6f 75 74 70 6f 72 74 29 20 73 74 61 74  bj outport) stat
1ae0: 65 29 29 29 0a 0a 20 20 3b 3b 20 53 63 61 6e 20  e)))..  ;; Scan 
1af0: 63 6f 6d 70 75 74 65 73 20 74 68 65 20 69 6e 69  computes the ini
1b00: 74 69 61 6c 20 76 61 6c 75 65 20 6f 66 20 74 68  tial value of th
1b10: 65 20 73 74 61 74 65 2c 20 77 68 69 63 68 20 6d  e state, which m
1b20: 61 70 73 20 65 61 63 68 0a 20 20 3b 3b 20 69 6e  aps each.  ;; in
1b30: 74 65 72 65 73 74 69 6e 67 20 70 61 72 74 20 6f  teresting part o
1b40: 66 20 74 68 65 20 6f 62 6a 65 63 74 20 74 6f 20  f the object to 
1b50: 23 74 20 69 66 20 69 74 20 6f 63 63 75 72 73 20  #t if it occurs 
1b60: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 2c 0a  multiple times,.
1b70: 20 20 3b 3b 20 23 66 20 69 66 20 6f 6e 6c 79 20    ;; #f if only 
1b80: 6f 6e 63 65 2e 0a 0a 20 20 28 64 65 66 69 6e 65  once...  (define
1b90: 20 28 73 63 61 6e 20 6f 62 6a 20 73 74 61 74 65   (scan obj state
1ba0: 29 0a 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 6f  ).    (cond ((no
1bb0: 74 20 28 69 6e 74 65 72 65 73 74 69 6e 67 3f 20  t (interesting? 
1bc0: 6f 62 6a 29 29 20 73 74 61 74 65 29 0a 20 20 20  obj)) state).   
1bd0: 20 20 20 20 20 20 20 28 28 70 72 65 73 65 6e 74         ((present
1be0: 3f 20 6f 62 6a 20 73 74 61 74 65 29 0a 20 20 20  ? obj state).   
1bf0: 20 20 20 20 20 20 20 20 28 75 70 64 61 74 65 64          (updated
1c00: 2d 73 74 61 74 65 20 6f 62 6a 20 23 74 20 73 74  -state obj #t st
1c10: 61 74 65 29 29 0a 20 20 20 20 20 20 20 20 20 20  ate)).          
1c20: 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20  (else.          
1c30: 20 28 6c 65 74 20 28 28 73 74 61 74 65 20 28 75   (let ((state (u
1c40: 70 64 61 74 65 64 2d 73 74 61 74 65 20 6f 62 6a  pdated-state obj
1c50: 20 23 66 20 73 74 61 74 65 29 29 29 0a 20 20 20   #f state))).   
1c60: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20            (cond 
1c70: 28 28 70 61 69 72 3f 20 6f 62 6a 29 20 28 73 63  ((pair? obj) (sc
1c80: 61 6e 20 28 63 61 72 20 6f 62 6a 29 20 28 73 63  an (car obj) (sc
1c90: 61 6e 20 28 63 64 72 20 6f 62 6a 29 20 73 74 61  an (cdr obj) sta
1ca0: 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  te))).          
1cb0: 20 20 20 20 20 20 20 20 20 28 28 76 65 63 74 6f           ((vecto
1cc0: 72 3f 20 6f 62 6a 29 0a 20 20 20 20 20 20 20 20  r? obj).        
1cd0: 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74              (let
1ce0: 20 28 28 6c 65 6e 20 28 76 65 63 74 6f 72 2d 6c   ((len (vector-l
1cf0: 65 6e 67 74 68 20 6f 62 6a 29 29 29 0a 20 20 20  ength obj))).   
1d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d10: 20 20 20 28 64 6f 20 28 28 69 20 30 20 28 2b 20     (do ((i 0 (+ 
1d20: 31 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 20  1 i)).          
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d40: 20 28 73 74 61 74 65 20 73 74 61 74 65 20 28 73   (state state (s
1d50: 63 61 6e 20 28 76 65 63 74 6f 72 2d 72 65 66 20  can (vector-ref 
1d60: 6f 62 6a 20 69 29 20 73 74 61 74 65 29 29 29 0a  obj i) state))).
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d80: 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 69 20            ((= i 
1d90: 6c 65 6e 29 20 73 74 61 74 65 29 29 29 29 0a 20  len) state)))). 
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db0: 20 20 28 65 6c 73 65 20 73 74 61 74 65 29 29 29    (else state)))
1dc0: 29 29 29 0a 0a 20 20 28 6c 65 74 2a 20 28 28 73  )))..  (let* ((s
1dd0: 74 61 74 65 20 28 6d 61 6b 65 2d 65 71 2d 68 61  tate (make-eq-ha
1de0: 73 68 74 61 62 6c 65 29 29 0a 20 20 20 20 20 20  shtable)).      
1df0: 20 20 20 28 73 74 61 74 65 20 28 73 63 61 6e 20     (state (scan 
1e00: 6f 62 6a 20 73 74 61 74 65 29 29 0a 20 20 20 20  obj state)).    
1e10: 20 20 20 20 20 28 73 74 61 74 65 20 28 75 70 64       (state (upd
1e20: 61 74 65 64 2d 73 74 61 74 65 20 27 63 6f 75 6e  ated-state 'coun
1e30: 74 65 72 20 30 20 73 74 61 74 65 29 29 0a 20 20  ter 0 state)).  
1e40: 20 20 20 20 20 20 20 28 6f 75 74 70 6f 72 74 20         (outport 
1e50: 28 69 66 20 28 65 71 3f 20 27 28 29 20 6f 70 74  (if (eq? '() opt
1e60: 69 6f 6e 61 6c 2d 70 6f 72 74 29 0a 20 20 20 20  ional-port).    
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 28 63 75 72 72 65 6e 74 2d 6f 75 74 70 75    (current-outpu
1e90: 74 2d 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20  t-port).        
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
1eb0: 61 72 20 6f 70 74 69 6f 6e 61 6c 2d 70 6f 72 74  ar optional-port
1ec0: 29 29 29 29 0a 20 20 20 20 28 77 72 69 74 65 2d  )))).    (write-
1ed0: 6f 62 6a 20 6f 62 6a 20 73 74 61 74 65 20 6f 75  obj obj state ou
1ee0: 74 70 6f 72 74 29 0a 20 20 20 20 3b 3b 20 57 65  tport).    ;; We
1ef0: 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 6f 20 72   don't want to r
1f00: 65 74 75 72 6e 20 74 68 65 20 62 69 67 20 73 74  eturn the big st
1f10: 61 74 65 20 74 68 61 74 20 77 72 69 74 65 2d 6f  ate that write-o
1f20: 62 6a 20 6a 75 73 74 20 72 65 74 75 72 6e 65 64  bj just returned
1f30: 2e 0a 20 20 20 20 28 69 66 20 23 66 20 23 66 29  ..    (if #f #f)
1f40: 29 29 0a 0a 0a 3b 3b 3b 20 43 6f 70 79 72 69 67  ))...;;; Copyrig
1f50: 68 74 20 28 43 29 20 57 69 6c 6c 69 61 6d 20 44  ht (C) William D
1f60: 20 43 6c 69 6e 67 65 72 20 28 32 30 30 38 29 2e   Clinger (2008).
1f70: 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65   All Rights Rese
1f80: 72 76 65 64 2e 0a 3b 3b 3b 20 0a 3b 3b 3b 20 50  rved..;;; .;;; P
1f90: 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 68 65 72  ermission is her
1fa0: 65 62 79 20 67 72 61 6e 74 65 64 2c 20 66 72 65  eby granted, fre
1fb0: 65 20 6f 66 20 63 68 61 72 67 65 2c 20 74 6f 20  e of charge, to 
1fc0: 61 6e 79 0a 3b 3b 3b 20 70 65 72 73 6f 6e 20 6f  any.;;; person o
1fd0: 62 74 61 69 6e 69 6e 67 20 61 20 63 6f 70 79 20  btaining a copy 
1fe0: 6f 66 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  of this software
1ff0: 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 0a   and associated.
2000: 3b 3b 3b 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ;;; documentatio
2010: 6e 20 66 69 6c 65 73 20 28 74 68 65 20 22 53 6f  n files (the "So
2020: 66 74 77 61 72 65 22 29 2c 20 74 6f 20 64 65 61  ftware"), to dea
2030: 6c 20 69 6e 20 74 68 65 0a 3b 3b 3b 20 53 6f 66  l in the.;;; Sof
2040: 74 77 61 72 65 20 77 69 74 68 6f 75 74 20 72 65  tware without re
2050: 73 74 72 69 63 74 69 6f 6e 2c 20 69 6e 63 6c 75  striction, inclu
2060: 64 69 6e 67 20 77 69 74 68 6f 75 74 0a 3b 3b 3b  ding without.;;;
2070: 20 6c 69 6d 69 74 61 74 69 6f 6e 20 74 68 65 20   limitation the 
2080: 72 69 67 68 74 73 20 74 6f 20 75 73 65 2c 20 63  rights to use, c
2090: 6f 70 79 2c 20 6d 6f 64 69 66 79 2c 20 6d 65 72  opy, modify, mer
20a0: 67 65 2c 0a 3b 3b 3b 20 70 75 62 6c 69 73 68 2c  ge,.;;; publish,
20b0: 20 64 69 73 74 72 69 62 75 74 65 2c 20 73 75 62   distribute, sub
20c0: 6c 69 63 65 6e 73 65 2c 20 61 6e 64 2f 6f 72 20  license, and/or 
20d0: 73 65 6c 6c 20 63 6f 70 69 65 73 20 6f 66 0a 3b  sell copies of.;
20e0: 3b 3b 20 74 68 65 20 53 6f 66 74 77 61 72 65 2c  ;; the Software,
20f0: 20 61 6e 64 20 74 6f 20 70 65 72 6d 69 74 20 70   and to permit p
2100: 65 72 73 6f 6e 73 20 74 6f 20 77 68 6f 6d 20 74  ersons to whom t
2110: 68 65 20 53 6f 66 74 77 61 72 65 0a 3b 3b 3b 20  he Software.;;; 
2120: 69 73 20 66 75 72 6e 69 73 68 65 64 20 74 6f 20  is furnished to 
2130: 64 6f 20 73 6f 2c 20 73 75 62 6a 65 63 74 20 74  do so, subject t
2140: 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a  o the following.
2150: 3b 3b 3b 20 63 6f 6e 64 69 74 69 6f 6e 73 3a 0a  ;;; conditions:.
2160: 3b 3b 3b 20 0a 3b 3b 3b 20 54 68 65 20 61 62 6f  ;;; .;;; The abo
2170: 76 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74  ve copyright not
2180: 69 63 65 20 61 6e 64 20 74 68 69 73 20 70 65 72  ice and this per
2190: 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 0a 3b  mission notice.;
21a0: 3b 3b 20 73 68 61 6c 6c 20 62 65 20 69 6e 63 6c  ;; shall be incl
21b0: 75 64 65 64 20 69 6e 20 61 6c 6c 20 63 6f 70 69  uded in all copi
21c0: 65 73 20 6f 72 20 73 75 62 73 74 61 6e 74 69 61  es or substantia
21d0: 6c 20 70 6f 72 74 69 6f 6e 73 0a 3b 3b 3b 20 6f  l portions.;;; o
21e0: 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 2e 0a  f the Software..
21f0: 3b 3b 3b 20 0a 3b 3b 3b 20 54 48 45 20 53 4f 46  ;;; .;;; THE SOF
2200: 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 45  TWARE IS PROVIDE
2210: 44 20 22 41 53 20 49 53 22 2c 20 57 49 54 48 4f  D "AS IS", WITHO
2220: 55 54 20 57 41 52 52 41 4e 54 59 20 4f 46 0a 3b  UT WARRANTY OF.;
2230: 3b 3b 20 41 4e 59 20 4b 49 4e 44 2c 20 45 58 50  ;; ANY KIND, EXP
2240: 52 45 53 53 20 4f 52 20 49 4d 50 4c 49 45 44 2c  RESS OR IMPLIED,
2250: 20 49 4e 43 4c 55 44 49 4e 47 20 42 55 54 20 4e   INCLUDING BUT N
2260: 4f 54 20 4c 49 4d 49 54 45 44 0a 3b 3b 3b 20 54  OT LIMITED.;;; T
2270: 4f 20 54 48 45 20 57 41 52 52 41 4e 54 49 45 53  O THE WARRANTIES
2280: 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c   OF MERCHANTABIL
2290: 49 54 59 2c 20 46 49 54 4e 45 53 53 20 46 4f 52  ITY, FITNESS FOR
22a0: 20 41 0a 3b 3b 3b 20 50 41 52 54 49 43 55 4c 41   A.;;; PARTICULA
22b0: 52 20 50 55 52 50 4f 53 45 20 41 4e 44 20 4e 4f  R PURPOSE AND NO
22c0: 4e 49 4e 46 52 49 4e 47 45 4d 45 4e 54 2e 20 49  NINFRINGEMENT. I
22d0: 4e 20 4e 4f 20 45 56 45 4e 54 0a 3b 3b 3b 20 53  N NO EVENT.;;; S
22e0: 48 41 4c 4c 20 54 48 45 20 41 55 54 48 4f 52 53  HALL THE AUTHORS
22f0: 20 4f 52 20 43 4f 50 59 52 49 47 48 54 20 48 4f   OR COPYRIGHT HO
2300: 4c 44 45 52 53 20 42 45 20 4c 49 41 42 4c 45 20  LDERS BE LIABLE 
2310: 46 4f 52 20 41 4e 59 0a 3b 3b 3b 20 43 4c 41 49  FOR ANY.;;; CLAI
2320: 4d 2c 20 44 41 4d 41 47 45 53 20 4f 52 20 4f 54  M, DAMAGES OR OT
2330: 48 45 52 20 4c 49 41 42 49 4c 49 54 59 2c 20 57  HER LIABILITY, W
2340: 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41 43 54  HETHER IN AN ACT
2350: 49 4f 4e 0a 3b 3b 3b 20 4f 46 20 43 4f 4e 54 52  ION.;;; OF CONTR
2360: 41 43 54 2c 20 54 4f 52 54 20 4f 52 20 4f 54 48  ACT, TORT OR OTH
2370: 45 52 57 49 53 45 2c 20 41 52 49 53 49 4e 47 20  ERWISE, ARISING 
2380: 46 52 4f 4d 2c 20 4f 55 54 20 4f 46 20 4f 52 0a  FROM, OUT OF OR.
2390: 3b 3b 3b 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f  ;;; IN CONNECTIO
23a0: 4e 20 57 49 54 48 20 54 48 45 20 53 4f 46 54 57  N WITH THE SOFTW
23b0: 41 52 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f  ARE OR THE USE O
23c0: 52 20 4f 54 48 45 52 0a 3b 3b 3b 20 44 45 41 4c  R OTHER.;;; DEAL
23d0: 49 4e 47 53 20 49 4e 20 54 48 45 20 53 4f 46 54  INGS IN THE SOFT
23e0: 57 41 52 45 2e 0a 0a 3b 3b 3b 3b 3b 3b 3b 3b 3b  WARE...;;;;;;;;;
23f0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
2400: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
2410: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
2420: 3b 3b 3b 3b 3b 3b 3b 0a 3b 0a 3b 20 72 65 61 64  ;;;;;;;.;.; read
2430: 2d 77 69 74 68 2d 73 68 61 72 65 64 2d 73 74 72  -with-shared-str
2440: 75 63 74 75 72 65 0a 3b 0a 3b 20 42 61 73 65 64  ucture.;.; Based
2450: 20 6f 6e 20 43 6c 69 6e 67 65 72 27 73 20 72 65   on Clinger's re
2460: 66 65 72 65 6e 63 65 20 69 6d 70 6c 65 6d 65 6e  ference implemen
2470: 74 61 74 69 6f 6e 20 6f 66 20 67 65 74 2d 64 61  tation of get-da
2480: 74 75 6d 2e 0a 3b 0a 3b 20 54 68 65 20 73 63 61  tum..;.; The sca
2490: 6e 6e 65 72 27 73 20 73 74 61 74 65 20 6d 61 63  nner's state mac
24a0: 68 69 6e 65 20 61 6e 64 20 74 68 65 20 72 65 63  hine and the rec
24b0: 75 72 73 69 76 65 20 64 65 73 63 65 6e 74 20 70  ursive descent p
24c0: 61 72 73 65 72 0a 3b 20 77 65 72 65 20 67 65 6e  arser.; were gen
24d0: 65 72 61 74 65 64 20 62 79 20 57 69 6c 6c 20 43  erated by Will C
24e0: 6c 69 6e 67 65 72 27 73 20 4c 65 78 47 65 6e 20  linger's LexGen 
24f0: 61 6e 64 20 50 61 72 73 65 47 65 6e 2c 20 73 6f  and ParseGen, so
2500: 20 74 68 65 0a 3b 20 70 61 72 73 65 72 20 63 61   the.; parser ca
2510: 6e 20 62 65 20 65 78 74 65 6e 64 65 64 20 6f 72  n be extended or
2520: 20 63 75 73 74 6f 6d 69 7a 65 64 20 62 79 20 72   customized by r
2530: 65 67 65 6e 65 72 61 74 69 6e 67 20 74 68 6f 73  egenerating thos
2540: 65 0a 3b 20 70 61 72 74 73 2e 0a 3b 0a 3b 20 4c  e.; parts..;.; L
2550: 65 78 47 65 6e 20 61 6e 64 20 50 61 72 73 65 47  exGen and ParseG
2560: 65 6e 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  en are available
2570: 20 61 74 0a 3b 20 68 74 74 70 3a 2f 2f 77 77 77   at.; http://www
2580: 2e 63 63 73 2e 6e 65 75 2e 65 64 75 2f 68 6f 6d  .ccs.neu.edu/hom
2590: 65 2f 77 69 6c 6c 2f 52 65 73 65 61 72 63 68 2f  e/will/Research/
25a0: 53 57 32 30 30 36 2f 2a 2e 74 61 72 2e 67 7a 0a  SW2006/*.tar.gz.
25b0: 3b 0a 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;.;;;;;;;;;;;;;;
25c0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
25d0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
25e0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
25f0: 3b 3b 0a 0a 3b 20 46 69 78 75 70 20 6f 62 6a 65  ;;..; Fixup obje
2600: 63 74 73 20 61 72 65 20 75 73 65 64 20 74 6f 20  cts are used to 
2610: 69 6d 70 6c 65 6d 65 6e 74 20 53 52 46 49 20 33  implement SRFI 3
2620: 38 2e 0a 0a 28 64 65 66 69 6e 65 20 72 74 64 3a  8...(define rtd:
2630: 66 69 78 75 70 2d 6f 62 6a 65 63 74 0a 20 20 28  fixup-object.  (
2640: 6d 61 6b 65 2d 72 74 64 20 27 66 69 78 75 70 2d  make-rtd 'fixup-
2650: 6f 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20  object.         
2660: 20 20 20 27 23 28 28 69 6d 6d 75 74 61 62 6c 65     '#((immutable
2670: 20 69 6e 64 65 78 29 0a 20 20 20 20 20 20 20 20   index).        
2680: 20 20 20 20 20 20 20 28 6d 75 74 61 62 6c 65 20         (mutable 
2690: 72 65 61 64 79 29 0a 20 20 20 20 20 20 20 20 20  ready).         
26a0: 20 20 20 20 20 20 28 6d 75 74 61 62 6c 65 20 76        (mutable v
26b0: 61 6c 75 65 29 29 29 29 0a 0a 28 64 65 66 69 6e  alue))))..(defin
26c0: 65 20 6d 61 6b 65 2d 72 61 77 2d 66 69 78 75 70  e make-raw-fixup
26d0: 2d 6f 62 6a 65 63 74 20 28 72 74 64 2d 63 6f 6e  -object (rtd-con
26e0: 73 74 72 75 63 74 6f 72 20 72 74 64 3a 66 69 78  structor rtd:fix
26f0: 75 70 2d 6f 62 6a 65 63 74 29 29 0a 0a 28 64 65  up-object))..(de
2700: 66 69 6e 65 20 28 6d 61 6b 65 2d 66 69 78 75 70  fine (make-fixup
2710: 2d 6f 62 6a 65 63 74 20 69 6e 64 65 78 29 0a 20  -object index). 
2720: 20 28 6d 61 6b 65 2d 72 61 77 2d 66 69 78 75 70   (make-raw-fixup
2730: 2d 6f 62 6a 65 63 74 20 69 6e 64 65 78 20 23 66  -object index #f
2740: 20 23 66 29 29 0a 0a 28 64 65 66 69 6e 65 20 66   #f))..(define f
2750: 69 78 75 70 2d 6f 62 6a 65 63 74 3f 20 28 72 74  ixup-object? (rt
2760: 64 2d 70 72 65 64 69 63 61 74 65 20 72 74 64 3a  d-predicate rtd:
2770: 66 69 78 75 70 2d 6f 62 6a 65 63 74 29 29 0a 0a  fixup-object))..
2780: 28 64 65 66 69 6e 65 20 66 69 78 75 70 2d 72 65  (define fixup-re
2790: 61 64 79 3f 20 28 72 74 64 2d 61 63 63 65 73 73  ady? (rtd-access
27a0: 6f 72 20 72 74 64 3a 66 69 78 75 70 2d 6f 62 6a  or rtd:fixup-obj
27b0: 65 63 74 20 27 72 65 61 64 79 29 29 0a 0a 28 64  ect 'ready))..(d
27c0: 65 66 69 6e 65 20 66 69 78 75 70 2d 69 6e 64 65  efine fixup-inde
27d0: 78 20 28 72 74 64 2d 61 63 63 65 73 73 6f 72 20  x (rtd-accessor 
27e0: 72 74 64 3a 66 69 78 75 70 2d 6f 62 6a 65 63 74  rtd:fixup-object
27f0: 20 27 69 6e 64 65 78 29 29 0a 0a 28 64 65 66 69   'index))..(defi
2800: 6e 65 20 66 69 78 75 70 2d 76 61 6c 75 65 20 28  ne fixup-value (
2810: 72 74 64 2d 61 63 63 65 73 73 6f 72 20 72 74 64  rtd-accessor rtd
2820: 3a 66 69 78 75 70 2d 6f 62 6a 65 63 74 20 27 76  :fixup-object 'v
2830: 61 6c 75 65 29 29 0a 0a 28 64 65 66 69 6e 65 20  alue))..(define 
2840: 28 66 69 78 75 70 2d 72 65 61 64 79 21 20 66 69  (fixup-ready! fi
2850: 78 75 70 20 6f 62 6a 29 0a 20 20 28 72 61 77 2d  xup obj).  (raw-
2860: 66 69 78 75 70 2d 76 61 6c 75 65 21 20 66 69 78  fixup-value! fix
2870: 75 70 20 6f 62 6a 29 0a 20 20 28 72 61 77 2d 66  up obj).  (raw-f
2880: 69 78 75 70 2d 72 65 61 64 79 21 20 66 69 78 75  ixup-ready! fixu
2890: 70 20 23 74 29 29 0a 0a 28 64 65 66 69 6e 65 20  p #t))..(define 
28a0: 72 61 77 2d 66 69 78 75 70 2d 72 65 61 64 79 21  raw-fixup-ready!
28b0: 20 28 72 74 64 2d 6d 75 74 61 74 6f 72 20 72 74   (rtd-mutator rt
28c0: 64 3a 66 69 78 75 70 2d 6f 62 6a 65 63 74 20 27  d:fixup-object '
28d0: 72 65 61 64 79 29 29 0a 28 64 65 66 69 6e 65 20  ready)).(define 
28e0: 72 61 77 2d 66 69 78 75 70 2d 76 61 6c 75 65 21  raw-fixup-value!
28f0: 20 28 72 74 64 2d 6d 75 74 61 74 6f 72 20 72 74   (rtd-mutator rt
2900: 64 3a 66 69 78 75 70 2d 6f 62 6a 65 63 74 20 27  d:fixup-object '
2910: 76 61 6c 75 65 29 29 0a 0a 3b 20 54 68 65 20 65  value))..; The e
2920: 78 70 6f 72 74 65 64 20 65 6e 74 72 79 20 70 6f  xported entry po
2930: 69 6e 74 2e 0a 0a 28 64 65 66 69 6e 65 20 28 72  int...(define (r
2940: 65 61 64 2d 77 69 74 68 2d 73 68 61 72 65 64 2d  ead-with-shared-
2950: 73 74 72 75 63 74 75 72 65 20 2e 20 72 65 73 74  structure . rest
2960: 29 0a 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c  ).  (cond ((null
2970: 3f 20 72 65 73 74 29 0a 20 20 20 20 20 20 20 20  ? rest).        
2980: 20 28 72 65 61 64 2d 77 69 74 68 2d 73 68 61 72   (read-with-shar
2990: 65 64 2d 73 74 72 75 63 74 75 72 65 2d 6c 6f 63  ed-structure-loc
29a0: 61 6c 20 28 63 75 72 72 65 6e 74 2d 69 6e 70 75  al (current-inpu
29b0: 74 2d 70 6f 72 74 29 29 29 0a 20 20 20 20 20 20  t-port))).      
29c0: 20 20 28 28 61 6e 64 20 28 6e 75 6c 6c 3f 20 28    ((and (null? (
29d0: 63 64 72 20 72 65 73 74 29 29 0a 20 20 20 20 20  cdr rest)).     
29e0: 20 20 20 20 20 20 20 20 20 28 69 6e 70 75 74 2d           (input-
29f0: 70 6f 72 74 3f 20 28 63 61 72 20 72 65 73 74 29  port? (car rest)
2a00: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2a10: 28 74 65 78 74 75 61 6c 2d 70 6f 72 74 3f 20 28  (textual-port? (
2a20: 63 61 72 20 72 65 73 74 29 29 29 0a 20 20 20 20  car rest))).    
2a30: 20 20 20 20 20 28 72 65 61 64 2d 77 69 74 68 2d       (read-with-
2a40: 73 68 61 72 65 64 2d 73 74 72 75 63 74 75 72 65  shared-structure
2a50: 2d 6c 6f 63 61 6c 20 28 63 61 72 20 72 65 73 74  -local (car rest
2a60: 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 6c 73  ))).        (els
2a70: 65 0a 20 20 20 20 20 20 20 20 20 28 61 73 73 65  e.         (asse
2a80: 72 74 69 6f 6e 2d 76 69 6f 6c 61 74 69 6f 6e 20  rtion-violation 
2a90: 27 72 65 61 64 2d 77 69 74 68 2d 73 68 61 72 65  'read-with-share
2aa0: 64 2d 73 74 72 75 63 74 75 72 65 0a 20 20 20 20  d-structure.    
2ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac0: 20 20 20 20 20 20 20 20 20 20 22 69 6c 6c 65 67            "illeg
2ad0: 61 6c 20 61 72 67 75 6d 65 6e 74 28 73 29 22 20  al argument(s)" 
2ae0: 72 65 73 74 29 29 29 29 0a 0a 28 64 65 66 69 6e  rest))))..(defin
2af0: 65 20 28 72 65 61 64 2d 77 69 74 68 2d 73 68 61  e (read-with-sha
2b00: 72 65 64 2d 73 74 72 75 63 74 75 72 65 2d 6c 6f  red-structure-lo
2b10: 63 61 6c 20 69 6e 70 75 74 2d 70 6f 72 74 29 0a  cal input-port).
2b20: 0a 20 20 3b 20 43 6f 6e 73 74 61 6e 74 73 20 61  .  ; Constants a
2b30: 6e 64 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c  nd local variabl
2b40: 65 73 2e 0a 0a 20 20 28 6c 65 74 2a 20 28 3b 20  es...  (let* (; 
2b50: 43 6f 6e 73 74 61 6e 74 73 2e 0a 0a 20 20 20 20  Constants...    
2b60: 20 20 20 20 20 3b 20 69 6e 69 74 69 61 6c 20 6c       ; initial l
2b70: 65 6e 67 74 68 20 6f 66 20 73 74 72 69 6e 67 5f  ength of string_
2b80: 61 63 63 75 6d 75 6c 61 74 6f 72 0a 0a 20 20 20  accumulator..   
2b90: 20 20 20 20 20 20 28 69 6e 69 74 69 61 6c 5f 61        (initial_a
2ba0: 63 63 75 6d 75 6c 61 74 6f 72 5f 6c 65 6e 67 74  ccumulator_lengt
2bb0: 68 20 36 34 29 0a 0a 20 20 20 20 20 20 20 20 20  h 64)..         
2bc0: 3b 20 45 6e 63 6f 64 69 6e 67 73 20 6f 66 20 65  ; Encodings of e
2bd0: 72 72 6f 72 20 6d 65 73 73 61 67 65 73 2e 0a 0a  rror messages...
2be0: 20 20 20 20 20 20 20 20 20 28 65 72 72 4c 6f 6e           (errLon
2bf0: 67 54 6f 6b 65 6e 20 31 29 20 20 20 20 20 20 20  gToken 1)       
2c00: 20 20 20 20 20 20 20 20 20 20 3b 20 65 78 74 72            ; extr
2c10: 65 6d 65 6c 79 20 6c 6f 6e 67 20 74 6f 6b 65 6e  emely long token
2c20: 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 49 6e  .         (errIn
2c30: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 20 32 29  completeToken 2)
2c40: 20 20 20 20 20 20 3b 20 61 6e 79 20 6c 65 78 69        ; any lexi
2c50: 63 61 6c 20 65 72 72 6f 72 2c 20 72 65 61 6c 6c  cal error, reall
2c60: 79 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 49  y.         (errI
2c70: 6c 6c 65 67 61 6c 48 65 78 45 73 63 61 70 65 20  llegalHexEscape 
2c80: 33 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20  3)              
2c90: 20 20 20 3b 20 69 6c 6c 65 67 61 6c 20 5c 78 2e     ; illegal \x.
2ca0: 2e 2e 0a 20 20 20 20 20 20 20 20 20 28 65 72 72  ...         (err
2cb0: 49 6c 6c 65 67 61 6c 4e 61 6d 65 64 43 68 61 72  IllegalNamedChar
2cc0: 20 34 29 20 20 20 20 20 20 20 20 20 20 20 20 20   4)             
2cd0: 20 20 20 20 3b 20 69 6c 6c 65 67 61 6c 20 23 5c      ; illegal #\
2ce0: 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 28 65 72  ....         (er
2cf0: 72 49 6c 6c 65 67 61 6c 53 74 72 69 6e 67 20 35  rIllegalString 5
2d00: 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  )               
2d10: 20 20 20 20 3b 20 69 6c 6c 65 67 61 6c 20 73 74      ; illegal st
2d20: 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 28 65  ring.         (e
2d30: 72 72 49 6c 6c 65 67 61 6c 53 79 6d 62 6f 6c 20  rrIllegalSymbol 
2d40: 36 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20  6)              
2d50: 20 20 20 20 20 3b 20 69 6c 6c 65 67 61 6c 20 73       ; illegal s
2d60: 79 6d 62 6f 6c 0a 20 20 20 20 20 20 20 20 20 28  ymbol.         (
2d70: 65 72 72 4e 6f 44 65 6c 69 6d 69 74 65 72 20 37  errNoDelimiter 7
2d80: 29 20 20 20 20 20 20 3b 20 6d 69 73 73 69 6e 67  )      ; missing
2d90: 20 64 65 6c 69 6d 69 74 65 72 20 61 66 74 65 72   delimiter after
2da0: 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20   token.         
2db0: 28 65 72 72 53 52 46 49 33 38 20 38 29 20 20 20  (errSRFI38 8)   
2dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd0: 20 20 20 20 20 20 20 20 3b 20 69 6c 6c 65 67 61          ; illega
2de0: 6c 20 23 2e 2e 2e 23 0a 20 20 20 20 20 20 20 20  l #...#.        
2df0: 20 28 65 72 72 42 75 67 20 39 29 20 20 20 20 20   (errBug 9)     
2e00: 20 20 20 20 20 20 20 3b 20 62 75 67 20 69 6e 20         ; bug in 
2e10: 72 65 61 64 65 72 2c 20 73 68 6f 75 6c 64 6e 27  reader, shouldn'
2e20: 74 20 68 61 70 70 65 6e 0a 20 20 20 20 20 20 20  t happen.       
2e30: 20 20 28 65 72 72 4c 65 78 47 65 6e 42 75 67 20    (errLexGenBug 
2e40: 31 30 29 20 20 20 20 20 20 20 20 20 20 20 20 20  10)             
2e50: 20 20 20 20 20 20 20 20 20 20 20 3b 20 63 61 6e             ; can
2e60: 27 74 20 68 61 70 70 65 6e 0a 0a 20 20 20 20 20  't happen..     
2e70: 20 20 20 20 3b 20 49 6d 70 6f 72 74 61 6e 74 20      ; Important 
2e80: 62 75 74 20 75 6e 6e 61 6d 65 64 20 6e 6f 6e 2d  but unnamed non-
2e90: 41 73 63 69 69 20 63 68 61 72 61 63 74 65 72 73  Ascii characters
2ea0: 2e 0a 0a 20 20 20 20 20 20 20 20 20 28 63 68 61  ...         (cha
2eb0: 72 3a 6e 65 6c 20 20 20 20 28 69 6e 74 65 67 65  r:nel    (intege
2ec0: 72 2d 3e 63 68 61 72 20 23 78 38 35 29 29 0a 20  r->char #x85)). 
2ed0: 20 20 20 20 20 20 20 20 28 63 68 61 72 3a 6c 73          (char:ls
2ee0: 20 20 20 20 20 28 69 6e 74 65 67 65 72 2d 3e 63       (integer->c
2ef0: 68 61 72 20 23 78 32 30 32 38 29 29 0a 0a 20 20  har #x2028))..  
2f00: 20 20 20 20 20 20 20 3b 20 53 74 61 74 65 20 66         ; State f
2f10: 6f 72 20 6f 6e 65 2d 74 6f 6b 65 6e 20 62 75 66  or one-token buf
2f20: 66 65 72 69 6e 67 20 69 6e 20 6c 65 78 69 63 61  fering in lexica
2f30: 6c 20 61 6e 61 6c 79 7a 65 72 2e 0a 0a 20 20 20  l analyzer...   
2f40: 20 20 20 20 20 20 28 6b 69 6e 64 4f 66 4e 65 78        (kindOfNex
2f50: 74 54 6f 6b 65 6e 20 27 7a 31 29 20 20 20 20 20  tToken 'z1)     
2f60: 20 3b 20 76 61 6c 69 64 20 69 66 66 20 6e 65 78   ; valid iff nex
2f70: 74 54 6f 6b 65 6e 49 73 52 65 61 64 79 0a 20 20  tTokenIsReady.  
2f80: 20 20 20 20 20 20 20 28 6e 65 78 74 54 6f 6b 65         (nextToke
2f90: 6e 49 73 52 65 61 64 79 20 23 66 29 0a 0a 20 20  nIsReady #f)..  
2fa0: 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 56 61 6c         (tokenVal
2fb0: 75 65 20 22 22 29 20 20 3b 20 73 74 72 69 6e 67  ue "")  ; string
2fc0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2fd0: 20 63 75 72 72 65 6e 74 20 74 6f 6b 65 6e 0a 0a   current token..
2fe0: 20 20 20 20 20 20 20 20 20 3b 20 41 20 73 74 72           ; A str
2ff0: 69 6e 67 20 62 75 66 66 65 72 20 66 6f 72 20 74  ing buffer for t
3000: 68 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 66  he characters of
3010: 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 6f 6b   the current tok
3020: 65 6e 2e 0a 20 20 20 20 20 20 20 20 20 3b 20 52  en..         ; R
3030: 65 73 69 7a 65 64 20 61 73 20 6e 65 63 65 73 73  esized as necess
3040: 61 72 79 2e 0a 0a 20 20 20 20 20 20 20 20 20 28  ary...         (
3050: 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74  string_accumulat
3060: 6f 72 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20  or (make-string 
3070: 69 6e 69 74 69 61 6c 5f 61 63 63 75 6d 75 6c 61  initial_accumula
3080: 74 6f 72 5f 6c 65 6e 67 74 68 29 29 0a 0a 20 20  tor_length))..  
3090: 20 20 20 20 20 20 20 3b 20 4e 75 6d 62 65 72 20         ; Number 
30a0: 6f 66 20 63 68 61 72 61 63 74 65 72 73 20 69 6e  of characters in
30b0: 20 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61   string_accumula
30c0: 74 6f 72 2e 0a 0a 20 20 20 20 20 20 20 20 20 28  tor...         (
30d0: 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74  string_accumulat
30e0: 6f 72 5f 6c 65 6e 67 74 68 20 30 29 0a 0a 20 20  or_length 0)..  
30f0: 20 20 20 20 20 20 20 3b 20 48 6f 6f 6b 20 66 6f         ; Hook fo
3100: 72 20 72 65 63 6f 72 64 69 6e 67 20 73 6f 75 72  r recording sour
3110: 63 65 20 6c 6f 63 61 74 69 6f 6e 73 2e 0a 0a 20  ce locations... 
3120: 20 20 20 20 20 20 20 20 28 6c 6f 63 61 74 69 6f          (locatio
3130: 6e 53 74 61 72 74 20 23 66 29 0a 0a 20 20 20 20  nStart #f)..    
3140: 20 20 20 20 20 3b 20 48 61 73 68 20 74 61 62 6c       ; Hash tabl
3150: 65 20 66 6f 72 20 53 52 46 49 20 33 38 2c 20 6f  e for SRFI 38, o
3160: 72 20 23 66 2e 0a 0a 20 20 20 20 20 20 20 20 20  r #f...         
3170: 28 73 68 61 72 65 64 2d 73 74 72 75 63 74 75 72  (shared-structur
3180: 65 73 20 23 66 29 0a 0a 20 20 20 20 20 20 20 20  es #f)..        
3190: 29 0a 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b  )..    ;;;;;;;;;
31a0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
31b0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
31c0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
31d0: 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
31e0: 20 20 3b 20 48 61 6e 64 2d 63 6f 64 69 6e 67 20    ; Hand-coding 
31f0: 73 63 61 6e 6e 65 72 30 20 6d 61 6b 65 73 20 61  scanner0 makes a
3200: 20 73 6d 61 6c 6c 20 62 75 74 20 77 6f 72 74 68   small but worth
3210: 77 68 69 6c 65 20 64 69 66 66 65 72 65 6e 63 65  while difference
3220: 2e 0a 20 20 20 20 3b 0a 20 20 20 20 3b 20 54 68  ..    ;.    ; Th
3230: 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 20 63 68  e most common ch
3240: 61 72 61 63 74 65 72 73 20 61 72 65 20 73 70 61  aracters are spa
3250: 63 65 73 2c 20 70 61 72 65 6e 74 68 65 73 65 73  ces, parentheses
3260: 2c 20 6e 65 77 6c 69 6e 65 73 2c 0a 20 20 20 20  , newlines,.    
3270: 3b 20 73 65 6d 69 63 6f 6c 6f 6e 73 2c 20 61 6e  ; semicolons, an
3280: 64 20 6c 6f 77 65 72 20 63 61 73 65 20 41 73 63  d lower case Asc
3290: 69 69 20 6c 65 74 74 65 72 73 2e 0a 20 20 20 20  ii letters..    
32a0: 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;.    ;;;;;;;;;;
32b0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
32c0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
32d0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
32e0: 3b 3b 3b 3b 3b 3b 0a 20 20 0a 20 20 20 20 3b 20  ;;;;;;.  .    ; 
32f0: 53 63 61 6e 6e 69 6e 67 20 66 6f 72 20 74 68 65  Scanning for the
3300: 20 73 74 61 72 74 20 6f 66 20 61 20 74 6f 6b 65   start of a toke
3310: 6e 2e 0a 0a 20 20 20 20 28 64 65 66 69 6e 65 20  n...    (define 
3320: 28 73 63 61 6e 6e 65 72 30 29 0a 20 20 20 20 20  (scanner0).     
3330: 20 28 64 65 66 69 6e 65 20 28 6c 6f 6f 70 20 63   (define (loop c
3340: 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20  ).        (cond 
3350: 28 28 6e 6f 74 20 28 63 68 61 72 3f 20 63 29 29  ((not (char? c))
3360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3370: 28 61 63 63 65 70 74 20 27 65 6f 66 6f 62 6a 29  (accept 'eofobj)
3380: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3390: 28 28 6f 72 20 28 63 68 61 72 3d 3f 20 63 20 23  ((or (char=? c #
33a0: 5c 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 20  \space).        
33b0: 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72             (char
33c0: 3d 3f 20 63 20 23 5c 6e 65 77 6c 69 6e 65 29 29  =? c #\newline))
33d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33e0: 28 72 65 61 64 2d 63 68 61 72 20 69 6e 70 75 74  (read-char input
33f0: 2d 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20  -port).         
3400: 20 20 20 20 20 20 28 6c 6f 6f 70 20 28 70 65 65        (loop (pee
3410: 6b 2d 63 68 61 72 20 69 6e 70 75 74 2d 70 6f 72  k-char input-por
3420: 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  t))).           
3430: 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20     (else.       
3440: 20 20 20 20 20 20 20 20 28 73 74 61 74 65 30 20          (state0 
3450: 63 29 29 29 29 0a 20 20 20 20 20 20 28 6c 6f 6f  c)))).      (loo
3460: 70 20 28 70 65 65 6b 2d 63 68 61 72 20 69 6e 70  p (peek-char inp
3470: 75 74 2d 70 6f 72 74 29 29 29 0a 0a 20 20 20 20  ut-port)))..    
3480: 3b 20 43 6f 6e 73 75 6d 69 6e 67 20 61 20 73 65  ; Consuming a se
3490: 6d 69 63 6f 6c 6f 6e 20 63 6f 6d 6d 65 6e 74 2e  micolon comment.
34a0: 0a 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 73  ..    (define (s
34b0: 63 61 6e 6e 65 72 31 29 0a 20 20 20 20 20 20 28  canner1).      (
34c0: 64 65 66 69 6e 65 20 28 6c 6f 6f 70 20 63 29 0a  define (loop c).
34d0: 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28          (cond ((
34e0: 6e 6f 74 20 28 63 68 61 72 3f 20 63 29 29 0a 20  not (char? c)). 
34f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
3500: 63 63 65 70 74 20 27 65 6f 66 6f 62 6a 29 29 0a  ccept 'eofobj)).
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28                ((
3520: 63 68 61 72 3d 3f 20 63 20 23 5c 6e 65 77 6c 69  char=? c #\newli
3530: 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ne).            
3540: 20 20 20 28 73 63 61 6e 6e 65 72 30 29 29 0a 20     (scanner0)). 
3550: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c               (el
3560: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  se.             
3570: 20 20 28 6c 6f 6f 70 20 28 72 65 61 64 2d 63 68    (loop (read-ch
3580: 61 72 20 69 6e 70 75 74 2d 70 6f 72 74 29 29 29  ar input-port)))
3590: 29 29 0a 20 20 20 20 20 20 28 6c 6f 6f 70 20 28  )).      (loop (
35a0: 72 65 61 64 2d 63 68 61 72 20 69 6e 70 75 74 2d  read-char input-
35b0: 70 6f 72 74 29 29 29 0a 20 20 0a 20 20 20 20 3b  port))).  .    ;
35c0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
35d0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
35e0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
35f0: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a  ;;;;;;;;;;;;;;;.
3600: 20 20 20 20 3b 0a 20 20 20 20 3b 20 4c 65 78 47      ;.    ; LexG
3610: 65 6e 20 67 65 6e 65 72 61 74 65 64 20 74 68 65  en generated the
3620: 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 73 74   code for the st
3630: 61 74 65 20 6d 61 63 68 69 6e 65 2e 0a 20 20 20  ate machine..   
3640: 20 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b   ;.    ;;;;;;;;;
3650: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3660: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3670: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3680: 3b 3b 3b 3b 3b 3b 3b 0a 20 20 0a 20 20 28 64 65  ;;;;;;;.  .  (de
3690: 66 69 6e 65 20 28 73 74 61 74 65 30 20 63 29 0a  fine (state0 c).
36a0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
36b0: 20 20 28 28 23 5c 60 29 20 28 63 6f 6e 73 75 6d    ((#\`) (consum
36c0: 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27  eChar) (accept '
36d0: 62 61 63 6b 71 75 6f 74 65 29 29 0a 20 20 20 20  backquote)).    
36e0: 20 20 28 28 23 5c 27 29 20 28 63 6f 6e 73 75 6d    ((#\') (consum
36f0: 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27  eChar) (accept '
3700: 71 75 6f 74 65 29 29 0a 20 20 20 20 20 20 28 28  quote)).      ((
3710: 23 5c 5d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\]) (consumeCha
3720: 72 29 20 28 61 63 63 65 70 74 20 27 72 62 72 61  r) (accept 'rbra
3730: 63 6b 65 74 29 29 0a 20 20 20 20 20 20 28 28 23  cket)).      ((#
3740: 5c 5b 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \[) (consumeChar
3750: 29 20 28 61 63 63 65 70 74 20 27 6c 62 72 61 63  ) (accept 'lbrac
3760: 6b 65 74 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ket)).      ((#\
3770: 29 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  )) (consumeChar)
3780: 20 28 61 63 63 65 70 74 20 27 72 70 61 72 65 6e   (accept 'rparen
3790: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 28 29 20  )).      ((#\() 
37a0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61  (consumeChar) (a
37b0: 63 63 65 70 74 20 27 6c 70 61 72 65 6e 29 29 0a  ccept 'lparen)).
37c0: 20 20 20 20 20 20 28 28 23 5c 74 61 62 20 23 5c        ((#\tab #\
37d0: 6e 65 77 6c 69 6e 65 20 23 5c 76 74 61 62 20 23  newline #\vtab #
37e0: 5c 70 61 67 65 20 23 5c 72 65 74 75 72 6e 20 23  \page #\return #
37f0: 5c 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28  \space).       (
3800: 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
3810: 20 20 20 20 28 62 65 67 69 6e 0a 20 20 20 20 20      (begin.     
3820: 20 20 20 20 28 73 65 74 21 20 73 74 72 69 6e 67      (set! string
3830: 5f 61 63 63 75 6d 75 6c 61 74 6f 72 5f 6c 65 6e  _accumulator_len
3840: 67 74 68 20 30 29 0a 20 20 20 20 20 20 20 20 20  gth 0).         
3850: 28 73 74 61 74 65 30 20 28 73 63 61 6e 43 68 61  (state0 (scanCha
3860: 72 29 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  r)))).      ((#\
3870: 3b 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  ;) (consumeChar)
3880: 20 28 73 74 61 74 65 32 31 33 20 28 73 63 61 6e   (state213 (scan
3890: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
38a0: 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
38b0: 72 29 20 28 73 74 61 74 65 32 31 32 20 28 73 63  r) (state212 (sc
38c0: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
38d0: 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c  ((#\0 #\1 #\2 #\
38e0: 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c  3 #\4 #\5 #\6 #\
38f0: 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20  7 #\8 #\9).     
3900: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
3910: 20 20 20 20 20 20 20 28 73 74 61 74 65 31 34 31         (state141
3920: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
3930: 20 20 20 20 28 28 23 5c 61 0a 20 20 20 20 20 20      ((#\a.      
3940: 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c    #\b.        #\
3950: 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20 20  c.        #\d.  
3960: 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20 20        #\e.      
3970: 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c    #\f.        #\
3980: 67 0a 20 20 20 20 20 20 20 20 23 5c 68 0a 20 20  g.        #\h.  
3990: 20 20 20 20 20 20 23 5c 69 0a 20 20 20 20 20 20        #\i.      
39a0: 20 20 23 5c 6a 0a 20 20 20 20 20 20 20 20 23 5c    #\j.        #\
39b0: 6b 0a 20 20 20 20 20 20 20 20 23 5c 6c 0a 20 20  k.        #\l.  
39c0: 20 20 20 20 20 20 23 5c 6d 0a 20 20 20 20 20 20        #\m.      
39d0: 20 20 23 5c 6e 0a 20 20 20 20 20 20 20 20 23 5c    #\n.        #\
39e0: 6f 0a 20 20 20 20 20 20 20 20 23 5c 70 0a 20 20  o.        #\p.  
39f0: 20 20 20 20 20 20 23 5c 71 0a 20 20 20 20 20 20        #\q.      
3a00: 20 20 23 5c 72 0a 20 20 20 20 20 20 20 20 23 5c    #\r.        #\
3a10: 73 0a 20 20 20 20 20 20 20 20 23 5c 74 0a 20 20  s.        #\t.  
3a20: 20 20 20 20 20 20 23 5c 75 0a 20 20 20 20 20 20        #\u.      
3a30: 20 20 23 5c 76 0a 20 20 20 20 20 20 20 20 23 5c    #\v.        #\
3a40: 77 0a 20 20 20 20 20 20 20 20 23 5c 78 0a 20 20  w.        #\x.  
3a50: 20 20 20 20 20 20 23 5c 79 0a 20 20 20 20 20 20        #\y.      
3a60: 20 20 23 5c 7a 0a 20 20 20 20 20 20 20 20 23 5c    #\z.        #\
3a70: 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20 20  A.        #\B.  
3a80: 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20 20        #\C.      
3a90: 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23 5c    #\D.        #\
3aa0: 45 0a 20 20 20 20 20 20 20 20 23 5c 46 0a 20 20  E.        #\F.  
3ab0: 20 20 20 20 20 20 23 5c 47 0a 20 20 20 20 20 20        #\G.      
3ac0: 20 20 23 5c 48 0a 20 20 20 20 20 20 20 20 23 5c    #\H.        #\
3ad0: 49 0a 20 20 20 20 20 20 20 20 23 5c 4a 0a 20 20  I.        #\J.  
3ae0: 20 20 20 20 20 20 23 5c 4b 0a 20 20 20 20 20 20        #\K.      
3af0: 20 20 23 5c 4c 0a 20 20 20 20 20 20 20 20 23 5c    #\L.        #\
3b00: 4d 0a 20 20 20 20 20 20 20 20 23 5c 4e 0a 20 20  M.        #\N.  
3b10: 20 20 20 20 20 20 23 5c 4f 0a 20 20 20 20 20 20        #\O.      
3b20: 20 20 23 5c 50 0a 20 20 20 20 20 20 20 20 23 5c    #\P.        #\
3b30: 51 0a 20 20 20 20 20 20 20 20 23 5c 52 0a 20 20  Q.        #\R.  
3b40: 20 20 20 20 20 20 23 5c 53 0a 20 20 20 20 20 20        #\S.      
3b50: 20 20 23 5c 54 0a 20 20 20 20 20 20 20 20 23 5c    #\T.        #\
3b60: 55 0a 20 20 20 20 20 20 20 20 23 5c 56 0a 20 20  U.        #\V.  
3b70: 20 20 20 20 20 20 23 5c 57 0a 20 20 20 20 20 20        #\W.      
3b80: 20 20 23 5c 58 0a 20 20 20 20 20 20 20 20 23 5c    #\X.        #\
3b90: 59 0a 20 20 20 20 20 20 20 20 23 5c 5a 0a 20 20  Y.        #\Z.  
3ba0: 20 20 20 20 20 20 23 5c 21 0a 20 20 20 20 20 20        #\!.      
3bb0: 20 20 23 5c 24 0a 20 20 20 20 20 20 20 20 23 5c    #\$.        #\
3bc0: 25 0a 20 20 20 20 20 20 20 20 23 5c 26 0a 20 20  %.        #\&.  
3bd0: 20 20 20 20 20 20 23 5c 2a 0a 20 20 20 20 20 20        #\*.      
3be0: 20 20 23 5c 2f 0a 20 20 20 20 20 20 20 20 23 5c    #\/.        #\
3bf0: 3a 0a 20 20 20 20 20 20 20 20 23 5c 3c 0a 20 20  :.        #\<.  
3c00: 20 20 20 20 20 20 23 5c 3d 0a 20 20 20 20 20 20        #\=.      
3c10: 20 20 23 5c 3e 0a 20 20 20 20 20 20 20 20 23 5c    #\>.        #\
3c20: 3f 0a 20 20 20 20 20 20 20 20 23 5c 5e 0a 20 20  ?.        #\^.  
3c30: 20 20 20 20 20 20 23 5c 5f 0a 20 20 20 20 20 20        #\_.      
3c40: 20 20 23 5c 7e 29 0a 20 20 20 20 20 20 20 28 63    #\~).       (c
3c50: 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
3c60: 20 20 20 28 73 74 61 74 65 31 33 20 28 73 63 61     (state13 (sca
3c70: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
3c80: 28 23 5c 5c 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\\) (consumeCh
3c90: 61 72 29 20 28 73 74 61 74 65 31 32 20 28 73 63  ar) (state12 (sc
3ca0: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3cb0: 28 28 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\-) (consumeC
3cc0: 68 61 72 29 20 28 73 74 61 74 65 39 20 28 73 63  har) (state9 (sc
3cd0: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3ce0: 28 28 23 5c 2b 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\+) (consumeC
3cf0: 68 61 72 29 20 28 73 74 61 74 65 38 20 28 73 63  har) (state8 (sc
3d00: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3d10: 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\.) (consumeC
3d20: 68 61 72 29 20 28 73 74 61 74 65 37 20 28 73 63  har) (state7 (sc
3d30: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3d40: 28 28 23 5c 22 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\") (consumeC
3d50: 68 61 72 29 20 28 73 74 61 74 65 35 20 28 73 63  har) (state5 (sc
3d60: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3d70: 28 28 23 5c 2c 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\,) (consumeC
3d80: 68 61 72 29 20 28 73 74 61 74 65 31 20 28 73 63  har) (state1 (sc
3d90: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
3da0: 28 65 6c 73 65 0a 20 20 20 20 20 20 20 28 69 66  (else.       (if
3db0: 20 28 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20   ((lambda (c).  
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64              (and
3dd0: 20 28 63 68 61 72 3f 20 63 29 0a 20 20 20 20 20   (char? c).     
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e                (>
3df0: 20 28 63 68 61 72 2d 3e 69 6e 74 65 67 65 72 20   (char->integer 
3e00: 63 29 20 31 32 37 29 0a 20 20 20 20 20 20 20 20  c) 127).        
3e10: 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20             (let 
3e20: 28 28 63 61 74 20 28 63 68 61 72 2d 67 65 6e 65  ((cat (char-gene
3e30: 72 61 6c 2d 63 61 74 65 67 6f 72 79 20 63 29 29  ral-category c))
3e40: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3e50: 20 20 20 20 20 20 20 28 6d 65 6d 71 20 63 61 74         (memq cat
3e60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3e70: 20 20 20 20 20 20 20 20 20 20 20 20 27 28 4c 75              '(Lu
3e80: 20 4c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20   Ll.            
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ea0: 20 20 20 20 4c 74 0a 20 20 20 20 20 20 20 20 20      Lt.         
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ec0: 20 20 20 20 20 20 20 4c 6d 0a 20 20 20 20 20 20         Lm.      
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 20 20 20 20 20 20 20 20 20 20 4c 6f 0a 20 20 20            Lo.   
3ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6e 0a               Mn.
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 4e 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  Nl.             
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f50: 20 20 20 4e 6f 0a 20 20 20 20 20 20 20 20 20 20     No.          
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f70: 20 20 20 20 20 20 50 64 0a 20 20 20 20 20 20 20        Pd.       
3f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f90: 20 20 20 20 20 20 20 20 20 50 63 0a 20 20 20 20           Pc.    
3fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 0a 20              Po. 
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
3fe0: 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  c.              
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4000: 20 20 53 6d 0a 20 20 20 20 20 20 20 20 20 20 20    Sm.           
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 20 20 20 53 6b 0a 20 20 20 20 20 20 20 20       Sk.        
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4040: 20 20 20 20 20 20 20 20 53 6f 0a 20 20 20 20 20          So.     
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4060: 20 20 20 20 20 20 20 20 20 20 20 43 6f 29 29 29             Co)))
4070: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  )).            c
4080: 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 65  ).           (be
4090: 67 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  gin (consumeChar
40a0: 29 20 28 73 74 61 74 65 31 33 20 28 73 63 61 6e  ) (state13 (scan
40b0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20  Char))).        
40c0: 20 20 20 28 69 66 20 28 65 6f 66 2d 6f 62 6a 65     (if (eof-obje
40d0: 63 74 3f 20 63 29 0a 20 20 20 20 20 20 20 20 20  ct? c).         
40e0: 20 20 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f        (begin (co
40f0: 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63 65  nsumeChar) (acce
4100: 70 74 20 27 65 6f 66 6f 62 6a 29 29 0a 20 20 20  pt 'eofobj)).   
4110: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
4120: 28 28 6c 61 6d 62 64 61 20 28 63 29 20 28 61 6e  ((lambda (c) (an
4130: 64 20 28 63 68 61 72 3f 20 63 29 20 28 63 68 61  d (char? c) (cha
4140: 72 2d 77 68 69 74 65 73 70 61 63 65 3f 20 63 29  r-whitespace? c)
4150: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
4160: 20 20 20 20 20 20 20 63 29 0a 20 20 20 20 20 20         c).      
4170: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65               (be
4180: 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  gin.            
4190: 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d           (consum
41a0: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 20 20  eChar).         
41b0: 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67              (beg
41c0: 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  in.             
41d0: 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20            (set! 
41e0: 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74  string_accumulat
41f0: 6f 72 5f 6c 65 6e 67 74 68 20 30 29 0a 20 20 20  or_length 0).   
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4210: 20 20 20 20 28 73 74 61 74 65 30 20 28 73 63 61      (state0 (sca
4220: 6e 43 68 61 72 29 29 29 29 0a 20 20 20 20 20 20  nChar)))).      
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66               (if
4240: 20 28 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20   ((lambda (c).  
4250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4260: 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 68          (and (ch
4270: 61 72 3f 20 63 29 20 28 63 68 61 72 3d 3f 20 63  ar? c) (char=? c
4280: 20 28 69 6e 74 65 67 65 72 2d 3e 63 68 61 72 20   (integer->char 
4290: 31 33 33 29 29 29 29 0a 20 20 20 20 20 20 20 20  133)))).        
42a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42b0: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
42c0: 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e            (begin
42d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42e0: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 75            (consu
42f0: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 20  meChar).        
4300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4310: 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20   (begin.        
4320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4330: 20 20 20 28 73 65 74 21 20 73 74 72 69 6e 67 5f     (set! string_
4340: 61 63 63 75 6d 75 6c 61 74 6f 72 5f 6c 65 6e 67  accumulator_leng
4350: 74 68 20 30 29 0a 20 20 20 20 20 20 20 20 20 20  th 0).          
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4370: 20 28 73 74 61 74 65 30 20 28 73 63 61 6e 43 68   (state0 (scanCh
4380: 61 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  ar)))).         
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73                (s
43a0: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
43b0: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
43c0: 29 29 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  )))))).  (define
43d0: 20 28 73 74 61 74 65 31 20 63 29 0a 20 20 20 20   (state1 c).    
43e0: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
43f0: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
4400: 72 29 20 28 61 63 63 65 70 74 20 27 73 70 6c 69  r) (accept 'spli
4410: 63 69 6e 67 29 29 0a 20 20 20 20 20 20 28 65 6c  cing)).      (el
4420: 73 65 20 28 61 63 63 65 70 74 20 27 63 6f 6d 6d  se (accept 'comm
4430: 61 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  a)))).  (define 
4440: 28 73 74 61 74 65 32 20 63 29 0a 20 20 20 20 28  (state2 c).    (
4450: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
4460: 5c 22 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \") (consumeChar
4470: 29 20 28 61 63 63 65 70 74 20 27 73 74 72 69 6e  ) (accept 'strin
4480: 67 29 29 0a 20 20 20 20 20 20 28 28 23 5c 6e 65  g)).      ((#\ne
4490: 77 6c 69 6e 65 20 23 5c 72 65 74 75 72 6e 29 0a  wline #\return).
44a0: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
44b0: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
44c0: 74 65 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  te5 (scanChar)))
44d0: 0a 20 20 20 20 20 20 28 28 23 5c 5c 29 20 28 63  .      ((#\\) (c
44e0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
44f0: 74 65 34 20 28 73 63 61 6e 43 68 61 72 29 29 29  te4 (scanChar)))
4500: 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20 20  .      ((#\0.   
4510: 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20 20       #\1.       
4520: 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c 33   #\2.        #\3
4530: 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20 20  .        #\4.   
4540: 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20 20       #\5.       
4550: 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c 37   #\6.        #\7
4560: 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20 20  .        #\8.   
4570: 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20 20       #\9.       
4580: 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c 62   #\a.        #\b
4590: 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20 20  .        #\c.   
45a0: 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20 20       #\d.       
45b0: 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c 66   #\e.        #\f
45c0: 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20 20  .        #\A.   
45d0: 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20 20       #\B.       
45e0: 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c 44   #\C.        #\D
45f0: 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20 20  .        #\E.   
4600: 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20 20       #\F).      
4610: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
4620: 20 20 20 20 20 20 28 73 74 61 74 65 32 20 28 73        (state2 (s
4630: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
4640: 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20 28 69   (else.       (i
4650: 66 20 28 63 68 61 72 3f 20 63 29 0a 20 20 20 20  f (char? c).    
4660: 20 20 20 20 20 20 20 28 62 65 67 69 6e 20 28 63         (begin (c
4670: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
4680: 74 65 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  te5 (scanChar)))
4690: 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20  .           (if 
46a0: 28 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20  ((lambda (c).   
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
46c0: 61 6e 64 20 28 63 68 61 72 3f 20 63 29 20 28 63  and (char? c) (c
46d0: 68 61 72 3d 3f 20 63 20 28 69 6e 74 65 67 65 72  har=? c (integer
46e0: 2d 3e 63 68 61 72 20 38 32 33 32 29 29 29 29 0a  ->char 8232)))).
46f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4700: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
4710: 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d    (begin (consum
4720: 65 43 68 61 72 29 20 28 73 74 61 74 65 35 20 28  eChar) (state5 (
4730: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
4740: 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28             (if (
4750: 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20 20  (lambda (c).    
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 20 28 61 6e 64 20 28 63 68 61 72 3f 20 63 29    (and (char? c)
4780: 20 28 63 68 61 72 3d 3f 20 63 20 28 69 6e 74 65   (char=? c (inte
4790: 67 65 72 2d 3e 63 68 61 72 20 31 33 33 29 29 29  ger->char 133)))
47a0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
47b0: 20 20 20 20 20 20 63 29 0a 20 20 20 20 20 20 20        c).       
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67              (beg
47d0: 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  in (consumeChar)
47e0: 20 28 73 74 61 74 65 35 20 28 73 63 61 6e 43 68   (state5 (scanCh
47f0: 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  ar))).          
4800: 20 20 20 20 20 20 20 20 20 28 73 63 61 6e 6e 65           (scanne
4810: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
4820: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 29 29 29  leteToken)))))))
4830: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
4840: 65 33 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  e3 c).    (case 
4850: 63 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20  c.      ((#\0.  
4860: 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20        #\1.      
4870: 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c    #\2.        #\
4880: 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20  3.        #\4.  
4890: 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20        #\5.      
48a0: 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c    #\6.        #\
48b0: 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20  7.        #\8.  
48c0: 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20        #\9.      
48d0: 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c    #\a.        #\
48e0: 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20  b.        #\c.  
48f0: 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20        #\d.      
4900: 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c    #\e.        #\
4910: 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20  f.        #\A.  
4920: 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20        #\B.      
4930: 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c    #\C.        #\
4940: 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20  D.        #\E.  
4950: 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20        #\F).     
4960: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
4970: 20 20 20 20 20 20 20 28 73 74 61 74 65 32 20 28         (state2 (
4980: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
4990: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
49a0: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
49b0: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
49c0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 34 20 63  define (state4 c
49d0: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
49e0: 20 20 20 20 28 28 23 5c 61 0a 20 20 20 20 20 20      ((#\a.      
49f0: 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c    #\b.        #\
4a00: 74 0a 20 20 20 20 20 20 20 20 23 5c 6e 0a 20 20  t.        #\n.  
4a10: 20 20 20 20 20 20 23 5c 76 0a 20 20 20 20 20 20        #\v.      
4a20: 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c    #\f.        #\
4a30: 72 0a 20 20 20 20 20 20 20 20 23 5c 22 0a 20 20  r.        #\".  
4a40: 20 20 20 20 20 20 23 5c 5c 0a 20 20 20 20 20 20        #\\.      
4a50: 20 20 23 5c 6e 65 77 6c 69 6e 65 0a 20 20 20 20    #\newline.    
4a60: 20 20 20 20 23 5c 72 65 74 75 72 6e 0a 20 20 20      #\return.   
4a70: 20 20 20 20 20 23 5c 73 70 61 63 65 29 0a 20 20       #\space).  
4a80: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
4a90: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
4aa0: 35 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  5 (scanChar))). 
4ab0: 20 20 20 20 20 28 28 23 5c 78 29 20 28 63 6f 6e       ((#\x) (con
4ac0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
4ad0: 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  3 (scanChar))). 
4ae0: 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20       (else.     
4af0: 20 20 28 69 66 20 28 28 6c 61 6d 62 64 61 20 28    (if ((lambda (
4b00: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
4b10: 20 28 61 6e 64 20 28 63 68 61 72 3f 20 63 29 20   (and (char? c) 
4b20: 28 63 68 61 72 3d 3f 20 63 20 28 69 6e 74 65 67  (char=? c (integ
4b30: 65 72 2d 3e 63 68 61 72 20 38 32 33 32 29 29 29  er->char 8232)))
4b40: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 29  ).            c)
4b50: 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67  .           (beg
4b60: 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  in (consumeChar)
4b70: 20 28 73 74 61 74 65 35 20 28 73 63 61 6e 43 68   (state5 (scanCh
4b80: 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  ar))).          
4b90: 20 28 69 66 20 28 28 6c 61 6d 62 64 61 20 28 63   (if ((lambda (c
4ba0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
4bb0: 20 20 20 20 28 61 6e 64 20 28 63 68 61 72 3f 20      (and (char? 
4bc0: 63 29 20 28 63 68 61 72 3d 3f 20 63 20 28 69 6e  c) (char=? c (in
4bd0: 74 65 67 65 72 2d 3e 63 68 61 72 20 31 33 33 29  teger->char 133)
4be0: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
4bf0: 20 20 20 20 63 29 0a 20 20 20 20 20 20 20 20 20      c).         
4c00: 20 20 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f        (begin (co
4c10: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
4c20: 65 35 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  e5 (scanChar))).
4c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
4c40: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
4c50: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
4c60: 29 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  ))))).  (define 
4c70: 28 73 74 61 74 65 35 20 63 29 0a 20 20 20 20 28  (state5 c).    (
4c80: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
4c90: 5c 22 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \") (consumeChar
4ca0: 29 20 28 61 63 63 65 70 74 20 27 73 74 72 69 6e  ) (accept 'strin
4cb0: 67 29 29 0a 20 20 20 20 20 20 28 28 23 5c 6e 65  g)).      ((#\ne
4cc0: 77 6c 69 6e 65 20 23 5c 72 65 74 75 72 6e 29 0a  wline #\return).
4cd0: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
4ce0: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
4cf0: 74 65 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  te5 (scanChar)))
4d00: 0a 20 20 20 20 20 20 28 28 23 5c 5c 29 20 28 63  .      ((#\\) (c
4d10: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
4d20: 74 65 34 20 28 73 63 61 6e 43 68 61 72 29 29 29  te4 (scanChar)))
4d30: 0a 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20  .      (else.   
4d40: 20 20 20 20 28 69 66 20 28 63 68 61 72 3f 20 63      (if (char? c
4d50: 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 65  ).           (be
4d60: 67 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  gin (consumeChar
4d70: 29 20 28 73 74 61 74 65 35 20 28 73 63 61 6e 43  ) (state5 (scanC
4d80: 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20  har))).         
4d90: 20 20 28 69 66 20 28 28 6c 61 6d 62 64 61 20 28    (if ((lambda (
4da0: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
4db0: 20 20 20 20 20 28 61 6e 64 20 28 63 68 61 72 3f       (and (char?
4dc0: 20 63 29 20 28 63 68 61 72 3d 3f 20 63 20 28 69   c) (char=? c (i
4dd0: 6e 74 65 67 65 72 2d 3e 63 68 61 72 20 38 32 33  nteger->char 823
4de0: 32 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  2)))).          
4df0: 20 20 20 20 20 20 63 29 0a 20 20 20 20 20 20 20        c).       
4e00: 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 20 28          (begin (
4e10: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
4e20: 61 74 65 35 20 28 73 63 61 6e 43 68 61 72 29 29  ate5 (scanChar))
4e30: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
4e40: 20 28 69 66 20 28 28 6c 61 6d 62 64 61 20 28 63   (if ((lambda (c
4e50: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
4e60: 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 68          (and (ch
4e70: 61 72 3f 20 63 29 20 28 63 68 61 72 3d 3f 20 63  ar? c) (char=? c
4e80: 20 28 69 6e 74 65 67 65 72 2d 3e 63 68 61 72 20   (integer->char 
4e90: 31 33 33 29 29 29 29 0a 20 20 20 20 20 20 20 20  133)))).        
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 63 29 0a 20              c). 
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d    (begin (consum
4ed0: 65 43 68 61 72 29 20 28 73 74 61 74 65 35 20 28  eChar) (state5 (
4ee0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
4ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
4f00: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
4f10: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
4f20: 29 29 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  )))))).  (define
4f30: 20 28 73 74 61 74 65 36 20 63 29 0a 20 20 20 20   (state6 c).    
4f40: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
4f50: 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\.) (consumeCha
4f60: 72 29 20 28 61 63 63 65 70 74 20 27 69 64 29 29  r) (accept 'id))
4f70: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
4f80: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
4f90: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
4fa0: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
4fb0: 74 65 37 20 63 29 0a 20 20 20 20 28 63 61 73 65  te7 c).    (case
4fc0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23   c.      ((#\0 #
4fd0: 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
4fe0: 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
4ff0: 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
5000: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
5010: 28 73 74 61 74 65 31 33 30 20 28 73 63 61 6e 43  (state130 (scanC
5020: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
5030: 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \.) (consumeChar
5040: 29 20 28 73 74 61 74 65 36 20 28 73 63 61 6e 43  ) (state6 (scanC
5050: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
5060: 73 65 20 28 61 63 63 65 70 74 20 27 70 65 72 69  se (accept 'peri
5070: 6f 64 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  od)))).  (define
5080: 20 28 73 74 61 74 65 38 20 63 29 0a 20 20 20 20   (state8 c).    
5090: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
50a0: 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\I) (consumeCha
50b0: 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  r) (accept 'numb
50c0: 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  er)).      ((#\0
50d0: 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
50e0: 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
50f0: 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
5100: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
5110: 20 20 28 73 74 61 74 65 32 30 33 20 28 73 63 61    (state203 (sca
5120: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
5130: 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\.) (consumeCh
5140: 61 72 29 20 28 73 74 61 74 65 31 34 39 20 28 73  ar) (state149 (s
5150: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
5160: 20 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65   ((#\n) (consume
5170: 43 68 61 72 29 20 28 73 74 61 74 65 31 34 38 20  Char) (state148 
5180: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
5190: 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75     ((#\i) (consu
51a0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 34  meChar) (state14
51b0: 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  3 (scanChar))). 
51c0: 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
51d0: 70 74 20 27 69 64 29 29 29 29 0a 20 20 28 64 65  pt 'id)))).  (de
51e0: 66 69 6e 65 20 28 73 74 61 74 65 39 20 63 29 0a  fine (state9 c).
51f0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
5200: 20 20 28 28 23 5c 49 29 20 28 63 6f 6e 73 75 6d    ((#\I) (consum
5210: 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27  eChar) (accept '
5220: 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28  number)).      (
5230: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
5240: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
5250: 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20   #\8 #\9).      
5260: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
5270: 20 20 20 20 20 20 28 73 74 61 74 65 32 30 33 20        (state203 
5280: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
5290: 20 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75     ((#\.) (consu
52a0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 34  meChar) (state14
52b0: 39 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  9 (scanChar))). 
52c0: 20 20 20 20 20 28 28 23 5c 6e 29 20 28 63 6f 6e       ((#\n) (con
52d0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
52e0: 31 34 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  148 (scanChar)))
52f0: 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63  .      ((#\i) (c
5300: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
5310: 74 65 31 34 33 20 28 73 63 61 6e 43 68 61 72 29  te143 (scanChar)
5320: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 3e 29 20  )).      ((#\>) 
5330: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
5340: 74 61 74 65 31 33 20 28 73 63 61 6e 43 68 61 72  tate13 (scanChar
5350: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
5360: 28 61 63 63 65 70 74 20 27 69 64 29 29 29 29 0a  (accept 'id)))).
5370: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
5380: 31 30 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  10 c).    (case 
5390: 63 0a 20 20 20 20 20 20 28 28 23 5c 3b 29 20 28  c.      ((#\;) (
53a0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
53b0: 61 74 65 31 33 20 28 73 63 61 6e 43 68 61 72 29  ate13 (scanChar)
53c0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20  )).      ((#\0. 
53d0: 20 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20         #\1.     
53e0: 20 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23     #\2.        #
53f0: 5c 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20  \3.        #\4. 
5400: 20 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20         #\5.     
5410: 20 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23     #\6.        #
5420: 5c 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20  \7.        #\8. 
5430: 20 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20         #\9.     
5440: 20 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23     #\a.        #
5450: 5c 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20  \b.        #\c. 
5460: 20 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20         #\d.     
5470: 20 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23     #\e.        #
5480: 5c 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20  \f.        #\A. 
5490: 20 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20         #\B.     
54a0: 20 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23     #\C.        #
54b0: 5c 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20  \D.        #\E. 
54c0: 20 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20         #\F).    
54d0: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
54e0: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31 30  .       (state10
54f0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
5500: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
5510: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
5520: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
5530: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
5540: 31 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  1 c).    (case c
5550: 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20 20  .      ((#\0.   
5560: 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20 20       #\1.       
5570: 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c 33   #\2.        #\3
5580: 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20 20  .        #\4.   
5590: 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20 20       #\5.       
55a0: 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c 37   #\6.        #\7
55b0: 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20 20  .        #\8.   
55c0: 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20 20       #\9.       
55d0: 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c 62   #\a.        #\b
55e0: 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20 20  .        #\c.   
55f0: 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20 20       #\d.       
5600: 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c 66   #\e.        #\f
5610: 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20 20  .        #\A.   
5620: 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20 20       #\B.       
5630: 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c 44   #\C.        #\D
5640: 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20 20  .        #\E.   
5650: 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20 20       #\F).      
5660: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
5670: 20 20 20 20 20 20 28 73 74 61 74 65 31 30 20 28        (state10 (
5680: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
5690: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
56a0: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
56b0: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
56c0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 32 20  define (state12 
56d0: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
56e0: 20 20 20 20 20 28 28 23 5c 78 29 20 28 63 6f 6e       ((#\x) (con
56f0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
5700: 31 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  11 (scanChar))).
5710: 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
5720: 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
5730: 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
5740: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
5750: 65 31 33 20 63 29 0a 20 20 20 20 28 63 61 73 65  e13 c).    (case
5760: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 61 0a 20   c.      ((#\a. 
5770: 20 20 20 20 20 20 20 23 5c 62 0a 20 20 20 20 20         #\b.     
5780: 20 20 20 23 5c 63 0a 20 20 20 20 20 20 20 20 23     #\c.        #
5790: 5c 64 0a 20 20 20 20 20 20 20 20 23 5c 65 0a 20  \d.        #\e. 
57a0: 20 20 20 20 20 20 20 23 5c 66 0a 20 20 20 20 20         #\f.     
57b0: 20 20 20 23 5c 67 0a 20 20 20 20 20 20 20 20 23     #\g.        #
57c0: 5c 68 0a 20 20 20 20 20 20 20 20 23 5c 69 0a 20  \h.        #\i. 
57d0: 20 20 20 20 20 20 20 23 5c 6a 0a 20 20 20 20 20         #\j.     
57e0: 20 20 20 23 5c 6b 0a 20 20 20 20 20 20 20 20 23     #\k.        #
57f0: 5c 6c 0a 20 20 20 20 20 20 20 20 23 5c 6d 0a 20  \l.        #\m. 
5800: 20 20 20 20 20 20 20 23 5c 6e 0a 20 20 20 20 20         #\n.     
5810: 20 20 20 23 5c 6f 0a 20 20 20 20 20 20 20 20 23     #\o.        #
5820: 5c 70 0a 20 20 20 20 20 20 20 20 23 5c 71 0a 20  \p.        #\q. 
5830: 20 20 20 20 20 20 20 23 5c 72 0a 20 20 20 20 20         #\r.     
5840: 20 20 20 23 5c 73 0a 20 20 20 20 20 20 20 20 23     #\s.        #
5850: 5c 74 0a 20 20 20 20 20 20 20 20 23 5c 75 0a 20  \t.        #\u. 
5860: 20 20 20 20 20 20 20 23 5c 76 0a 20 20 20 20 20         #\v.     
5870: 20 20 20 23 5c 77 0a 20 20 20 20 20 20 20 20 23     #\w.        #
5880: 5c 78 0a 20 20 20 20 20 20 20 20 23 5c 79 0a 20  \x.        #\y. 
5890: 20 20 20 20 20 20 20 23 5c 7a 0a 20 20 20 20 20         #\z.     
58a0: 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20 20 23     #\A.        #
58b0: 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43 0a 20  \B.        #\C. 
58c0: 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20 20 20         #\D.     
58d0: 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20 20 23     #\E.        #
58e0: 5c 46 0a 20 20 20 20 20 20 20 20 23 5c 47 0a 20  \F.        #\G. 
58f0: 20 20 20 20 20 20 20 23 5c 48 0a 20 20 20 20 20         #\H.     
5900: 20 20 20 23 5c 49 0a 20 20 20 20 20 20 20 20 23     #\I.        #
5910: 5c 4a 0a 20 20 20 20 20 20 20 20 23 5c 4b 0a 20  \J.        #\K. 
5920: 20 20 20 20 20 20 20 23 5c 4c 0a 20 20 20 20 20         #\L.     
5930: 20 20 20 23 5c 4d 0a 20 20 20 20 20 20 20 20 23     #\M.        #
5940: 5c 4e 0a 20 20 20 20 20 20 20 20 23 5c 4f 0a 20  \N.        #\O. 
5950: 20 20 20 20 20 20 20 23 5c 50 0a 20 20 20 20 20         #\P.     
5960: 20 20 20 23 5c 51 0a 20 20 20 20 20 20 20 20 23     #\Q.        #
5970: 5c 52 0a 20 20 20 20 20 20 20 20 23 5c 53 0a 20  \R.        #\S. 
5980: 20 20 20 20 20 20 20 23 5c 54 0a 20 20 20 20 20         #\T.     
5990: 20 20 20 23 5c 55 0a 20 20 20 20 20 20 20 20 23     #\U.        #
59a0: 5c 56 0a 20 20 20 20 20 20 20 20 23 5c 57 0a 20  \V.        #\W. 
59b0: 20 20 20 20 20 20 20 23 5c 58 0a 20 20 20 20 20         #\X.     
59c0: 20 20 20 23 5c 59 0a 20 20 20 20 20 20 20 20 23     #\Y.        #
59d0: 5c 5a 0a 20 20 20 20 20 20 20 20 23 5c 21 0a 20  \Z.        #\!. 
59e0: 20 20 20 20 20 20 20 23 5c 24 0a 20 20 20 20 20         #\$.     
59f0: 20 20 20 23 5c 25 0a 20 20 20 20 20 20 20 20 23     #\%.        #
5a00: 5c 26 0a 20 20 20 20 20 20 20 20 23 5c 2a 0a 20  \&.        #\*. 
5a10: 20 20 20 20 20 20 20 23 5c 2f 0a 20 20 20 20 20         #\/.     
5a20: 20 20 20 23 5c 3a 0a 20 20 20 20 20 20 20 20 23     #\:.        #
5a30: 5c 3c 0a 20 20 20 20 20 20 20 20 23 5c 3d 0a 20  \<.        #\=. 
5a40: 20 20 20 20 20 20 20 23 5c 3e 0a 20 20 20 20 20         #\>.     
5a50: 20 20 20 23 5c 3f 0a 20 20 20 20 20 20 20 20 23     #\?.        #
5a60: 5c 5e 0a 20 20 20 20 20 20 20 20 23 5c 5f 0a 20  \^.        #\_. 
5a70: 20 20 20 20 20 20 20 23 5c 7e 0a 20 20 20 20 20         #\~.     
5a80: 20 20 20 23 5c 30 0a 20 20 20 20 20 20 20 20 23     #\0.        #
5a90: 5c 31 0a 20 20 20 20 20 20 20 20 23 5c 32 0a 20  \1.        #\2. 
5aa0: 20 20 20 20 20 20 20 23 5c 33 0a 20 20 20 20 20         #\3.     
5ab0: 20 20 20 23 5c 34 0a 20 20 20 20 20 20 20 20 23     #\4.        #
5ac0: 5c 35 0a 20 20 20 20 20 20 20 20 23 5c 36 0a 20  \5.        #\6. 
5ad0: 20 20 20 20 20 20 20 23 5c 37 0a 20 20 20 20 20         #\7.     
5ae0: 20 20 20 23 5c 38 0a 20 20 20 20 20 20 20 20 23     #\8.        #
5af0: 5c 39 0a 20 20 20 20 20 20 20 20 23 5c 2b 0a 20  \9.        #\+. 
5b00: 20 20 20 20 20 20 20 23 5c 2d 0a 20 20 20 20 20         #\-.     
5b10: 20 20 20 23 5c 2e 0a 20 20 20 20 20 20 20 20 23     #\..        #
5b20: 5c 40 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \@).       (cons
5b30: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
5b40: 28 73 74 61 74 65 31 33 20 28 73 63 61 6e 43 68  (state13 (scanCh
5b50: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
5b60: 5c 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  \) (consumeChar)
5b70: 20 28 73 74 61 74 65 31 32 20 28 73 63 61 6e 43   (state12 (scanC
5b80: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
5b90: 73 65 0a 20 20 20 20 20 20 20 28 69 66 20 28 28  se.       (if ((
5ba0: 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20 20 20  lambda (c).     
5bb0: 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63           (and (c
5bc0: 68 61 72 3f 20 63 29 0a 20 20 20 20 20 20 20 20  har? c).        
5bd0: 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20             (let 
5be0: 28 28 63 61 74 20 28 63 68 61 72 2d 67 65 6e 65  ((cat (char-gene
5bf0: 72 61 6c 2d 63 61 74 65 67 6f 72 79 20 63 29 29  ral-category c))
5c00: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5c10: 20 20 20 20 20 20 20 28 6d 65 6d 71 20 63 61 74         (memq cat
5c20: 20 27 28 4e 64 20 4d 63 20 4d 65 29 29 29 29 29   '(Nd Mc Me)))))
5c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 29 0a  .            c).
5c40: 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69             (begi
5c50: 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  n (consumeChar) 
5c60: 28 73 74 61 74 65 31 33 20 28 73 63 61 6e 43 68  (state13 (scanCh
5c70: 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  ar))).          
5c80: 20 28 69 66 20 28 28 6c 61 6d 62 64 61 20 28 63   (if ((lambda (c
5c90: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5ca0: 20 20 20 20 28 61 6e 64 20 28 63 68 61 72 3f 20      (and (char? 
5cb0: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
5cc0: 20 20 20 20 20 20 20 20 20 20 28 3e 20 28 63 68            (> (ch
5cd0: 61 72 2d 3e 69 6e 74 65 67 65 72 20 63 29 20 31  ar->integer c) 1
5ce0: 32 37 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  27).            
5cf0: 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20             (let 
5d00: 28 28 63 61 74 20 28 63 68 61 72 2d 67 65 6e 65  ((cat (char-gene
5d10: 72 61 6c 2d 63 61 74 65 67 6f 72 79 20 63 29 29  ral-category c))
5d20: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5d30: 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71             (memq
5d40: 20 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20   cat.           
5d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d60: 20 20 20 20 27 28 4c 75 20 4c 6c 0a 20 20 20 20      '(Lu Ll.    
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d90: 4c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  Lt.             
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5db0: 20 20 20 20 20 20 20 4c 6d 0a 20 20 20 20 20 20         Lm.      
5dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f                Lo
5de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 20 20 20 20 20 4d 6e 0a 20 20 20 20 20 20 20 20       Mn.        
5e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 4e 6c 0a 20              Nl. 
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e50: 20 20 20 4e 6f 0a 20 20 20 20 20 20 20 20 20 20     No.          
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e70: 20 20 20 20 20 20 20 20 20 20 50 64 0a 20 20 20            Pd.   
5e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ea0: 20 50 63 0a 20 20 20 20 20 20 20 20 20 20 20 20   Pc.            
5eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ec0: 20 20 20 20 20 20 20 20 50 6f 0a 20 20 20 20 20          Po.     
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
5ef0: 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  c.              
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f10: 20 20 20 20 20 20 53 6d 0a 20 20 20 20 20 20 20        Sm.       
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 6b 0a               Sk.
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 20 20 53 6f 0a 20 20 20 20 20 20 20 20 20      So.         
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f80: 20 20 20 20 20 20 20 20 20 20 20 43 6f 29 29 29             Co)))
5f90: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
5fa0: 20 20 20 63 29 0a 20 20 20 20 20 20 20 20 20 20     c).          
5fb0: 20 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f 6e       (begin (con
5fc0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
5fd0: 31 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  13 (scanChar))).
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
5ff0: 61 63 63 65 70 74 20 27 69 64 29 29 29 29 29 29  accept 'id))))))
6000: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
6010: 65 31 34 20 63 29 0a 20 20 20 20 28 63 61 73 65  e14 c).    (case
6020: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20   c.      ((#\#) 
6030: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61  (consumeChar) (a
6040: 63 63 65 70 74 20 27 73 68 61 72 69 6e 67 75 73  ccept 'sharingus
6050: 65 29 29 0a 20 20 20 20 20 20 28 28 23 5c 3d 29  e)).      ((#\=)
6060: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
6070: 61 63 63 65 70 74 20 27 73 68 61 72 69 6e 67 64  accept 'sharingd
6080: 65 66 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  ef)).      ((#\0
6090: 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
60a0: 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
60b0: 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
60c0: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
60d0: 20 20 28 73 74 61 74 65 31 34 20 28 73 63 61 6e    (state14 (scan
60e0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
60f0: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
6100: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
6110: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
6120: 6e 65 20 28 73 74 61 74 65 31 35 20 63 29 0a 20  ne (state15 c). 
6130: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
6140: 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
6150: 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27 75  Char) (accept 'u
6160: 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 29  nsyntaxsplicing)
6170: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
6180: 63 63 65 70 74 20 27 75 6e 73 79 6e 74 61 78 29  ccept 'unsyntax)
6190: 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
61a0: 74 61 74 65 31 36 20 63 29 0a 20 20 20 20 28 63  tate16 c).    (c
61b0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
61c0: 28 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  () (consumeChar)
61d0: 20 28 61 63 63 65 70 74 20 27 62 76 65 63 73 74   (accept 'bvecst
61e0: 61 72 74 29 29 0a 20 20 20 20 20 20 28 65 6c 73  art)).      (els
61f0: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
6200: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
6210: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
6220: 20 28 73 74 61 74 65 31 37 20 63 29 0a 20 20 20   (state17 c).   
6230: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
6240: 28 23 5c 38 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\8) (consumeCh
6250: 61 72 29 20 28 73 74 61 74 65 31 36 20 28 73 63  ar) (state16 (sc
6260: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
6270: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
6280: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
6290: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
62a0: 66 69 6e 65 20 28 73 74 61 74 65 31 38 20 63 29  fine (state18 c)
62b0: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
62c0: 20 20 20 28 28 23 5c 75 29 20 28 63 6f 6e 73 75     ((#\u) (consu
62d0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 37  meChar) (state17
62e0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
62f0: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
6300: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
6310: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
6320: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
6330: 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  9 c).    (case c
6340: 0a 20 20 20 20 20 20 28 28 23 5c 61 0a 20 20 20  .      ((#\a.   
6350: 20 20 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20       #\b.       
6360: 20 23 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64   #\c.        #\d
6370: 0a 20 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20  .        #\e.   
6380: 20 20 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20       #\f.       
6390: 20 23 5c 67 0a 20 20 20 20 20 20 20 20 23 5c 68   #\g.        #\h
63a0: 0a 20 20 20 20 20 20 20 20 23 5c 69 0a 20 20 20  .        #\i.   
63b0: 20 20 20 20 20 23 5c 6a 0a 20 20 20 20 20 20 20       #\j.       
63c0: 20 23 5c 6b 0a 20 20 20 20 20 20 20 20 23 5c 6c   #\k.        #\l
63d0: 0a 20 20 20 20 20 20 20 20 23 5c 6d 0a 20 20 20  .        #\m.   
63e0: 20 20 20 20 20 23 5c 6e 0a 20 20 20 20 20 20 20       #\n.       
63f0: 20 23 5c 6f 0a 20 20 20 20 20 20 20 20 23 5c 70   #\o.        #\p
6400: 0a 20 20 20 20 20 20 20 20 23 5c 71 0a 20 20 20  .        #\q.   
6410: 20 20 20 20 20 23 5c 72 0a 20 20 20 20 20 20 20       #\r.       
6420: 20 23 5c 73 0a 20 20 20 20 20 20 20 20 23 5c 74   #\s.        #\t
6430: 0a 20 20 20 20 20 20 20 20 23 5c 75 0a 20 20 20  .        #\u.   
6440: 20 20 20 20 20 23 5c 76 0a 20 20 20 20 20 20 20       #\v.       
6450: 20 23 5c 77 0a 20 20 20 20 20 20 20 20 23 5c 78   #\w.        #\x
6460: 0a 20 20 20 20 20 20 20 20 23 5c 79 0a 20 20 20  .        #\y.   
6470: 20 20 20 20 20 23 5c 7a 0a 20 20 20 20 20 20 20       #\z.       
6480: 20 23 5c 41 0a 20 20 20 20 20 20 20 20 23 5c 42   #\A.        #\B
6490: 0a 20 20 20 20 20 20 20 20 23 5c 43 0a 20 20 20  .        #\C.   
64a0: 20 20 20 20 20 23 5c 44 0a 20 20 20 20 20 20 20       #\D.       
64b0: 20 23 5c 45 0a 20 20 20 20 20 20 20 20 23 5c 46   #\E.        #\F
64c0: 0a 20 20 20 20 20 20 20 20 23 5c 47 0a 20 20 20  .        #\G.   
64d0: 20 20 20 20 20 23 5c 48 0a 20 20 20 20 20 20 20       #\H.       
64e0: 20 23 5c 49 0a 20 20 20 20 20 20 20 20 23 5c 4a   #\I.        #\J
64f0: 0a 20 20 20 20 20 20 20 20 23 5c 4b 0a 20 20 20  .        #\K.   
6500: 20 20 20 20 20 23 5c 4c 0a 20 20 20 20 20 20 20       #\L.       
6510: 20 23 5c 4d 0a 20 20 20 20 20 20 20 20 23 5c 4e   #\M.        #\N
6520: 0a 20 20 20 20 20 20 20 20 23 5c 4f 0a 20 20 20  .        #\O.   
6530: 20 20 20 20 20 23 5c 50 0a 20 20 20 20 20 20 20       #\P.       
6540: 20 23 5c 51 0a 20 20 20 20 20 20 20 20 23 5c 52   #\Q.        #\R
6550: 0a 20 20 20 20 20 20 20 20 23 5c 53 0a 20 20 20  .        #\S.   
6560: 20 20 20 20 20 23 5c 54 0a 20 20 20 20 20 20 20       #\T.       
6570: 20 23 5c 55 0a 20 20 20 20 20 20 20 20 23 5c 56   #\U.        #\V
6580: 0a 20 20 20 20 20 20 20 20 23 5c 57 0a 20 20 20  .        #\W.   
6590: 20 20 20 20 20 23 5c 58 0a 20 20 20 20 20 20 20       #\X.       
65a0: 20 23 5c 59 0a 20 20 20 20 20 20 20 20 23 5c 5a   #\Y.        #\Z
65b0: 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
65c0: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
65d0: 74 61 74 65 31 39 20 28 73 63 61 6e 43 68 61 72  tate19 (scanChar
65e0: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
65f0: 28 61 63 63 65 70 74 20 27 63 68 61 72 61 63 74  (accept 'charact
6600: 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  er)))).  (define
6610: 20 28 73 74 61 74 65 32 30 20 63 29 0a 20 20 20   (state20 c).   
6620: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
6630: 28 23 5c 30 0a 20 20 20 20 20 20 20 20 23 5c 31  (#\0.        #\1
6640: 0a 20 20 20 20 20 20 20 20 23 5c 32 0a 20 20 20  .        #\2.   
6650: 20 20 20 20 20 23 5c 33 0a 20 20 20 20 20 20 20       #\3.       
6660: 20 23 5c 34 0a 20 20 20 20 20 20 20 20 23 5c 35   #\4.        #\5
6670: 0a 20 20 20 20 20 20 20 20 23 5c 36 0a 20 20 20  .        #\6.   
6680: 20 20 20 20 20 23 5c 37 0a 20 20 20 20 20 20 20       #\7.       
6690: 20 23 5c 38 0a 20 20 20 20 20 20 20 20 23 5c 39   #\8.        #\9
66a0: 0a 20 20 20 20 20 20 20 20 23 5c 61 0a 20 20 20  .        #\a.   
66b0: 20 20 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20       #\b.       
66c0: 20 23 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64   #\c.        #\d
66d0: 0a 20 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20  .        #\e.   
66e0: 20 20 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20       #\f.       
66f0: 20 23 5c 41 0a 20 20 20 20 20 20 20 20 23 5c 42   #\A.        #\B
6700: 0a 20 20 20 20 20 20 20 20 23 5c 43 0a 20 20 20  .        #\C.   
6710: 20 20 20 20 20 23 5c 44 0a 20 20 20 20 20 20 20       #\D.       
6720: 20 23 5c 45 0a 20 20 20 20 20 20 20 20 23 5c 46   #\E.        #\F
6730: 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
6740: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
6750: 74 61 74 65 32 30 20 28 73 63 61 6e 43 68 61 72  tate20 (scanChar
6760: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
6770: 28 61 63 63 65 70 74 20 27 63 68 61 72 61 63 74  (accept 'charact
6780: 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  er)))).  (define
6790: 20 28 73 74 61 74 65 32 31 20 63 29 0a 20 20 20   (state21 c).   
67a0: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
67b0: 28 23 5c 61 20 23 5c 62 20 23 5c 63 20 23 5c 64  (#\a #\b #\c #\d
67c0: 20 23 5c 65 20 23 5c 66 20 23 5c 41 20 23 5c 42   #\e #\f #\A #\B
67d0: 20 23 5c 43 20 23 5c 44 20 23 5c 45 20 23 5c 46   #\C #\D #\E #\F
67e0: 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
67f0: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
6800: 74 61 74 65 32 31 20 28 73 63 61 6e 43 68 61 72  tate21 (scanChar
6810: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20  ))).      ((#\0 
6820: 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20  #\1 #\2 #\3 #\4 
6830: 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20  #\5 #\6 #\7 #\8 
6840: 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e  #\9).       (con
6850: 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20  sumeChar).      
6860: 20 28 73 74 61 74 65 32 30 20 28 73 63 61 6e 43   (state20 (scanC
6870: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
6880: 5c 67 0a 20 20 20 20 20 20 20 20 23 5c 68 0a 20  \g.        #\h. 
6890: 20 20 20 20 20 20 20 23 5c 69 0a 20 20 20 20 20         #\i.     
68a0: 20 20 20 23 5c 6a 0a 20 20 20 20 20 20 20 20 23     #\j.        #
68b0: 5c 6b 0a 20 20 20 20 20 20 20 20 23 5c 6c 0a 20  \k.        #\l. 
68c0: 20 20 20 20 20 20 20 23 5c 6d 0a 20 20 20 20 20         #\m.     
68d0: 20 20 20 23 5c 6e 0a 20 20 20 20 20 20 20 20 23     #\n.        #
68e0: 5c 6f 0a 20 20 20 20 20 20 20 20 23 5c 70 0a 20  \o.        #\p. 
68f0: 20 20 20 20 20 20 20 23 5c 71 0a 20 20 20 20 20         #\q.     
6900: 20 20 20 23 5c 72 0a 20 20 20 20 20 20 20 20 23     #\r.        #
6910: 5c 73 0a 20 20 20 20 20 20 20 20 23 5c 74 0a 20  \s.        #\t. 
6920: 20 20 20 20 20 20 20 23 5c 75 0a 20 20 20 20 20         #\u.     
6930: 20 20 20 23 5c 76 0a 20 20 20 20 20 20 20 20 23     #\v.        #
6940: 5c 77 0a 20 20 20 20 20 20 20 20 23 5c 78 0a 20  \w.        #\x. 
6950: 20 20 20 20 20 20 20 23 5c 79 0a 20 20 20 20 20         #\y.     
6960: 20 20 20 23 5c 7a 0a 20 20 20 20 20 20 20 20 23     #\z.        #
6970: 5c 47 0a 20 20 20 20 20 20 20 20 23 5c 48 0a 20  \G.        #\H. 
6980: 20 20 20 20 20 20 20 23 5c 49 0a 20 20 20 20 20         #\I.     
6990: 20 20 20 23 5c 4a 0a 20 20 20 20 20 20 20 20 23     #\J.        #
69a0: 5c 4b 0a 20 20 20 20 20 20 20 20 23 5c 4c 0a 20  \K.        #\L. 
69b0: 20 20 20 20 20 20 20 23 5c 4d 0a 20 20 20 20 20         #\M.     
69c0: 20 20 20 23 5c 4e 0a 20 20 20 20 20 20 20 20 23     #\N.        #
69d0: 5c 4f 0a 20 20 20 20 20 20 20 20 23 5c 50 0a 20  \O.        #\P. 
69e0: 20 20 20 20 20 20 20 23 5c 51 0a 20 20 20 20 20         #\Q.     
69f0: 20 20 20 23 5c 52 0a 20 20 20 20 20 20 20 20 23     #\R.        #
6a00: 5c 53 0a 20 20 20 20 20 20 20 20 23 5c 54 0a 20  \S.        #\T. 
6a10: 20 20 20 20 20 20 20 23 5c 55 0a 20 20 20 20 20         #\U.     
6a20: 20 20 20 23 5c 56 0a 20 20 20 20 20 20 20 20 23     #\V.        #
6a30: 5c 57 0a 20 20 20 20 20 20 20 20 23 5c 58 0a 20  \W.        #\X. 
6a40: 20 20 20 20 20 20 20 23 5c 59 0a 20 20 20 20 20         #\Y.     
6a50: 20 20 20 23 5c 5a 29 0a 20 20 20 20 20 20 20 28     #\Z).       (
6a60: 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
6a70: 20 20 20 20 28 73 74 61 74 65 31 39 20 28 73 63      (state19 (sc
6a80: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
6a90: 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 63  (else (accept 'c
6aa0: 68 61 72 61 63 74 65 72 29 29 29 29 0a 20 20 28  haracter)))).  (
6ab0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 32 32 20  define (state22 
6ac0: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
6ad0: 20 20 20 20 20 28 28 23 5c 78 29 20 28 63 6f 6e       ((#\x) (con
6ae0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
6af0: 32 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  21 (scanChar))).
6b00: 20 20 20 20 20 20 28 28 23 5c 61 0a 20 20 20 20        ((#\a.    
6b10: 20 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20      #\b.        
6b20: 23 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a  #\c.        #\d.
6b30: 20 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20          #\e.    
6b40: 20 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20      #\f.        
6b50: 23 5c 67 0a 20 20 20 20 20 20 20 20 23 5c 68 0a  #\g.        #\h.
6b60: 20 20 20 20 20 20 20 20 23 5c 69 0a 20 20 20 20          #\i.    
6b70: 20 20 20 20 23 5c 6a 0a 20 20 20 20 20 20 20 20      #\j.        
6b80: 23 5c 6b 0a 20 20 20 20 20 20 20 20 23 5c 6c 0a  #\k.        #\l.
6b90: 20 20 20 20 20 20 20 20 23 5c 6d 0a 20 20 20 20          #\m.    
6ba0: 20 20 20 20 23 5c 6e 0a 20 20 20 20 20 20 20 20      #\n.        
6bb0: 23 5c 6f 0a 20 20 20 20 20 20 20 20 23 5c 70 0a  #\o.        #\p.
6bc0: 20 20 20 20 20 20 20 20 23 5c 71 0a 20 20 20 20          #\q.    
6bd0: 20 20 20 20 23 5c 72 0a 20 20 20 20 20 20 20 20      #\r.        
6be0: 23 5c 73 0a 20 20 20 20 20 20 20 20 23 5c 74 0a  #\s.        #\t.
6bf0: 20 20 20 20 20 20 20 20 23 5c 75 0a 20 20 20 20          #\u.    
6c00: 20 20 20 20 23 5c 76 0a 20 20 20 20 20 20 20 20      #\v.        
6c10: 23 5c 77 0a 20 20 20 20 20 20 20 20 23 5c 79 0a  #\w.        #\y.
6c20: 20 20 20 20 20 20 20 20 23 5c 7a 0a 20 20 20 20          #\z.    
6c30: 20 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20 20      #\A.        
6c40: 23 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43 0a  #\B.        #\C.
6c50: 20 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20 20          #\D.    
6c60: 20 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20 20      #\E.        
6c70: 23 5c 46 0a 20 20 20 20 20 20 20 20 23 5c 47 0a  #\F.        #\G.
6c80: 20 20 20 20 20 20 20 20 23 5c 48 0a 20 20 20 20          #\H.    
6c90: 20 20 20 20 23 5c 49 0a 20 20 20 20 20 20 20 20      #\I.        
6ca0: 23 5c 4a 0a 20 20 20 20 20 20 20 20 23 5c 4b 0a  #\J.        #\K.
6cb0: 20 20 20 20 20 20 20 20 23 5c 4c 0a 20 20 20 20          #\L.    
6cc0: 20 20 20 20 23 5c 4d 0a 20 20 20 20 20 20 20 20      #\M.        
6cd0: 23 5c 4e 0a 20 20 20 20 20 20 20 20 23 5c 4f 0a  #\N.        #\O.
6ce0: 20 20 20 20 20 20 20 20 23 5c 50 0a 20 20 20 20          #\P.    
6cf0: 20 20 20 20 23 5c 51 0a 20 20 20 20 20 20 20 20      #\Q.        
6d00: 23 5c 52 0a 20 20 20 20 20 20 20 20 23 5c 53 0a  #\R.        #\S.
6d10: 20 20 20 20 20 20 20 20 23 5c 54 0a 20 20 20 20          #\T.    
6d20: 20 20 20 20 23 5c 55 0a 20 20 20 20 20 20 20 20      #\U.        
6d30: 23 5c 56 0a 20 20 20 20 20 20 20 20 23 5c 57 0a  #\V.        #\W.
6d40: 20 20 20 20 20 20 20 20 23 5c 58 0a 20 20 20 20          #\X.    
6d50: 20 20 20 20 23 5c 59 0a 20 20 20 20 20 20 20 20      #\Y.        
6d60: 23 5c 5a 29 0a 20 20 20 20 20 20 20 28 63 6f 6e  #\Z).       (con
6d70: 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20  sumeChar).      
6d80: 20 28 73 74 61 74 65 31 39 20 28 73 63 61 6e 43   (state19 (scanC
6d90: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
6da0: 73 65 0a 20 20 20 20 20 20 20 28 69 66 20 28 63  se.       (if (c
6db0: 68 61 72 3f 20 63 29 0a 20 20 20 20 20 20 20 20  har? c).        
6dc0: 20 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73 75     (begin (consu
6dd0: 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
6de0: 27 63 68 61 72 61 63 74 65 72 29 29 0a 20 20 20  'character)).   
6df0: 20 20 20 20 20 20 20 20 28 73 63 61 6e 6e 65 72          (scanner
6e00: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
6e10: 65 74 65 54 6f 6b 65 6e 29 29 29 29 29 0a 20 20  eteToken))))).  
6e20: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 32 33  (define (state23
6e30: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
6e40: 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c 49 20        ((#\i #\I 
6e50: 23 5c 65 20 23 5c 45 29 0a 20 20 20 20 20 20 20  #\e #\E).       
6e60: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
6e70: 20 20 20 20 20 28 73 74 61 74 65 35 38 20 28 73       (state58 (s
6e80: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
6e90: 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
6ea0: 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
6eb0: 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
6ec0: 65 66 69 6e 65 20 28 73 74 61 74 65 32 34 20 63  efine (state24 c
6ed0: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
6ee0: 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28      ((#\+ #\-) (
6ef0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
6f00: 61 74 65 35 37 20 28 73 63 61 6e 43 68 61 72 29  ate57 (scanChar)
6f10: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20  )).      ((#\0. 
6f20: 20 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20         #\1.     
6f30: 20 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23     #\2.        #
6f40: 5c 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20  \3.        #\4. 
6f50: 20 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20         #\5.     
6f60: 20 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23     #\6.        #
6f70: 5c 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20  \7.        #\8. 
6f80: 20 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20         #\9.     
6f90: 20 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23     #\a.        #
6fa0: 5c 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20  \b.        #\c. 
6fb0: 20 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20         #\d.     
6fc0: 20 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23     #\e.        #
6fd0: 5c 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20  \f.        #\A. 
6fe0: 20 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20         #\B.     
6ff0: 20 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23     #\C.        #
7000: 5c 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20  \D.        #\E. 
7010: 20 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20         #\F).    
7020: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
7030: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 33 33  .       (state33
7040: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
7050: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
7060: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32  umeChar) (state2
7070: 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  3 (scanChar))). 
7080: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
7090: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
70a0: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
70b0: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
70c0: 32 35 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  25 c).    (case 
70d0: 63 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c  c.      ((#\i #\
70e0: 49 20 23 5c 65 20 23 5c 45 29 0a 20 20 20 20 20  I #\e #\E).     
70f0: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
7100: 20 20 20 20 20 20 20 28 73 74 61 74 65 38 38 20         (state88 
7110: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
7120: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
7130: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
7140: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
7150: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 32 36  (define (state26
7160: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
7170: 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29        ((#\+ #\-)
7180: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
7190: 73 74 61 74 65 38 37 20 28 73 63 61 6e 43 68 61  state87 (scanCha
71a0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  r))).      ((#\0
71b0: 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
71c0: 20 23 5c 35 20 23 5c 36 20 23 5c 37 29 0a 20 20   #\5 #\6 #\7).  
71d0: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
71e0: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
71f0: 36 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  63 (scanChar))).
7200: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
7210: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
7220: 65 32 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  e25 (scanChar)))
7230: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
7240: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
7250: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
7260: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
7270: 74 65 32 37 20 63 29 0a 20 20 20 20 28 63 61 73  te27 c).    (cas
7280: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69 20  e c.      ((#\i 
7290: 23 5c 49 20 23 5c 65 20 23 5c 45 29 0a 20 20 20  #\I #\e #\E).   
72a0: 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
72b0: 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31  ).       (state1
72c0: 32 36 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  26 (scanChar))).
72d0: 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
72e0: 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
72f0: 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
7300: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
7310: 65 32 38 20 63 29 0a 20 20 20 20 28 63 61 73 65  e28 c).    (case
7320: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23   c.      ((#\+ #
7330: 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \-) (consumeChar
7340: 29 20 28 73 74 61 74 65 31 32 35 20 28 73 63 61  ) (state125 (sca
7350: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
7360: 28 23 5c 30 20 23 5c 31 29 20 28 63 6f 6e 73 75  (#\0 #\1) (consu
7370: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39 33  meChar) (state93
7380: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
7390: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
73a0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32  umeChar) (state2
73b0: 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  7 (scanChar))). 
73c0: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
73d0: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
73e0: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
73f0: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
7400: 32 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  29 c).    (case 
7410: 63 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20 28  c.      ((#\@) (
7420: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
7430: 61 74 65 35 31 20 28 73 63 61 6e 43 68 61 72 29  ate51 (scanChar)
7440: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23  )).      ((#\+ #
7450: 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \-) (consumeChar
7460: 29 20 28 73 74 61 74 65 34 35 20 28 73 63 61 6e  ) (state45 (scan
7470: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
7480: 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
7490: 72 29 20 28 73 74 61 74 65 32 39 20 28 73 63 61  r) (state29 (sca
74a0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
74b0: 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75  else (accept 'nu
74c0: 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69  mber)))).  (defi
74d0: 6e 65 20 28 73 74 61 74 65 33 30 20 63 29 0a 20  ne (state30 c). 
74e0: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
74f0: 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
7500: 43 68 61 72 29 20 28 73 74 61 74 65 35 31 20 28  Char) (state51 (
7510: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
7520: 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f    ((#\+ #\-) (co
7530: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
7540: 65 34 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  e45 (scanChar)))
7550: 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20 20  .      ((#\0.   
7560: 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20 20       #\1.       
7570: 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c 33   #\2.        #\3
7580: 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20 20  .        #\4.   
7590: 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20 20       #\5.       
75a0: 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c 37   #\6.        #\7
75b0: 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20 20  .        #\8.   
75c0: 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20 20       #\9.       
75d0: 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c 62   #\a.        #\b
75e0: 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20 20  .        #\c.   
75f0: 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20 20       #\d.       
7600: 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c 66   #\e.        #\f
7610: 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20 20  .        #\A.   
7620: 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20 20       #\B.       
7630: 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c 44   #\C.        #\D
7640: 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20 20  .        #\E.   
7650: 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20 20       #\F).      
7660: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
7670: 20 20 20 20 20 20 28 73 74 61 74 65 33 30 20 28        (state30 (
7680: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
7690: 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d    ((#\#) (consum
76a0: 65 43 68 61 72 29 20 28 73 74 61 74 65 32 39 20  eChar) (state29 
76b0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
76c0: 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74     (else (accept
76d0: 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28   'number)))).  (
76e0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 33 31 20  define (state31 
76f0: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
7700: 20 20 20 20 20 28 28 23 5c 30 0a 20 20 20 20 20       ((#\0.     
7710: 20 20 20 23 5c 31 0a 20 20 20 20 20 20 20 20 23     #\1.        #
7720: 5c 32 0a 20 20 20 20 20 20 20 20 23 5c 33 0a 20  \2.        #\3. 
7730: 20 20 20 20 20 20 20 23 5c 34 0a 20 20 20 20 20         #\4.     
7740: 20 20 20 23 5c 35 0a 20 20 20 20 20 20 20 20 23     #\5.        #
7750: 5c 36 0a 20 20 20 20 20 20 20 20 23 5c 37 0a 20  \6.        #\7. 
7760: 20 20 20 20 20 20 20 23 5c 38 0a 20 20 20 20 20         #\8.     
7770: 20 20 20 23 5c 39 0a 20 20 20 20 20 20 20 20 23     #\9.        #
7780: 5c 61 0a 20 20 20 20 20 20 20 20 23 5c 62 0a 20  \a.        #\b. 
7790: 20 20 20 20 20 20 20 23 5c 63 0a 20 20 20 20 20         #\c.     
77a0: 20 20 20 23 5c 64 0a 20 20 20 20 20 20 20 20 23     #\d.        #
77b0: 5c 65 0a 20 20 20 20 20 20 20 20 23 5c 66 0a 20  \e.        #\f. 
77c0: 20 20 20 20 20 20 20 23 5c 41 0a 20 20 20 20 20         #\A.     
77d0: 20 20 20 23 5c 42 0a 20 20 20 20 20 20 20 20 23     #\B.        #
77e0: 5c 43 0a 20 20 20 20 20 20 20 20 23 5c 44 0a 20  \C.        #\D. 
77f0: 20 20 20 20 20 20 20 23 5c 45 0a 20 20 20 20 20         #\E.     
7800: 20 20 20 23 5c 46 29 0a 20 20 20 20 20 20 20 28     #\F).       (
7810: 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
7820: 20 20 20 20 28 73 74 61 74 65 33 30 20 28 73 63      (state30 (sc
7830: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
7840: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
7850: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
7860: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
7870: 66 69 6e 65 20 28 73 74 61 74 65 33 32 20 63 29  fine (state32 c)
7880: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
7890: 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75     ((#\@) (consu
78a0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 35 31  meChar) (state51
78b0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
78c0: 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28      ((#\+ #\-) (
78d0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
78e0: 61 74 65 34 35 20 28 73 63 61 6e 43 68 61 72 29  ate45 (scanChar)
78f0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20  )).      ((#\#) 
7900: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
7910: 74 61 74 65 33 32 20 28 73 63 61 6e 43 68 61 72  tate32 (scanChar
7920: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2f 29  ))).      ((#\/)
7930: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
7940: 73 74 61 74 65 33 31 20 28 73 63 61 6e 43 68 61  state31 (scanCha
7950: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
7960: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
7970: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
7980: 73 74 61 74 65 33 33 20 63 29 0a 20 20 20 20 28  state33 c).    (
7990: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
79a0: 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \@) (consumeChar
79b0: 29 20 28 73 74 61 74 65 35 31 20 28 73 63 61 6e  ) (state51 (scan
79c0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
79d0: 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d  #\+ #\-) (consum
79e0: 65 43 68 61 72 29 20 28 73 74 61 74 65 34 35 20  eChar) (state45 
79f0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
7a00: 20 20 20 28 28 23 5c 30 0a 20 20 20 20 20 20 20     ((#\0.       
7a10: 20 23 5c 31 0a 20 20 20 20 20 20 20 20 23 5c 32   #\1.        #\2
7a20: 0a 20 20 20 20 20 20 20 20 23 5c 33 0a 20 20 20  .        #\3.   
7a30: 20 20 20 20 20 23 5c 34 0a 20 20 20 20 20 20 20       #\4.       
7a40: 20 23 5c 35 0a 20 20 20 20 20 20 20 20 23 5c 36   #\5.        #\6
7a50: 0a 20 20 20 20 20 20 20 20 23 5c 37 0a 20 20 20  .        #\7.   
7a60: 20 20 20 20 20 23 5c 38 0a 20 20 20 20 20 20 20       #\8.       
7a70: 20 23 5c 39 0a 20 20 20 20 20 20 20 20 23 5c 61   #\9.        #\a
7a80: 0a 20 20 20 20 20 20 20 20 23 5c 62 0a 20 20 20  .        #\b.   
7a90: 20 20 20 20 20 23 5c 63 0a 20 20 20 20 20 20 20       #\c.       
7aa0: 20 23 5c 64 0a 20 20 20 20 20 20 20 20 23 5c 65   #\d.        #\e
7ab0: 0a 20 20 20 20 20 20 20 20 23 5c 66 0a 20 20 20  .        #\f.   
7ac0: 20 20 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20       #\A.       
7ad0: 20 23 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43   #\B.        #\C
7ae0: 0a 20 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20  .        #\D.   
7af0: 20 20 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20       #\E.       
7b00: 20 23 5c 46 29 0a 20 20 20 20 20 20 20 28 63 6f   #\F).       (co
7b10: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
7b20: 20 20 28 73 74 61 74 65 33 33 20 28 73 63 61 6e    (state33 (scan
7b30: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
7b40: 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
7b50: 72 29 20 28 73 74 61 74 65 33 32 20 28 73 63 61  r) (state32 (sca
7b60: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
7b70: 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\/) (consumeCh
7b80: 61 72 29 20 28 73 74 61 74 65 33 31 20 28 73 63  ar) (state31 (sc
7b90: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
7ba0: 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e  (else (accept 'n
7bb0: 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66  umber)))).  (def
7bc0: 69 6e 65 20 28 73 74 61 74 65 33 34 20 63 29 0a  ine (state34 c).
7bd0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
7be0: 20 20 28 28 23 5c 66 29 20 28 63 6f 6e 73 75 6d    ((#\f) (consum
7bf0: 65 43 68 61 72 29 20 28 73 74 61 74 65 33 38 20  eChar) (state38 
7c00: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
7c10: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
7c20: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
7c30: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
7c40: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 33 35  (define (state35
7c50: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
7c60: 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28 63 6f        ((#\n) (co
7c70: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
7c80: 65 33 34 20 28 73 63 61 6e 43 68 61 72 29 29 29  e34 (scanChar)))
7c90: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63  .      (else (ac
7ca0: 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29  cept 'number))))
7cb0: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
7cc0: 65 33 36 20 63 29 0a 20 20 20 20 28 63 61 73 65  e36 c).    (case
7cd0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20   c.      ((#\i) 
7ce0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61  (consumeChar) (a
7cf0: 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a  ccept 'number)).
7d00: 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f        ((#\@) (co
7d10: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
7d20: 65 35 31 20 28 73 63 61 6e 43 68 61 72 29 29 29  e51 (scanChar)))
7d30: 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d  .      ((#\+ #\-
7d40: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
7d50: 28 73 74 61 74 65 34 35 20 28 73 63 61 6e 43 68  (state45 (scanCh
7d60: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
7d70: 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65  e (accept 'numbe
7d80: 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  r)))).  (define 
7d90: 28 73 74 61 74 65 33 37 20 63 29 0a 20 20 20 20  (state37 c).    
7da0: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
7db0: 23 5c 30 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\0) (consumeCha
7dc0: 72 29 20 28 73 74 61 74 65 33 36 20 28 73 63 61  r) (state36 (sca
7dd0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
7de0: 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
7df0: 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
7e00: 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
7e10: 69 6e 65 20 28 73 74 61 74 65 33 38 20 63 29 0a  ine (state38 c).
7e20: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
7e30: 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d    ((#\.) (consum
7e40: 65 43 68 61 72 29 20 28 73 74 61 74 65 33 37 20  eChar) (state37 
7e50: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
7e60: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
7e70: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
7e80: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
7e90: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 33 39  (define (state39
7ea0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
7eb0: 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28 63 6f        ((#\n) (co
7ec0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
7ed0: 65 33 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  e38 (scanChar)))
7ee0: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
7ef0: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
7f00: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
7f10: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
7f20: 74 65 34 30 20 63 29 0a 20 20 20 20 28 63 61 73  te40 c).    (cas
7f30: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 61 29  e c.      ((#\a)
7f40: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
7f50: 73 74 61 74 65 33 39 20 28 73 63 61 6e 43 68 61  state39 (scanCha
7f60: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
7f70: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
7f80: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
7f90: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
7fa0: 28 73 74 61 74 65 34 31 20 63 29 0a 20 20 20 20  (state41 c).    
7fb0: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
7fc0: 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\i) (consumeCha
7fd0: 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  r) (accept 'numb
7fe0: 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23  er)).      ((#\#
7ff0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
8000: 28 73 74 61 74 65 31 30 38 20 28 73 63 61 6e 43  (state108 (scanC
8010: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
8020: 5c 30 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20  \0.        #\1. 
8030: 20 20 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20         #\2.     
8040: 20 20 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23     #\3.        #
8050: 5c 34 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20  \4.        #\5. 
8060: 20 20 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20         #\6.     
8070: 20 20 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23     #\7.        #
8080: 5c 38 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20  \8.        #\9. 
8090: 20 20 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20         #\a.     
80a0: 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23     #\b.        #
80b0: 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20  \c.        #\d. 
80c0: 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20         #\e.     
80d0: 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23     #\f.        #
80e0: 5c 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20  \A.        #\B. 
80f0: 20 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20         #\C.     
8100: 20 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23     #\D.        #
8110: 5c 45 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a  \E.        #\F).
8120: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
8130: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
8140: 74 65 34 31 20 28 73 63 61 6e 43 68 61 72 29 29  te41 (scanChar))
8150: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
8160: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
8170: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
8180: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
8190: 61 74 65 34 32 20 63 29 0a 20 20 20 20 28 63 61  ate42 c).    (ca
81a0: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30  se c.      ((#\0
81b0: 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20 20 20  .        #\1.   
81c0: 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20 20 20       #\2.       
81d0: 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23 5c 34   #\3.        #\4
81e0: 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20 20 20  .        #\5.   
81f0: 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20 20 20       #\6.       
8200: 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23 5c 38   #\7.        #\8
8210: 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20 20 20  .        #\9.   
8220: 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20 20 20       #\a.       
8230: 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c 63   #\b.        #\c
8240: 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20 20 20  .        #\d.   
8250: 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20 20 20       #\e.       
8260: 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c 41   #\f.        #\A
8270: 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20 20 20  .        #\B.   
8280: 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20 20 20       #\C.       
8290: 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23 5c 45   #\D.        #\E
82a0: 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a 20 20  .        #\F).  
82b0: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
82c0: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
82d0: 34 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  41 (scanChar))).
82e0: 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
82f0: 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
8300: 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
8310: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
8320: 65 34 33 20 63 29 0a 20 20 20 20 28 63 61 73 65  e43 c).    (case
8330: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20   c.      ((#\i) 
8340: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61  (consumeChar) (a
8350: 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a  ccept 'number)).
8360: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
8370: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
8380: 65 34 33 20 28 73 63 61 6e 43 68 61 72 29 29 29  e43 (scanChar)))
8390: 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63  .      ((#\/) (c
83a0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
83b0: 74 65 34 32 20 28 73 63 61 6e 43 68 61 72 29 29  te42 (scanChar))
83c0: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
83d0: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
83e0: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
83f0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
8400: 61 74 65 34 34 20 63 29 0a 20 20 20 20 28 63 61  ate44 c).    (ca
8410: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69  se c.      ((#\i
8420: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
8430: 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
8440: 29 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20  ).      ((#\0.  
8450: 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20        #\1.      
8460: 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c    #\2.        #\
8470: 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20  3.        #\4.  
8480: 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20        #\5.      
8490: 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c    #\6.        #\
84a0: 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20  7.        #\8.  
84b0: 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20        #\9.      
84c0: 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c    #\a.        #\
84d0: 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20  b.        #\c.  
84e0: 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20        #\d.      
84f0: 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c    #\e.        #\
8500: 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20  f.        #\A.  
8510: 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20        #\B.      
8520: 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c    #\C.        #\
8530: 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20  D.        #\E.  
8540: 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20        #\F).     
8550: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
8560: 20 20 20 20 20 20 20 28 73 74 61 74 65 34 34 20         (state44 
8570: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
8580: 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75     ((#\#) (consu
8590: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 34 33  meChar) (state43
85a0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
85b0: 20 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73      ((#\/) (cons
85c0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 34  umeChar) (state4
85d0: 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  2 (scanChar))). 
85e0: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
85f0: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
8600: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
8610: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
8620: 34 35 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  45 c).    (case 
8630: 63 0a 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28  c.      ((#\n) (
8640: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
8650: 61 74 65 31 30 37 20 28 73 63 61 6e 43 68 61 72  ate107 (scanChar
8660: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 69 29  ))).      ((#\i)
8670: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
8680: 73 74 61 74 65 31 30 32 20 28 73 63 61 6e 43 68  state102 (scanCh
8690: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
86a0: 30 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20 20  0.        #\1.  
86b0: 20 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20 20        #\2.      
86c0: 20 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23 5c    #\3.        #\
86d0: 34 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20 20  4.        #\5.  
86e0: 20 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20 20        #\6.      
86f0: 20 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23 5c    #\7.        #\
8700: 38 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20 20  8.        #\9.  
8710: 20 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20 20        #\a.      
8720: 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c    #\b.        #\
8730: 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20 20  c.        #\d.  
8740: 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20 20        #\e.      
8750: 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c    #\f.        #\
8760: 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20 20  A.        #\B.  
8770: 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20 20        #\C.      
8780: 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23 5c    #\D.        #\
8790: 45 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a 20  E.        #\F). 
87a0: 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
87b0: 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
87c0: 65 34 34 20 28 73 63 61 6e 43 68 61 72 29 29 29  e44 (scanChar)))
87d0: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
87e0: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
87f0: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
8800: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
8810: 74 65 34 36 20 63 29 0a 20 20 20 20 28 63 61 73  te46 c).    (cas
8820: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 23 29  e c.      ((#\#)
8830: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
8840: 73 74 61 74 65 31 39 32 20 28 73 63 61 6e 43 68  state192 (scanCh
8850: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
8860: 30 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20 20  0.        #\1.  
8870: 20 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20 20        #\2.      
8880: 20 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23 5c    #\3.        #\
8890: 34 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20 20  4.        #\5.  
88a0: 20 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20 20        #\6.      
88b0: 20 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23 5c    #\7.        #\
88c0: 38 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20 20  8.        #\9.  
88d0: 20 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20 20        #\a.      
88e0: 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c    #\b.        #\
88f0: 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20 20  c.        #\d.  
8900: 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20 20        #\e.      
8910: 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c    #\f.        #\
8920: 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20 20  A.        #\B.  
8930: 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20 20        #\C.      
8940: 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23 5c    #\D.        #\
8950: 45 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a 20  E.        #\F). 
8960: 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
8970: 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
8980: 65 34 36 20 28 73 63 61 6e 43 68 61 72 29 29 29  e46 (scanChar)))
8990: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63  .      (else (ac
89a0: 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29  cept 'number))))
89b0: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
89c0: 65 34 37 20 63 29 0a 20 20 20 20 28 63 61 73 65  e47 c).    (case
89d0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20   c.      ((#\0. 
89e0: 20 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20         #\1.     
89f0: 20 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23     #\2.        #
8a00: 5c 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20  \3.        #\4. 
8a10: 20 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20         #\5.     
8a20: 20 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23     #\6.        #
8a30: 5c 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20  \7.        #\8. 
8a40: 20 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20         #\9.     
8a50: 20 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23     #\a.        #
8a60: 5c 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20  \b.        #\c. 
8a70: 20 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20         #\d.     
8a80: 20 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23     #\e.        #
8a90: 5c 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20  \f.        #\A. 
8aa0: 20 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20         #\B.     
8ab0: 20 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23     #\C.        #
8ac0: 5c 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20  \D.        #\E. 
8ad0: 20 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20         #\F).    
8ae0: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
8af0: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 34 36  .       (state46
8b00: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
8b10: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
8b20: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
8b30: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
8b40: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 34   (define (state4
8b50: 38 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  8 c).    (case c
8b60: 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63  .      ((#\#) (c
8b70: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
8b80: 74 65 34 38 20 28 73 63 61 6e 43 68 61 72 29 29  te48 (scanChar))
8b90: 29 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28  ).      ((#\/) (
8ba0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
8bb0: 61 74 65 34 37 20 28 73 63 61 6e 43 68 61 72 29  ate47 (scanChar)
8bc0: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
8bd0: 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
8be0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
8bf0: 61 74 65 34 39 20 63 29 0a 20 20 20 20 28 63 61  ate49 c).    (ca
8c00: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30  se c.      ((#\0
8c10: 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20 20 20  .        #\1.   
8c20: 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20 20 20       #\2.       
8c30: 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23 5c 34   #\3.        #\4
8c40: 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20 20 20  .        #\5.   
8c50: 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20 20 20       #\6.       
8c60: 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23 5c 38   #\7.        #\8
8c70: 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20 20 20  .        #\9.   
8c80: 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20 20 20       #\a.       
8c90: 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23 5c 63   #\b.        #\c
8ca0: 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20 20 20  .        #\d.   
8cb0: 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20 20 20       #\e.       
8cc0: 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23 5c 41   #\f.        #\A
8cd0: 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20 20 20  .        #\B.   
8ce0: 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20 20 20       #\C.       
8cf0: 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23 5c 45   #\D.        #\E
8d00: 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a 20 20  .        #\F).  
8d10: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
8d20: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
8d30: 34 39 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  49 (scanChar))).
8d40: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
8d50: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
8d60: 65 34 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  e48 (scanChar)))
8d70: 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63  .      ((#\/) (c
8d80: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
8d90: 74 65 34 37 20 28 73 63 61 6e 43 68 61 72 29 29  te47 (scanChar))
8da0: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
8db0: 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29  ccept 'number)))
8dc0: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
8dd0: 74 65 35 30 20 63 29 0a 20 20 20 20 28 63 61 73  te50 c).    (cas
8de0: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 6e 29  e c.      ((#\n)
8df0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
8e00: 73 74 61 74 65 31 38 33 20 28 73 63 61 6e 43 68  state183 (scanCh
8e10: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
8e20: 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  i) (consumeChar)
8e30: 20 28 73 74 61 74 65 31 37 39 20 28 73 63 61 6e   (state179 (scan
8e40: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
8e50: 23 5c 30 0a 20 20 20 20 20 20 20 20 23 5c 31 0a  #\0.        #\1.
8e60: 20 20 20 20 20 20 20 20 23 5c 32 0a 20 20 20 20          #\2.    
8e70: 20 20 20 20 23 5c 33 0a 20 20 20 20 20 20 20 20      #\3.        
8e80: 23 5c 34 0a 20 20 20 20 20 20 20 20 23 5c 35 0a  #\4.        #\5.
8e90: 20 20 20 20 20 20 20 20 23 5c 36 0a 20 20 20 20          #\6.    
8ea0: 20 20 20 20 23 5c 37 0a 20 20 20 20 20 20 20 20      #\7.        
8eb0: 23 5c 38 0a 20 20 20 20 20 20 20 20 23 5c 39 0a  #\8.        #\9.
8ec0: 20 20 20 20 20 20 20 20 23 5c 61 0a 20 20 20 20          #\a.    
8ed0: 20 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20      #\b.        
8ee0: 23 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a  #\c.        #\d.
8ef0: 20 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20          #\e.    
8f00: 20 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20      #\f.        
8f10: 23 5c 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a  #\A.        #\B.
8f20: 20 20 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20          #\C.    
8f30: 20 20 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20      #\D.        
8f40: 23 5c 45 0a 20 20 20 20 20 20 20 20 23 5c 46 29  #\E.        #\F)
8f50: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
8f60: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
8f70: 61 74 65 34 39 20 28 73 63 61 6e 43 68 61 72 29  ate49 (scanChar)
8f80: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
8f90: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
8fa0: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
8fb0: 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
8fc0: 74 61 74 65 35 31 20 63 29 0a 20 20 20 20 28 63  tate51 c).    (c
8fd0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
8fe0: 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43  + #\-) (consumeC
8ff0: 68 61 72 29 20 28 73 74 61 74 65 35 30 20 28 73  har) (state50 (s
9000: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
9010: 20 28 28 23 5c 30 0a 20 20 20 20 20 20 20 20 23   ((#\0.        #
9020: 5c 31 0a 20 20 20 20 20 20 20 20 23 5c 32 0a 20  \1.        #\2. 
9030: 20 20 20 20 20 20 20 23 5c 33 0a 20 20 20 20 20         #\3.     
9040: 20 20 20 23 5c 34 0a 20 20 20 20 20 20 20 20 23     #\4.        #
9050: 5c 35 0a 20 20 20 20 20 20 20 20 23 5c 36 0a 20  \5.        #\6. 
9060: 20 20 20 20 20 20 20 23 5c 37 0a 20 20 20 20 20         #\7.     
9070: 20 20 20 23 5c 38 0a 20 20 20 20 20 20 20 20 23     #\8.        #
9080: 5c 39 0a 20 20 20 20 20 20 20 20 23 5c 61 0a 20  \9.        #\a. 
9090: 20 20 20 20 20 20 20 23 5c 62 0a 20 20 20 20 20         #\b.     
90a0: 20 20 20 23 5c 63 0a 20 20 20 20 20 20 20 20 23     #\c.        #
90b0: 5c 64 0a 20 20 20 20 20 20 20 20 23 5c 65 0a 20  \d.        #\e. 
90c0: 20 20 20 20 20 20 20 23 5c 66 0a 20 20 20 20 20         #\f.     
90d0: 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20 20 23     #\A.        #
90e0: 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43 0a 20  \B.        #\C. 
90f0: 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20 20 20         #\D.     
9100: 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20 20 23     #\E.        #
9110: 5c 46 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \F).       (cons
9120: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
9130: 28 73 74 61 74 65 34 39 20 28 73 63 61 6e 43 68  (state49 (scanCh
9140: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
9150: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
9160: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
9170: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
9180: 20 28 73 74 61 74 65 35 32 20 63 29 0a 20 20 20   (state52 c).   
9190: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
91a0: 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\i) (consumeCh
91b0: 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d  ar) (accept 'num
91c0: 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ber)).      ((#\
91d0: 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  #) (consumeChar)
91e0: 20 28 73 74 61 74 65 35 32 20 28 73 63 61 6e 43   (state52 (scanC
91f0: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
9200: 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \@) (consumeChar
9210: 29 20 28 73 74 61 74 65 35 31 20 28 73 63 61 6e  ) (state51 (scan
9220: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
9230: 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d  #\+ #\-) (consum
9240: 65 43 68 61 72 29 20 28 73 74 61 74 65 34 35 20  eChar) (state45 
9250: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
9260: 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74     (else (accept
9270: 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28   'number)))).  (
9280: 64 65 66 69 6e 65 20 28 73 74 61 74 65 35 33 20  define (state53 
9290: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
92a0: 20 20 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e       ((#\i) (con
92b0: 73 75 6d 65 43 68 61 72 29 20 28 61 63 63 65 70  sumeChar) (accep
92c0: 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20  t 'number)).    
92d0: 20 20 28 28 23 5c 30 0a 20 20 20 20 20 20 20 20    ((#\0.        
92e0: 23 5c 31 0a 20 20 20 20 20 20 20 20 23 5c 32 0a  #\1.        #\2.
92f0: 20 20 20 20 20 20 20 20 23 5c 33 0a 20 20 20 20          #\3.    
9300: 20 20 20 20 23 5c 34 0a 20 20 20 20 20 20 20 20      #\4.        
9310: 23 5c 35 0a 20 20 20 20 20 20 20 20 23 5c 36 0a  #\5.        #\6.
9320: 20 20 20 20 20 20 20 20 23 5c 37 0a 20 20 20 20          #\7.    
9330: 20 20 20 20 23 5c 38 0a 20 20 20 20 20 20 20 20      #\8.        
9340: 23 5c 39 0a 20 20 20 20 20 20 20 20 23 5c 61 0a  #\9.        #\a.
9350: 20 20 20 20 20 20 20 20 23 5c 62 0a 20 20 20 20          #\b.    
9360: 20 20 20 20 23 5c 63 0a 20 20 20 20 20 20 20 20      #\c.        
9370: 23 5c 64 0a 20 20 20 20 20 20 20 20 23 5c 65 0a  #\d.        #\e.
9380: 20 20 20 20 20 20 20 20 23 5c 66 0a 20 20 20 20          #\f.    
9390: 20 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20 20      #\A.        
93a0: 23 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43 0a  #\B.        #\C.
93b0: 20 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20 20          #\D.    
93c0: 20 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20 20      #\E.        
93d0: 23 5c 46 29 0a 20 20 20 20 20 20 20 28 63 6f 6e  #\F).       (con
93e0: 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20  sumeChar).      
93f0: 20 28 73 74 61 74 65 35 33 20 28 73 63 61 6e 43   (state53 (scanC
9400: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
9410: 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \#) (consumeChar
9420: 29 20 28 73 74 61 74 65 35 32 20 28 73 63 61 6e  ) (state52 (scan
9430: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
9440: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
9450: 72 29 20 28 73 74 61 74 65 35 31 20 28 73 63 61  r) (state51 (sca
9460: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
9470: 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75  (#\+ #\-) (consu
9480: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 34 35  meChar) (state45
9490: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
94a0: 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70      (else (accep
94b0: 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20  t 'number)))).  
94c0: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 35 34  (define (state54
94d0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
94e0: 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20 20 20        ((#\0.    
94f0: 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20 20 20      #\1.        
9500: 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c 33 0a  #\2.        #\3.
9510: 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20 20 20          #\4.    
9520: 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20 20 20      #\5.        
9530: 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c 37 0a  #\6.        #\7.
9540: 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20 20 20          #\8.    
9550: 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20 20 20      #\9.        
9560: 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c 62 0a  #\a.        #\b.
9570: 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20 20 20          #\c.    
9580: 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20 20 20      #\d.        
9590: 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c 66 0a  #\e.        #\f.
95a0: 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20 20 20          #\A.    
95b0: 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20 20 20      #\B.        
95c0: 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c 44 0a  #\C.        #\D.
95d0: 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20 20 20          #\E.    
95e0: 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20 20 20      #\F).       
95f0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
9600: 20 20 20 20 20 28 73 74 61 74 65 35 33 20 28 73       (state53 (s
9610: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
9620: 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
9630: 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
9640: 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
9650: 65 66 69 6e 65 20 28 73 74 61 74 65 35 35 20 63  efine (state55 c
9660: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
9670: 20 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73      ((#\i) (cons
9680: 75 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74  umeChar) (accept
9690: 20 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20   'number)).     
96a0: 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65   ((#\#) (consume
96b0: 43 68 61 72 29 20 28 73 74 61 74 65 35 35 20 28  Char) (state55 (
96c0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
96d0: 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d    ((#\/) (consum
96e0: 65 43 68 61 72 29 20 28 73 74 61 74 65 35 34 20  eChar) (state54 
96f0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
9700: 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75     ((#\@) (consu
9710: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 35 31  meChar) (state51
9720: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
9730: 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28      ((#\+ #\-) (
9740: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
9750: 61 74 65 34 35 20 28 73 63 61 6e 43 68 61 72 29  ate45 (scanChar)
9760: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
9770: 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
9780: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
9790: 61 74 65 35 36 20 63 29 0a 20 20 20 20 28 63 61  ate56 c).    (ca
97a0: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69  se c.      ((#\i
97b0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
97c0: 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
97d0: 29 0a 20 20 20 20 20 20 28 28 23 5c 30 0a 20 20  ).      ((#\0.  
97e0: 20 20 20 20 20 20 23 5c 31 0a 20 20 20 20 20 20        #\1.      
97f0: 20 20 23 5c 32 0a 20 20 20 20 20 20 20 20 23 5c    #\2.        #\
9800: 33 0a 20 20 20 20 20 20 20 20 23 5c 34 0a 20 20  3.        #\4.  
9810: 20 20 20 20 20 20 23 5c 35 0a 20 20 20 20 20 20        #\5.      
9820: 20 20 23 5c 36 0a 20 20 20 20 20 20 20 20 23 5c    #\6.        #\
9830: 37 0a 20 20 20 20 20 20 20 20 23 5c 38 0a 20 20  7.        #\8.  
9840: 20 20 20 20 20 20 23 5c 39 0a 20 20 20 20 20 20        #\9.      
9850: 20 20 23 5c 61 0a 20 20 20 20 20 20 20 20 23 5c    #\a.        #\
9860: 62 0a 20 20 20 20 20 20 20 20 23 5c 63 0a 20 20  b.        #\c.  
9870: 20 20 20 20 20 20 23 5c 64 0a 20 20 20 20 20 20        #\d.      
9880: 20 20 23 5c 65 0a 20 20 20 20 20 20 20 20 23 5c    #\e.        #\
9890: 66 0a 20 20 20 20 20 20 20 20 23 5c 41 0a 20 20  f.        #\A.  
98a0: 20 20 20 20 20 20 23 5c 42 0a 20 20 20 20 20 20        #\B.      
98b0: 20 20 23 5c 43 0a 20 20 20 20 20 20 20 20 23 5c    #\C.        #\
98c0: 44 0a 20 20 20 20 20 20 20 20 23 5c 45 0a 20 20  D.        #\E.  
98d0: 20 20 20 20 20 20 23 5c 46 29 0a 20 20 20 20 20        #\F).     
98e0: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
98f0: 20 20 20 20 20 20 20 28 73 74 61 74 65 35 36 20         (state56 
9900: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
9910: 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75     ((#\#) (consu
9920: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 35 35  meChar) (state55
9930: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
9940: 20 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73      ((#\/) (cons
9950: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 35  umeChar) (state5
9960: 34 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  4 (scanChar))). 
9970: 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e       ((#\@) (con
9980: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
9990: 35 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  51 (scanChar))).
99a0: 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29        ((#\+ #\-)
99b0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
99c0: 73 74 61 74 65 34 35 20 28 73 63 61 6e 43 68 61  state45 (scanCha
99d0: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
99e0: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
99f0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
9a00: 73 74 61 74 65 35 37 20 63 29 0a 20 20 20 20 28  state57 c).    (
9a10: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
9a20: 5c 30 0a 20 20 20 20 20 20 20 20 23 5c 31 0a 20  \0.        #\1. 
9a30: 20 20 20 20 20 20 20 23 5c 32 0a 20 20 20 20 20         #\2.     
9a40: 20 20 20 23 5c 33 0a 20 20 20 20 20 20 20 20 23     #\3.        #
9a50: 5c 34 0a 20 20 20 20 20 20 20 20 23 5c 35 0a 20  \4.        #\5. 
9a60: 20 20 20 20 20 20 20 23 5c 36 0a 20 20 20 20 20         #\6.     
9a70: 20 20 20 23 5c 37 0a 20 20 20 20 20 20 20 20 23     #\7.        #
9a80: 5c 38 0a 20 20 20 20 20 20 20 20 23 5c 39 0a 20  \8.        #\9. 
9a90: 20 20 20 20 20 20 20 23 5c 61 0a 20 20 20 20 20         #\a.     
9aa0: 20 20 20 23 5c 62 0a 20 20 20 20 20 20 20 20 23     #\b.        #
9ab0: 5c 63 0a 20 20 20 20 20 20 20 20 23 5c 64 0a 20  \c.        #\d. 
9ac0: 20 20 20 20 20 20 20 23 5c 65 0a 20 20 20 20 20         #\e.     
9ad0: 20 20 20 23 5c 66 0a 20 20 20 20 20 20 20 20 23     #\f.        #
9ae0: 5c 41 0a 20 20 20 20 20 20 20 20 23 5c 42 0a 20  \A.        #\B. 
9af0: 20 20 20 20 20 20 20 23 5c 43 0a 20 20 20 20 20         #\C.     
9b00: 20 20 20 23 5c 44 0a 20 20 20 20 20 20 20 20 23     #\D.        #
9b10: 5c 45 0a 20 20 20 20 20 20 20 20 23 5c 46 29 0a  \E.        #\F).
9b20: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
9b30: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
9b40: 74 65 35 36 20 28 73 63 61 6e 43 68 61 72 29 29  te56 (scanChar))
9b50: 29 0a 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28  ).      ((#\n) (
9b60: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
9b70: 61 74 65 34 30 20 28 73 63 61 6e 43 68 61 72 29  ate40 (scanChar)
9b80: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20  )).      ((#\i) 
9b90: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
9ba0: 74 61 74 65 33 35 20 28 73 63 61 6e 43 68 61 72  tate35 (scanChar
9bb0: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
9bc0: 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
9bd0: 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
9be0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
9bf0: 73 74 61 74 65 35 38 20 63 29 0a 20 20 20 20 28  state58 c).    (
9c00: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
9c10: 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65  \+ #\-) (consume
9c20: 43 68 61 72 29 20 28 73 74 61 74 65 35 37 20 28  Char) (state57 (
9c30: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
9c40: 20 20 28 28 23 5c 30 0a 20 20 20 20 20 20 20 20    ((#\0.        
9c50: 23 5c 31 0a 20 20 20 20 20 20 20 20 23 5c 32 0a  #\1.        #\2.
9c60: 20 20 20 20 20 20 20 20 23 5c 33 0a 20 20 20 20          #\3.    
9c70: 20 20 20 20 23 5c 34 0a 20 20 20 20 20 20 20 20      #\4.        
9c80: 23 5c 35 0a 20 20 20 20 20 20 20 20 23 5c 36 0a  #\5.        #\6.
9c90: 20 20 20 20 20 20 20 20 23 5c 37 0a 20 20 20 20          #\7.    
9ca0: 20 20 20 20 23 5c 38 0a 20 20 20 20 20 20 20 20      #\8.        
9cb0: 23 5c 39 0a 20 20 20 20 20 20 20 20 23 5c 61 0a  #\9.        #\a.
9cc0: 20 20 20 20 20 20 20 20 23 5c 62 0a 20 20 20 20          #\b.    
9cd0: 20 20 20 20 23 5c 63 0a 20 20 20 20 20 20 20 20      #\c.        
9ce0: 23 5c 64 0a 20 20 20 20 20 20 20 20 23 5c 65 0a  #\d.        #\e.
9cf0: 20 20 20 20 20 20 20 20 23 5c 66 0a 20 20 20 20          #\f.    
9d00: 20 20 20 20 23 5c 41 0a 20 20 20 20 20 20 20 20      #\A.        
9d10: 23 5c 42 0a 20 20 20 20 20 20 20 20 23 5c 43 0a  #\B.        #\C.
9d20: 20 20 20 20 20 20 20 20 23 5c 44 0a 20 20 20 20          #\D.    
9d30: 20 20 20 20 23 5c 45 0a 20 20 20 20 20 20 20 20      #\E.        
9d40: 23 5c 46 29 0a 20 20 20 20 20 20 20 28 63 6f 6e  #\F).       (con
9d50: 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20  sumeChar).      
9d60: 20 28 73 74 61 74 65 33 33 20 28 73 63 61 6e 43   (state33 (scanC
9d70: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
9d80: 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72  se (scannerError
9d90: 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f   errIncompleteTo
9da0: 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ken)))).  (defin
9db0: 65 20 28 73 74 61 74 65 35 39 20 63 29 0a 20 20  e (state59 c).  
9dc0: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
9dd0: 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\@) (consumeC
9de0: 68 61 72 29 20 28 73 74 61 74 65 38 31 20 28 73  har) (state81 (s
9df0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
9e00: 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e   ((#\+ #\-) (con
9e10: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
9e20: 37 35 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  75 (scanChar))).
9e30: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
9e40: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
9e50: 65 35 39 20 28 73 63 61 6e 43 68 61 72 29 29 29  e59 (scanChar)))
9e60: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63  .      (else (ac
9e70: 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29  cept 'number))))
9e80: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
9e90: 65 36 30 20 63 29 0a 20 20 20 20 28 63 61 73 65  e60 c).    (case
9ea0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20   c.      ((#\@) 
9eb0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
9ec0: 74 61 74 65 38 31 20 28 73 63 61 6e 43 68 61 72  tate81 (scanChar
9ed0: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20  ))).      ((#\+ 
9ee0: 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\-) (consumeCha
9ef0: 72 29 20 28 73 74 61 74 65 37 35 20 28 73 63 61  r) (state75 (sca
9f00: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
9f10: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
9f20: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
9f30: 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
9f40: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
9f50: 74 61 74 65 36 30 20 28 73 63 61 6e 43 68 61 72  tate60 (scanChar
9f60: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29  ))).      ((#\#)
9f70: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
9f80: 73 74 61 74 65 35 39 20 28 73 63 61 6e 43 68 61  state59 (scanCha
9f90: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
9fa0: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
9fb0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
9fc0: 73 74 61 74 65 36 31 20 63 29 0a 20 20 20 20 28  state61 c).    (
9fd0: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
9fe0: 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23  \0 #\1 #\2 #\3 #
9ff0: 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 29 0a  \4 #\5 #\6 #\7).
a000: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
a010: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
a020: 74 65 36 30 20 28 73 63 61 6e 43 68 61 72 29 29  te60 (scanChar))
a030: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
a040: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
a050: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
a060: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
a070: 61 74 65 36 32 20 63 29 0a 20 20 20 20 28 63 61  ate62 c).    (ca
a080: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 40  se c.      ((#\@
a090: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
a0a0: 28 73 74 61 74 65 38 31 20 28 73 63 61 6e 43 68  (state81 (scanCh
a0b0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
a0c0: 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43  + #\-) (consumeC
a0d0: 68 61 72 29 20 28 73 74 61 74 65 37 35 20 28 73  har) (state75 (s
a0e0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
a0f0: 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65   ((#\#) (consume
a100: 43 68 61 72 29 20 28 73 74 61 74 65 36 32 20 28  Char) (state62 (
a110: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
a120: 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d    ((#\/) (consum
a130: 65 43 68 61 72 29 20 28 73 74 61 74 65 36 31 20  eChar) (state61 
a140: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
a150: 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74     (else (accept
a160: 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28   'number)))).  (
a170: 64 65 66 69 6e 65 20 28 73 74 61 74 65 36 33 20  define (state63 
a180: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
a190: 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e       ((#\@) (con
a1a0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
a1b0: 38 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  81 (scanChar))).
a1c0: 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29        ((#\+ #\-)
a1d0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
a1e0: 73 74 61 74 65 37 35 20 28 73 63 61 6e 43 68 61  state75 (scanCha
a1f0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  r))).      ((#\0
a200: 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
a210: 20 23 5c 35 20 23 5c 36 20 23 5c 37 29 0a 20 20   #\5 #\6 #\7).  
a220: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
a230: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
a240: 36 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  63 (scanChar))).
a250: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
a260: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
a270: 65 36 32 20 28 73 63 61 6e 43 68 61 72 29 29 29  e62 (scanChar)))
a280: 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63  .      ((#\/) (c
a290: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
a2a0: 74 65 36 31 20 28 73 63 61 6e 43 68 61 72 29 29  te61 (scanChar))
a2b0: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
a2c0: 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29  ccept 'number)))
a2d0: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
a2e0: 74 65 36 34 20 63 29 0a 20 20 20 20 28 63 61 73  te64 c).    (cas
a2f0: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 66 29  e c.      ((#\f)
a300: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
a310: 73 74 61 74 65 36 38 20 28 73 63 61 6e 43 68 61  state68 (scanCha
a320: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
a330: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
a340: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
a350: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
a360: 28 73 74 61 74 65 36 35 20 63 29 0a 20 20 20 20  (state65 c).    
a370: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
a380: 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\n) (consumeCha
a390: 72 29 20 28 73 74 61 74 65 36 34 20 28 73 63 61  r) (state64 (sca
a3a0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
a3b0: 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75  else (accept 'nu
a3c0: 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69  mber)))).  (defi
a3d0: 6e 65 20 28 73 74 61 74 65 36 36 20 63 29 0a 20  ne (state66 c). 
a3e0: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
a3f0: 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
a400: 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e  Char) (accept 'n
a410: 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28  umber)).      ((
a420: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
a430: 72 29 20 28 73 74 61 74 65 38 31 20 28 73 63 61  r) (state81 (sca
a440: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
a450: 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75  (#\+ #\-) (consu
a460: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 37 35  meChar) (state75
a470: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
a480: 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70      (else (accep
a490: 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20  t 'number)))).  
a4a0: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 36 37  (define (state67
a4b0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
a4c0: 20 20 20 20 20 20 28 28 23 5c 30 29 20 28 63 6f        ((#\0) (co
a4d0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
a4e0: 65 36 36 20 28 73 63 61 6e 43 68 61 72 29 29 29  e66 (scanChar)))
a4f0: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
a500: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
a510: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
a520: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
a530: 74 65 36 38 20 63 29 0a 20 20 20 20 28 63 61 73  te68 c).    (cas
a540: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 2e 29  e c.      ((#\.)
a550: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
a560: 73 74 61 74 65 36 37 20 28 73 63 61 6e 43 68 61  state67 (scanCha
a570: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
a580: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
a590: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
a5a0: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
a5b0: 28 73 74 61 74 65 36 39 20 63 29 0a 20 20 20 20  (state69 c).    
a5c0: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
a5d0: 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\n) (consumeCha
a5e0: 72 29 20 28 73 74 61 74 65 36 38 20 28 73 63 61  r) (state68 (sca
a5f0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
a600: 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
a610: 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
a620: 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
a630: 69 6e 65 20 28 73 74 61 74 65 37 30 20 63 29 0a  ine (state70 c).
a640: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
a650: 20 20 28 28 23 5c 61 29 20 28 63 6f 6e 73 75 6d    ((#\a) (consum
a660: 65 43 68 61 72 29 20 28 73 74 61 74 65 36 39 20  eChar) (state69 
a670: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
a680: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
a690: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
a6a0: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
a6b0: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 37 31  (define (state71
a6c0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
a6d0: 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63 6f        ((#\i) (co
a6e0: 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63 65  nsumeChar) (acce
a6f0: 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20 20  pt 'number)).   
a700: 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75     ((#\#) (consu
a710: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 30  meChar) (state10
a720: 38 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  8 (scanChar))). 
a730: 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
a740: 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
a750: 5c 36 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28  \6 #\7).       (
a760: 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
a770: 20 20 20 20 28 73 74 61 74 65 37 31 20 28 73 63      (state71 (sc
a780: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
a790: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
a7a0: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
a7b0: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
a7c0: 66 69 6e 65 20 28 73 74 61 74 65 37 32 20 63 29  fine (state72 c)
a7d0: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
a7e0: 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32     ((#\0 #\1 #\2
a7f0: 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36   #\3 #\4 #\5 #\6
a800: 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28 63 6f   #\7).       (co
a810: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
a820: 20 20 28 73 74 61 74 65 37 31 20 28 73 63 61 6e    (state71 (scan
a830: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
a840: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
a850: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
a860: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
a870: 6e 65 20 28 73 74 61 74 65 37 33 20 63 29 0a 20  ne (state73 c). 
a880: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
a890: 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
a8a0: 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e  Char) (accept 'n
a8b0: 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28  umber)).      ((
a8c0: 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
a8d0: 72 29 20 28 73 74 61 74 65 37 33 20 28 73 63 61  r) (state73 (sca
a8e0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
a8f0: 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\/) (consumeCh
a900: 61 72 29 20 28 73 74 61 74 65 37 32 20 28 73 63  ar) (state72 (sc
a910: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
a920: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
a930: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
a940: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
a950: 66 69 6e 65 20 28 73 74 61 74 65 37 34 20 63 29  fine (state74 c)
a960: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
a970: 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75     ((#\i) (consu
a980: 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
a990: 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20  'number)).      
a9a0: 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c  ((#\0 #\1 #\2 #\
a9b0: 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c  3 #\4 #\5 #\6 #\
a9c0: 37 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  7).       (consu
a9d0: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
a9e0: 73 74 61 74 65 37 34 20 28 73 63 61 6e 43 68 61  state74 (scanCha
a9f0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23  r))).      ((#\#
aa00: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
aa10: 28 73 74 61 74 65 37 33 20 28 73 63 61 6e 43 68  (state73 (scanCh
aa20: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
aa30: 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  /) (consumeChar)
aa40: 20 28 73 74 61 74 65 37 32 20 28 73 63 61 6e 43   (state72 (scanC
aa50: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
aa60: 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72  se (scannerError
aa70: 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f   errIncompleteTo
aa80: 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ken)))).  (defin
aa90: 65 20 28 73 74 61 74 65 37 35 20 63 29 0a 20 20  e (state75 c).  
aaa0: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
aab0: 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\n) (consumeC
aac0: 68 61 72 29 20 28 73 74 61 74 65 31 30 37 20 28  har) (state107 (
aad0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
aae0: 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d    ((#\i) (consum
aaf0: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 30 32  eChar) (state102
ab00: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
ab10: 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
ab20: 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
ab30: 36 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28 63  6 #\7).       (c
ab40: 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
ab50: 20 20 20 28 73 74 61 74 65 37 34 20 28 73 63 61     (state74 (sca
ab60: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
ab70: 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
ab80: 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
ab90: 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
aba0: 69 6e 65 20 28 73 74 61 74 65 37 36 20 63 29 0a  ine (state76 c).
abb0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
abc0: 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d    ((#\#) (consum
abd0: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 39 32  eChar) (state192
abe0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
abf0: 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
ac00: 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
ac10: 36 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28 63  6 #\7).       (c
ac20: 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
ac30: 20 20 20 28 73 74 61 74 65 37 36 20 28 73 63 61     (state76 (sca
ac40: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
ac50: 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75  else (accept 'nu
ac60: 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69  mber)))).  (defi
ac70: 6e 65 20 28 73 74 61 74 65 37 37 20 63 29 0a 20  ne (state77 c). 
ac80: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
ac90: 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23   ((#\0 #\1 #\2 #
aca0: 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23  \3 #\4 #\5 #\6 #
acb0: 5c 37 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \7).       (cons
acc0: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
acd0: 28 73 74 61 74 65 37 36 20 28 73 63 61 6e 43 68  (state76 (scanCh
ace0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
acf0: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
ad00: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
ad10: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
ad20: 20 28 73 74 61 74 65 37 38 20 63 29 0a 20 20 20   (state78 c).   
ad30: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
ad40: 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
ad50: 61 72 29 20 28 73 74 61 74 65 37 38 20 28 73 63  ar) (state78 (sc
ad60: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
ad70: 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\/) (consumeC
ad80: 68 61 72 29 20 28 73 74 61 74 65 37 37 20 28 73  har) (state77 (s
ad90: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
ada0: 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
adb0: 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
adc0: 66 69 6e 65 20 28 73 74 61 74 65 37 39 20 63 29  fine (state79 c)
add0: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
ade0: 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32     ((#\0 #\1 #\2
adf0: 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36   #\3 #\4 #\5 #\6
ae00: 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28 63 6f   #\7).       (co
ae10: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
ae20: 20 20 28 73 74 61 74 65 37 39 20 28 73 63 61 6e    (state79 (scan
ae30: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
ae40: 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
ae50: 72 29 20 28 73 74 61 74 65 37 38 20 28 73 63 61  r) (state78 (sca
ae60: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
ae70: 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\/) (consumeCh
ae80: 61 72 29 20 28 73 74 61 74 65 37 37 20 28 73 63  ar) (state77 (sc
ae90: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
aea0: 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e  (else (accept 'n
aeb0: 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66  umber)))).  (def
aec0: 69 6e 65 20 28 73 74 61 74 65 38 30 20 63 29 0a  ine (state80 c).
aed0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
aee0: 20 20 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d    ((#\n) (consum
aef0: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 38 33  eChar) (state183
af00: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
af10: 20 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73      ((#\i) (cons
af20: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
af30: 37 39 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  79 (scanChar))).
af40: 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
af50: 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
af60: 23 5c 36 20 23 5c 37 29 0a 20 20 20 20 20 20 20  #\6 #\7).       
af70: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
af80: 20 20 20 20 20 28 73 74 61 74 65 37 39 20 28 73       (state79 (s
af90: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
afa0: 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
afb0: 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
afc0: 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
afd0: 65 66 69 6e 65 20 28 73 74 61 74 65 38 31 20 63  efine (state81 c
afe0: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
aff0: 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28      ((#\+ #\-) (
b000: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
b010: 61 74 65 38 30 20 28 73 63 61 6e 43 68 61 72 29  ate80 (scanChar)
b020: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23  )).      ((#\0 #
b030: 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
b040: 5c 35 20 23 5c 36 20 23 5c 37 29 0a 20 20 20 20  \5 #\6 #\7).    
b050: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
b060: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 37 39  .       (state79
b070: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
b080: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
b090: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
b0a0: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
b0b0: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 38   (define (state8
b0c0: 32 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  2 c).    (case c
b0d0: 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63  .      ((#\i) (c
b0e0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63  onsumeChar) (acc
b0f0: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20  ept 'number)).  
b100: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
b110: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 38  umeChar) (state8
b120: 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  2 (scanChar))). 
b130: 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e       ((#\@) (con
b140: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
b150: 38 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  81 (scanChar))).
b160: 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29        ((#\+ #\-)
b170: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
b180: 73 74 61 74 65 37 35 20 28 73 63 61 6e 43 68 61  state75 (scanCha
b190: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
b1a0: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
b1b0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
b1c0: 73 74 61 74 65 38 33 20 63 29 0a 20 20 20 20 28  state83 c).    (
b1d0: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
b1e0: 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \i) (consumeChar
b1f0: 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65  ) (accept 'numbe
b200: 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20  r)).      ((#\0 
b210: 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20  #\1 #\2 #\3 #\4 
b220: 23 5c 35 20 23 5c 36 20 23 5c 37 29 0a 20 20 20  #\5 #\6 #\7).   
b230: 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
b240: 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 38  ).       (state8
b250: 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  3 (scanChar))). 
b260: 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e       ((#\#) (con
b270: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
b280: 38 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  82 (scanChar))).
b290: 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f        ((#\@) (co
b2a0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
b2b0: 65 38 31 20 28 73 63 61 6e 43 68 61 72 29 29 29  e81 (scanChar)))
b2c0: 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d  .      ((#\+ #\-
b2d0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
b2e0: 28 73 74 61 74 65 37 35 20 28 73 63 61 6e 43 68  (state75 (scanCh
b2f0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
b300: 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65  e (accept 'numbe
b310: 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  r)))).  (define 
b320: 28 73 74 61 74 65 38 34 20 63 29 0a 20 20 20 20  (state84 c).    
b330: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
b340: 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20  #\0 #\1 #\2 #\3 
b350: 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 29  #\4 #\5 #\6 #\7)
b360: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
b370: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
b380: 61 74 65 38 33 20 28 73 63 61 6e 43 68 61 72 29  ate83 (scanChar)
b390: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
b3a0: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
b3b0: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
b3c0: 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
b3d0: 74 61 74 65 38 35 20 63 29 0a 20 20 20 20 28 63  tate85 c).    (c
b3e0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
b3f0: 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  i) (consumeChar)
b400: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
b410: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20  )).      ((#\#) 
b420: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
b430: 74 61 74 65 38 35 20 28 73 63 61 6e 43 68 61 72  tate85 (scanChar
b440: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2f 29  ))).      ((#\/)
b450: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
b460: 73 74 61 74 65 38 34 20 28 73 63 61 6e 43 68 61  state84 (scanCha
b470: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 40  r))).      ((#\@
b480: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
b490: 28 73 74 61 74 65 38 31 20 28 73 63 61 6e 43 68  (state81 (scanCh
b4a0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
b4b0: 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43  + #\-) (consumeC
b4c0: 68 61 72 29 20 28 73 74 61 74 65 37 35 20 28 73  har) (state75 (s
b4d0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
b4e0: 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
b4f0: 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
b500: 66 69 6e 65 20 28 73 74 61 74 65 38 36 20 63 29  fine (state86 c)
b510: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
b520: 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75     ((#\i) (consu
b530: 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
b540: 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20  'number)).      
b550: 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c  ((#\0 #\1 #\2 #\
b560: 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c  3 #\4 #\5 #\6 #\
b570: 37 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  7).       (consu
b580: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
b590: 73 74 61 74 65 38 36 20 28 73 63 61 6e 43 68 61  state86 (scanCha
b5a0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23  r))).      ((#\#
b5b0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
b5c0: 28 73 74 61 74 65 38 35 20 28 73 63 61 6e 43 68  (state85 (scanCh
b5d0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
b5e0: 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  /) (consumeChar)
b5f0: 20 28 73 74 61 74 65 38 34 20 28 73 63 61 6e 43   (state84 (scanC
b600: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
b610: 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \@) (consumeChar
b620: 29 20 28 73 74 61 74 65 38 31 20 28 73 63 61 6e  ) (state81 (scan
b630: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
b640: 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d  #\+ #\-) (consum
b650: 65 43 68 61 72 29 20 28 73 74 61 74 65 37 35 20  eChar) (state75 
b660: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
b670: 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74     (else (accept
b680: 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28   'number)))).  (
b690: 64 65 66 69 6e 65 20 28 73 74 61 74 65 38 37 20  define (state87 
b6a0: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
b6b0: 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
b6c0: 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
b6d0: 5c 36 20 23 5c 37 29 0a 20 20 20 20 20 20 20 28  \6 #\7).       (
b6e0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
b6f0: 20 20 20 20 28 73 74 61 74 65 38 36 20 28 73 63      (state86 (sc
b700: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
b710: 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\n) (consumeC
b720: 68 61 72 29 20 28 73 74 61 74 65 37 30 20 28 73  har) (state70 (s
b730: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
b740: 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
b750: 43 68 61 72 29 20 28 73 74 61 74 65 36 35 20 28  Char) (state65 (
b760: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
b770: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
b780: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
b790: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
b7a0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 38 38 20  define (state88 
b7b0: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
b7c0: 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20       ((#\+ #\-) 
b7d0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
b7e0: 74 61 74 65 38 37 20 28 73 63 61 6e 43 68 61 72  tate87 (scanChar
b7f0: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20  ))).      ((#\0 
b800: 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20  #\1 #\2 #\3 #\4 
b810: 23 5c 35 20 23 5c 36 20 23 5c 37 29 0a 20 20 20  #\5 #\6 #\7).   
b820: 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
b830: 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 36  ).       (state6
b840: 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  3 (scanChar))). 
b850: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
b860: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
b870: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
b880: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
b890: 38 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  89 c).    (case 
b8a0: 63 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20 28  c.      ((#\@) (
b8b0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
b8c0: 61 74 65 31 31 39 20 28 73 63 61 6e 43 68 61 72  ate119 (scanChar
b8d0: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20  ))).      ((#\+ 
b8e0: 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\-) (consumeCha
b8f0: 72 29 20 28 73 74 61 74 65 31 31 33 20 28 73 63  r) (state113 (sc
b900: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
b910: 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\#) (consumeC
b920: 68 61 72 29 20 28 73 74 61 74 65 38 39 20 28 73  har) (state89 (s
b930: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
b940: 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
b950: 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
b960: 66 69 6e 65 20 28 73 74 61 74 65 39 30 20 63 29  fine (state90 c)
b970: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
b980: 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75     ((#\@) (consu
b990: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 31  meChar) (state11
b9a0: 39 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  9 (scanChar))). 
b9b0: 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20       ((#\+ #\-) 
b9c0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
b9d0: 74 61 74 65 31 31 33 20 28 73 63 61 6e 43 68 61  tate113 (scanCha
b9e0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  r))).      ((#\0
b9f0: 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\1) (consumeCh
ba00: 61 72 29 20 28 73 74 61 74 65 39 30 20 28 73 63  ar) (state90 (sc
ba10: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
ba20: 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\#) (consumeC
ba30: 68 61 72 29 20 28 73 74 61 74 65 38 39 20 28 73  har) (state89 (s
ba40: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
ba50: 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
ba60: 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
ba70: 66 69 6e 65 20 28 73 74 61 74 65 39 31 20 63 29  fine (state91 c)
ba80: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
ba90: 20 20 20 28 28 23 5c 30 20 23 5c 31 29 20 28 63     ((#\0 #\1) (c
baa0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
bab0: 74 65 39 30 20 28 73 63 61 6e 43 68 61 72 29 29  te90 (scanChar))
bac0: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
bad0: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
bae0: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
baf0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
bb00: 61 74 65 39 32 20 63 29 0a 20 20 20 20 28 63 61  ate92 c).    (ca
bb10: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 40  se c.      ((#\@
bb20: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
bb30: 28 73 74 61 74 65 31 31 39 20 28 73 63 61 6e 43  (state119 (scanC
bb40: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
bb50: 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65  \+ #\-) (consume
bb60: 43 68 61 72 29 20 28 73 74 61 74 65 31 31 33 20  Char) (state113 
bb70: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
bb80: 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75     ((#\#) (consu
bb90: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39 32  meChar) (state92
bba0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
bbb0: 20 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73      ((#\/) (cons
bbc0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39  umeChar) (state9
bbd0: 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  1 (scanChar))). 
bbe0: 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
bbf0: 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20  pt 'number)))). 
bc00: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 39   (define (state9
bc10: 33 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  3 c).    (case c
bc20: 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63  .      ((#\@) (c
bc30: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
bc40: 74 65 31 31 39 20 28 73 63 61 6e 43 68 61 72 29  te119 (scanChar)
bc50: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23  )).      ((#\+ #
bc60: 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \-) (consumeChar
bc70: 29 20 28 73 74 61 74 65 31 31 33 20 28 73 63 61  ) (state113 (sca
bc80: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
bc90: 28 23 5c 30 20 23 5c 31 29 20 28 63 6f 6e 73 75  (#\0 #\1) (consu
bca0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39 33  meChar) (state93
bcb0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
bcc0: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
bcd0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39  umeChar) (state9
bce0: 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  2 (scanChar))). 
bcf0: 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e       ((#\/) (con
bd00: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
bd10: 39 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  91 (scanChar))).
bd20: 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63        (else (acc
bd30: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a  ept 'number)))).
bd40: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
bd50: 39 34 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  94 c).    (case 
bd60: 63 0a 20 20 20 20 20 20 28 28 23 5c 66 29 20 28  c.      ((#\f) (
bd70: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
bd80: 61 74 65 39 38 20 28 73 63 61 6e 43 68 61 72 29  ate98 (scanChar)
bd90: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
bda0: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
bdb0: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
bdc0: 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
bdd0: 74 61 74 65 39 35 20 63 29 0a 20 20 20 20 28 63  tate95 c).    (c
bde0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
bdf0: 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  n) (consumeChar)
be00: 20 28 73 74 61 74 65 39 34 20 28 73 63 61 6e 43   (state94 (scanC
be10: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
be20: 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  se (accept 'numb
be30: 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  er)))).  (define
be40: 20 28 73 74 61 74 65 39 36 20 63 29 0a 20 20 20   (state96 c).   
be50: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
be60: 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\i) (consumeCh
be70: 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d  ar) (accept 'num
be80: 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ber)).      ((#\
be90: 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  @) (consumeChar)
bea0: 20 28 73 74 61 74 65 31 31 39 20 28 73 63 61 6e   (state119 (scan
beb0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
bec0: 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d  #\+ #\-) (consum
bed0: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 31 33  eChar) (state113
bee0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
bef0: 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70      (else (accep
bf00: 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20  t 'number)))).  
bf10: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 39 37  (define (state97
bf20: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
bf30: 20 20 20 20 20 20 28 28 23 5c 30 29 20 28 63 6f        ((#\0) (co
bf40: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
bf50: 65 39 36 20 28 73 63 61 6e 43 68 61 72 29 29 29  e96 (scanChar)))
bf60: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
bf70: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
bf80: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
bf90: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
bfa0: 74 65 39 38 20 63 29 0a 20 20 20 20 28 63 61 73  te98 c).    (cas
bfb0: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 2e 29  e c.      ((#\.)
bfc0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
bfd0: 73 74 61 74 65 39 37 20 28 73 63 61 6e 43 68 61  state97 (scanCha
bfe0: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
bff0: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
c000: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
c010: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
c020: 28 73 74 61 74 65 39 39 20 63 29 0a 20 20 20 20  (state99 c).    
c030: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
c040: 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\n) (consumeCha
c050: 72 29 20 28 73 74 61 74 65 39 38 20 28 73 63 61  r) (state98 (sca
c060: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
c070: 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
c080: 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
c090: 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
c0a0: 69 6e 65 20 28 73 74 61 74 65 31 30 30 20 63 29  ine (state100 c)
c0b0: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
c0c0: 20 20 20 28 28 23 5c 61 29 20 28 63 6f 6e 73 75     ((#\a) (consu
c0d0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 39 39  meChar) (state99
c0e0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
c0f0: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
c100: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
c110: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
c120: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
c130: 30 31 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  01 c).    (case 
c140: 63 0a 20 20 20 20 20 20 28 28 23 5c 66 29 20 28  c.      ((#\f) (
c150: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
c160: 61 74 65 31 30 35 20 28 73 63 61 6e 43 68 61 72  ate105 (scanChar
c170: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
c180: 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
c190: 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
c1a0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
c1b0: 73 74 61 74 65 31 30 32 20 63 29 0a 20 20 20 20  state102 c).    
c1c0: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
c1d0: 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\n) (consumeCha
c1e0: 72 29 20 28 73 74 61 74 65 31 30 31 20 28 73 63  r) (state101 (sc
c1f0: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
c200: 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e  (else (accept 'n
c210: 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66  umber)))).  (def
c220: 69 6e 65 20 28 73 74 61 74 65 31 30 33 20 63 29  ine (state103 c)
c230: 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
c240: 20 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75     ((#\i) (consu
c250: 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
c260: 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20  'number)).      
c270: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
c280: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
c290: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
c2a0: 66 69 6e 65 20 28 73 74 61 74 65 31 30 34 20 63  fine (state104 c
c2b0: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
c2c0: 20 20 20 20 28 28 23 5c 30 29 20 28 63 6f 6e 73      ((#\0) (cons
c2d0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
c2e0: 30 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  03 (scanChar))).
c2f0: 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
c300: 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
c310: 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
c320: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
c330: 65 31 30 35 20 63 29 0a 20 20 20 20 28 63 61 73  e105 c).    (cas
c340: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 2e 29  e c.      ((#\.)
c350: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
c360: 73 74 61 74 65 31 30 34 20 28 73 63 61 6e 43 68  state104 (scanCh
c370: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
c380: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
c390: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
c3a0: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
c3b0: 20 28 73 74 61 74 65 31 30 36 20 63 29 0a 20 20   (state106 c).  
c3c0: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
c3d0: 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\n) (consumeC
c3e0: 68 61 72 29 20 28 73 74 61 74 65 31 30 35 20 28  har) (state105 (
c3f0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
c400: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
c410: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
c420: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
c430: 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 30 37  define (state107
c440: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
c450: 20 20 20 20 20 20 28 28 23 5c 61 29 20 28 63 6f        ((#\a) (co
c460: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
c470: 65 31 30 36 20 28 73 63 61 6e 43 68 61 72 29 29  e106 (scanChar))
c480: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
c490: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
c4a0: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
c4b0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
c4c0: 61 74 65 31 30 38 20 63 29 0a 20 20 20 20 28 63  ate108 c).    (c
c4d0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
c4e0: 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  i) (consumeChar)
c4f0: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
c500: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20  )).      ((#\#) 
c510: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
c520: 74 61 74 65 31 30 38 20 28 73 63 61 6e 43 68 61  tate108 (scanCha
c530: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
c540: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
c550: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
c560: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
c570: 28 73 74 61 74 65 31 30 39 20 63 29 0a 20 20 20  (state109 c).   
c580: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
c590: 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\i) (consumeCh
c5a0: 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d  ar) (accept 'num
c5b0: 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ber)).      ((#\
c5c0: 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43  0 #\1) (consumeC
c5d0: 68 61 72 29 20 28 73 74 61 74 65 31 30 39 20 28  har) (state109 (
c5e0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
c5f0: 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d    ((#\#) (consum
c600: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 30 38  eChar) (state108
c610: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
c620: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
c630: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
c640: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
c650: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
c660: 31 30 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  10 c).    (case 
c670: 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  c.      ((#\0 #\
c680: 31 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  1) (consumeChar)
c690: 20 28 73 74 61 74 65 31 30 39 20 28 73 63 61 6e   (state109 (scan
c6a0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
c6b0: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
c6c0: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
c6d0: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
c6e0: 6e 65 20 28 73 74 61 74 65 31 31 31 20 63 29 0a  ne (state111 c).
c6f0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
c700: 20 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d    ((#\i) (consum
c710: 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27  eChar) (accept '
c720: 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28  number)).      (
c730: 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
c740: 61 72 29 20 28 73 74 61 74 65 31 31 31 20 28 73  ar) (state111 (s
c750: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
c760: 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65   ((#\/) (consume
c770: 43 68 61 72 29 20 28 73 74 61 74 65 31 31 30 20  Char) (state110 
c780: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
c790: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
c7a0: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
c7b0: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
c7c0: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 31  (define (state11
c7d0: 32 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  2 c).    (case c
c7e0: 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63  .      ((#\i) (c
c7f0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63  onsumeChar) (acc
c800: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20  ept 'number)).  
c810: 20 20 20 20 28 28 23 5c 30 20 23 5c 31 29 20 28      ((#\0 #\1) (
c820: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
c830: 61 74 65 31 31 32 20 28 73 63 61 6e 43 68 61 72  ate112 (scanChar
c840: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29  ))).      ((#\#)
c850: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
c860: 73 74 61 74 65 31 31 31 20 28 73 63 61 6e 43 68  state111 (scanCh
c870: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
c880: 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  /) (consumeChar)
c890: 20 28 73 74 61 74 65 31 31 30 20 28 73 63 61 6e   (state110 (scan
c8a0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
c8b0: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
c8c0: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
c8d0: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
c8e0: 6e 65 20 28 73 74 61 74 65 31 31 33 20 63 29 0a  ne (state113 c).
c8f0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
c900: 20 20 28 28 23 5c 30 20 23 5c 31 29 20 28 63 6f    ((#\0 #\1) (co
c910: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
c920: 65 31 31 32 20 28 73 63 61 6e 43 68 61 72 29 29  e112 (scanChar))
c930: 29 0a 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28  ).      ((#\n) (
c940: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
c950: 61 74 65 31 30 37 20 28 73 63 61 6e 43 68 61 72  ate107 (scanChar
c960: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 69 29  ))).      ((#\i)
c970: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
c980: 73 74 61 74 65 31 30 32 20 28 73 63 61 6e 43 68  state102 (scanCh
c990: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
c9a0: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
c9b0: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
c9c0: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
c9d0: 20 28 73 74 61 74 65 31 31 34 20 63 29 0a 20 20   (state114 c).  
c9e0: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
c9f0: 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\#) (consumeC
ca00: 68 61 72 29 20 28 73 74 61 74 65 31 39 32 20 28  har) (state192 (
ca10: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
ca20: 20 20 28 28 23 5c 30 20 23 5c 31 29 20 28 63 6f    ((#\0 #\1) (co
ca30: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
ca40: 65 31 31 34 20 28 73 63 61 6e 43 68 61 72 29 29  e114 (scanChar))
ca50: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
ca60: 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29  ccept 'number)))
ca70: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
ca80: 74 65 31 31 35 20 63 29 0a 20 20 20 20 28 63 61  te115 c).    (ca
ca90: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30  se c.      ((#\0
caa0: 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\1) (consumeCh
cab0: 61 72 29 20 28 73 74 61 74 65 31 31 34 20 28 73  ar) (state114 (s
cac0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
cad0: 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
cae0: 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
caf0: 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
cb00: 65 66 69 6e 65 20 28 73 74 61 74 65 31 31 36 20  efine (state116 
cb10: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
cb20: 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e       ((#\#) (con
cb30: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
cb40: 31 31 36 20 28 73 63 61 6e 43 68 61 72 29 29 29  116 (scanChar)))
cb50: 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63  .      ((#\/) (c
cb60: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
cb70: 74 65 31 31 35 20 28 73 63 61 6e 43 68 61 72 29  te115 (scanChar)
cb80: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
cb90: 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
cba0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
cbb0: 61 74 65 31 31 37 20 63 29 0a 20 20 20 20 28 63  ate117 c).    (c
cbc0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
cbd0: 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43  0 #\1) (consumeC
cbe0: 68 61 72 29 20 28 73 74 61 74 65 31 31 37 20 28  har) (state117 (
cbf0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
cc00: 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d    ((#\#) (consum
cc10: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 31 36  eChar) (state116
cc20: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
cc30: 20 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73      ((#\/) (cons
cc40: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
cc50: 31 35 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  15 (scanChar))).
cc60: 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63        (else (acc
cc70: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a  ept 'number)))).
cc80: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
cc90: 31 31 38 20 63 29 0a 20 20 20 20 28 63 61 73 65  118 c).    (case
cca0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 6e 29 20   c.      ((#\n) 
ccb0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
ccc0: 74 61 74 65 31 38 33 20 28 73 63 61 6e 43 68 61  tate183 (scanCha
ccd0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 69  r))).      ((#\i
cce0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
ccf0: 28 73 74 61 74 65 31 37 39 20 28 73 63 61 6e 43  (state179 (scanC
cd00: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
cd10: 5c 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65  \0 #\1) (consume
cd20: 43 68 61 72 29 20 28 73 74 61 74 65 31 31 37 20  Char) (state117 
cd30: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
cd40: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
cd50: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
cd60: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
cd70: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 31  (define (state11
cd80: 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  9 c).    (case c
cd90: 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d  .      ((#\+ #\-
cda0: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
cdb0: 28 73 74 61 74 65 31 31 38 20 28 73 63 61 6e 43  (state118 (scanC
cdc0: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
cdd0: 5c 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65  \0 #\1) (consume
cde0: 43 68 61 72 29 20 28 73 74 61 74 65 31 31 37 20  Char) (state117 
cdf0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
ce00: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
ce10: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
ce20: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
ce30: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 32  (define (state12
ce40: 30 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  0 c).    (case c
ce50: 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63  .      ((#\i) (c
ce60: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63  onsumeChar) (acc
ce70: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20  ept 'number)).  
ce80: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
ce90: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
cea0: 32 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  20 (scanChar))).
ceb0: 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f        ((#\@) (co
cec0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
ced0: 65 31 31 39 20 28 73 63 61 6e 43 68 61 72 29 29  e119 (scanChar))
cee0: 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c  ).      ((#\+ #\
cef0: 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  -) (consumeChar)
cf00: 20 28 73 74 61 74 65 31 31 33 20 28 73 63 61 6e   (state113 (scan
cf10: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
cf20: 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d  lse (accept 'num
cf30: 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ber)))).  (defin
cf40: 65 20 28 73 74 61 74 65 31 32 31 20 63 29 0a 20  e (state121 c). 
cf50: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
cf60: 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
cf70: 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e  Char) (accept 'n
cf80: 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28  umber)).      ((
cf90: 23 5c 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d  #\0 #\1) (consum
cfa0: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 32 31  eChar) (state121
cfb0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
cfc0: 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73      ((#\#) (cons
cfd0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
cfe0: 32 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  20 (scanChar))).
cff0: 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f        ((#\@) (co
d000: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
d010: 65 31 31 39 20 28 73 63 61 6e 43 68 61 72 29 29  e119 (scanChar))
d020: 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c  ).      ((#\+ #\
d030: 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  -) (consumeChar)
d040: 20 28 73 74 61 74 65 31 31 33 20 28 73 63 61 6e   (state113 (scan
d050: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
d060: 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d  lse (accept 'num
d070: 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ber)))).  (defin
d080: 65 20 28 73 74 61 74 65 31 32 32 20 63 29 0a 20  e (state122 c). 
d090: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
d0a0: 20 28 28 23 5c 30 20 23 5c 31 29 20 28 63 6f 6e   ((#\0 #\1) (con
d0b0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
d0c0: 31 32 31 20 28 73 63 61 6e 43 68 61 72 29 29 29  121 (scanChar)))
d0d0: 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
d0e0: 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
d0f0: 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
d100: 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
d110: 74 65 31 32 33 20 63 29 0a 20 20 20 20 28 63 61  te123 c).    (ca
d120: 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69  se c.      ((#\i
d130: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
d140: 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
d150: 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20 28  ).      ((#\#) (
d160: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
d170: 61 74 65 31 32 33 20 28 73 63 61 6e 43 68 61 72  ate123 (scanChar
d180: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2f 29  ))).      ((#\/)
d190: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
d1a0: 73 74 61 74 65 31 32 32 20 28 73 63 61 6e 43 68  state122 (scanCh
d1b0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
d1c0: 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  @) (consumeChar)
d1d0: 20 28 73 74 61 74 65 31 31 39 20 28 73 63 61 6e   (state119 (scan
d1e0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
d1f0: 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d  #\+ #\-) (consum
d200: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 31 33  eChar) (state113
d210: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
d220: 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70      (else (accep
d230: 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20  t 'number)))).  
d240: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 32  (define (state12
d250: 34 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  4 c).    (case c
d260: 0a 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63  .      ((#\i) (c
d270: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63  onsumeChar) (acc
d280: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20  ept 'number)).  
d290: 20 20 20 20 28 28 23 5c 30 20 23 5c 31 29 20 28      ((#\0 #\1) (
d2a0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
d2b0: 61 74 65 31 32 34 20 28 73 63 61 6e 43 68 61 72  ate124 (scanChar
d2c0: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29  ))).      ((#\#)
d2d0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
d2e0: 73 74 61 74 65 31 32 33 20 28 73 63 61 6e 43 68  state123 (scanCh
d2f0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
d300: 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  /) (consumeChar)
d310: 20 28 73 74 61 74 65 31 32 32 20 28 73 63 61 6e   (state122 (scan
d320: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
d330: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
d340: 72 29 20 28 73 74 61 74 65 31 31 39 20 28 73 63  r) (state119 (sc
d350: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
d360: 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73  ((#\+ #\-) (cons
d370: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
d380: 31 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  13 (scanChar))).
d390: 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63        (else (acc
d3a0: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a  ept 'number)))).
d3b0: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
d3c0: 31 32 35 20 63 29 0a 20 20 20 20 28 63 61 73 65  125 c).    (case
d3d0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23   c.      ((#\0 #
d3e0: 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \1) (consumeChar
d3f0: 29 20 28 73 74 61 74 65 31 32 34 20 28 73 63 61  ) (state124 (sca
d400: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
d410: 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\n) (consumeCh
d420: 61 72 29 20 28 73 74 61 74 65 31 30 30 20 28 73  ar) (state100 (s
d430: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
d440: 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
d450: 43 68 61 72 29 20 28 73 74 61 74 65 39 35 20 28  Char) (state95 (
d460: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
d470: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
d480: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
d490: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
d4a0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 32 36  define (state126
d4b0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
d4c0: 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29        ((#\+ #\-)
d4d0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
d4e0: 73 74 61 74 65 31 32 35 20 28 73 63 61 6e 43 68  state125 (scanCh
d4f0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
d500: 30 20 23 5c 31 29 20 28 63 6f 6e 73 75 6d 65 43  0 #\1) (consumeC
d510: 68 61 72 29 20 28 73 74 61 74 65 39 33 20 28 73  har) (state93 (s
d520: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
d530: 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
d540: 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
d550: 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
d560: 65 66 69 6e 65 20 28 73 74 61 74 65 31 32 37 20  efine (state127 
d570: 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
d580: 20 20 20 20 20 28 28 23 5c 64 20 23 5c 44 29 20       ((#\d #\D) 
d590: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
d5a0: 74 61 74 65 32 30 35 20 28 73 63 61 6e 43 68 61  tate205 (scanCha
d5b0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 62  r))).      ((#\b
d5c0: 20 23 5c 42 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\B) (consumeCh
d5d0: 61 72 29 20 28 73 74 61 74 65 31 32 36 20 28 73  ar) (state126 (s
d5e0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
d5f0: 20 28 28 23 5c 6f 20 23 5c 4f 29 20 28 63 6f 6e   ((#\o #\O) (con
d600: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
d610: 38 38 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  88 (scanChar))).
d620: 20 20 20 20 20 20 28 28 23 5c 78 20 23 5c 58 29        ((#\x #\X)
d630: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
d640: 73 74 61 74 65 35 38 20 28 73 63 61 6e 43 68 61  state58 (scanCha
d650: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
d660: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
d670: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
d680: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
d690: 28 73 74 61 74 65 31 32 38 20 63 29 0a 20 20 20  (state128 c).   
d6a0: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
d6b0: 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75  (#\+ #\-) (consu
d6c0: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32 30  meChar) (state20
d6d0: 34 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  4 (scanChar))). 
d6e0: 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
d6f0: 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
d700: 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a  \6 #\7 #\8 #\9).
d710: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
d720: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
d730: 74 65 31 34 31 20 28 73 63 61 6e 43 68 61 72 29  te141 (scanChar)
d740: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2e 29 20  )).      ((#\.) 
d750: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
d760: 74 61 74 65 31 32 39 20 28 73 63 61 6e 43 68 61  tate129 (scanCha
d770: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23  r))).      ((#\#
d780: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
d790: 28 73 74 61 74 65 31 32 37 20 28 73 63 61 6e 43  (state127 (scanC
d7a0: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
d7b0: 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72  se (scannerError
d7c0: 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f   errIncompleteTo
d7d0: 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ken)))).  (defin
d7e0: 65 20 28 73 74 61 74 65 31 32 39 20 63 29 0a 20  e (state129 c). 
d7f0: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
d800: 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23   ((#\0 #\1 #\2 #
d810: 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23  \3 #\4 #\5 #\6 #
d820: 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20  \7 #\8 #\9).    
d830: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
d840: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31 33  .       (state13
d850: 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  0 (scanChar))). 
d860: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
d870: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
d880: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
d890: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
d8a0: 31 33 30 20 63 29 0a 20 20 20 20 28 63 61 73 65  130 c).    (case
d8b0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20   c.      ((#\@) 
d8c0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
d8d0: 74 61 74 65 31 39 38 20 28 73 63 61 6e 43 68 61  tate198 (scanCha
d8e0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b  r))).      ((#\+
d8f0: 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\-) (consumeCh
d900: 61 72 29 20 28 73 74 61 74 65 31 37 37 20 28 73  ar) (state177 (s
d910: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
d920: 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65   ((#\#) (consume
d930: 43 68 61 72 29 20 28 73 74 61 74 65 31 33 36 20  Char) (state136 
d940: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
d950: 20 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73     ((#\e #\E #\s
d960: 20 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64   #\S #\f #\F #\d
d970: 20 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20   #\D #\l #\L).  
d980: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
d990: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
d9a0: 31 33 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  135 (scanChar)))
d9b0: 0a 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63  .      ((#\|) (c
d9c0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
d9d0: 74 65 31 33 32 20 28 73 63 61 6e 43 68 61 72 29  te132 (scanChar)
d9e0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23  )).      ((#\0 #
d9f0: 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
da00: 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
da10: 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
da20: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
da30: 28 73 74 61 74 65 31 33 30 20 28 73 63 61 6e 43  (state130 (scanC
da40: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
da50: 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  se (accept 'numb
da60: 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  er)))).  (define
da70: 20 28 73 74 61 74 65 31 33 31 20 63 29 0a 20 20   (state131 c).  
da80: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
da90: 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\@) (consumeC
daa0: 68 61 72 29 20 28 73 74 61 74 65 31 39 38 20 28  har) (state198 (
dab0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
dac0: 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f    ((#\+ #\-) (co
dad0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
dae0: 65 31 37 37 20 28 73 63 61 6e 43 68 61 72 29 29  e177 (scanChar))
daf0: 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  ).      ((#\0 #\
db00: 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c  1 #\2 #\3 #\4 #\
db10: 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c  5 #\6 #\7 #\8 #\
db20: 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  9).       (consu
db30: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
db40: 73 74 61 74 65 31 33 31 20 28 73 63 61 6e 43 68  state131 (scanCh
db50: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
db60: 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65  e (accept 'numbe
db70: 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  r)))).  (define 
db80: 28 73 74 61 74 65 31 33 32 20 63 29 0a 20 20 20  (state132 c).   
db90: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
dba0: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
dbb0: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
dbc0: 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20   #\8 #\9).      
dbd0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
dbe0: 20 20 20 20 20 20 28 73 74 61 74 65 31 33 31 20        (state131 
dbf0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
dc00: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
dc10: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
dc20: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
dc30: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 33  (define (state13
dc40: 33 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  3 c).    (case c
dc50: 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63  .      ((#\@) (c
dc60: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
dc70: 74 65 31 39 38 20 28 73 63 61 6e 43 68 61 72 29  te198 (scanChar)
dc80: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23  )).      ((#\+ #
dc90: 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \-) (consumeChar
dca0: 29 20 28 73 74 61 74 65 31 37 37 20 28 73 63 61  ) (state177 (sca
dcb0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
dcc0: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
dcd0: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
dce0: 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20   #\8 #\9).      
dcf0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
dd00: 20 20 20 20 20 20 28 73 74 61 74 65 31 33 33 20        (state133 
dd10: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
dd20: 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75     ((#\|) (consu
dd30: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 33  meChar) (state13
dd40: 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  2 (scanChar))). 
dd50: 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
dd60: 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20  pt 'number)))). 
dd70: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
dd80: 33 34 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  34 c).    (case 
dd90: 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  c.      ((#\0 #\
dda0: 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c  1 #\2 #\3 #\4 #\
ddb0: 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c  5 #\6 #\7 #\8 #\
ddc0: 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  9).       (consu
ddd0: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
dde0: 73 74 61 74 65 31 33 33 20 28 73 63 61 6e 43 68  state133 (scanCh
ddf0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
de00: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
de10: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
de20: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
de30: 20 28 73 74 61 74 65 31 33 35 20 63 29 0a 20 20   (state135 c).  
de40: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
de50: 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73  ((#\+ #\-) (cons
de60: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
de70: 33 34 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  34 (scanChar))).
de80: 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
de90: 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
dea0: 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
deb0: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
dec0: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
ded0: 61 74 65 31 33 33 20 28 73 63 61 6e 43 68 61 72  ate133 (scanChar
dee0: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
def0: 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
df00: 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
df10: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
df20: 73 74 61 74 65 31 33 36 20 63 29 0a 20 20 20 20  state136 c).    
df30: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
df40: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
df50: 72 29 20 28 73 74 61 74 65 31 39 38 20 28 73 63  r) (state198 (sc
df60: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
df70: 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73  ((#\+ #\-) (cons
df80: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
df90: 37 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  77 (scanChar))).
dfa0: 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
dfb0: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
dfc0: 65 31 33 36 20 28 73 63 61 6e 43 68 61 72 29 29  e136 (scanChar))
dfd0: 29 0a 20 20 20 20 20 20 28 28 23 5c 65 20 23 5c  ).      ((#\e #\
dfe0: 45 20 23 5c 73 20 23 5c 53 20 23 5c 66 20 23 5c  E #\s #\S #\f #\
dff0: 46 20 23 5c 64 20 23 5c 44 20 23 5c 6c 20 23 5c  F #\d #\D #\l #\
e000: 4c 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  L).       (consu
e010: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
e020: 73 74 61 74 65 31 33 35 20 28 73 63 61 6e 43 68  state135 (scanCh
e030: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
e040: 7c 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  |) (consumeChar)
e050: 20 28 73 74 61 74 65 31 33 32 20 28 73 63 61 6e   (state132 (scan
e060: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
e070: 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d  lse (accept 'num
e080: 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ber)))).  (defin
e090: 65 20 28 73 74 61 74 65 31 33 37 20 63 29 0a 20  e (state137 c). 
e0a0: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
e0b0: 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
e0c0: 43 68 61 72 29 20 28 73 74 61 74 65 31 39 38 20  Char) (state198 
e0d0: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
e0e0: 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63     ((#\+ #\-) (c
e0f0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
e100: 74 65 31 37 37 20 28 73 63 61 6e 43 68 61 72 29  te177 (scanChar)
e110: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20  )).      ((#\#) 
e120: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
e130: 74 61 74 65 31 33 37 20 28 73 63 61 6e 43 68 61  tate137 (scanCha
e140: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
e150: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
e160: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
e170: 73 74 61 74 65 31 33 38 20 63 29 0a 20 20 20 20  state138 c).    
e180: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
e190: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
e1a0: 72 29 20 28 73 74 61 74 65 31 39 38 20 28 73 63  r) (state198 (sc
e1b0: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
e1c0: 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73  ((#\+ #\-) (cons
e1d0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
e1e0: 37 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  77 (scanChar))).
e1f0: 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
e200: 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
e210: 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
e220: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
e230: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
e240: 61 74 65 31 33 38 20 28 73 63 61 6e 43 68 61 72  ate138 (scanChar
e250: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29  ))).      ((#\#)
e260: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
e270: 73 74 61 74 65 31 33 37 20 28 73 63 61 6e 43 68  state137 (scanCh
e280: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
e290: 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65  e (accept 'numbe
e2a0: 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  r)))).  (define 
e2b0: 28 73 74 61 74 65 31 33 39 20 63 29 0a 20 20 20  (state139 c).   
e2c0: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
e2d0: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
e2e0: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
e2f0: 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20   #\8 #\9).      
e300: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
e310: 20 20 20 20 20 20 28 73 74 61 74 65 31 33 38 20        (state138 
e320: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
e330: 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
e340: 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
e350: 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
e360: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 34  (define (state14
e370: 30 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  0 c).    (case c
e380: 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20 28 63  .      ((#\@) (c
e390: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
e3a0: 74 65 31 39 38 20 28 73 63 61 6e 43 68 61 72 29  te198 (scanChar)
e3b0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23  )).      ((#\+ #
e3c0: 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \-) (consumeChar
e3d0: 29 20 28 73 74 61 74 65 31 37 37 20 28 73 63 61  ) (state177 (sca
e3e0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
e3f0: 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
e400: 61 72 29 20 28 73 74 61 74 65 31 34 30 20 28 73  ar) (state140 (s
e410: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
e420: 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65   ((#\/) (consume
e430: 43 68 61 72 29 20 28 73 74 61 74 65 31 33 39 20  Char) (state139 
e440: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
e450: 20 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75     ((#\.) (consu
e460: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 33  meChar) (state13
e470: 36 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  6 (scanChar))). 
e480: 20 20 20 20 20 28 28 23 5c 65 20 23 5c 45 20 23       ((#\e #\E #
e490: 5c 73 20 23 5c 53 20 23 5c 66 20 23 5c 46 20 23  \s #\S #\f #\F #
e4a0: 5c 64 20 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a  \d #\D #\l #\L).
e4b0: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
e4c0: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
e4d0: 74 65 31 33 35 20 28 73 63 61 6e 43 68 61 72 29  te135 (scanChar)
e4e0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 7c 29 20  )).      ((#\|) 
e4f0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
e500: 74 61 74 65 31 33 32 20 28 73 63 61 6e 43 68 61  tate132 (scanCha
e510: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
e520: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
e530: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
e540: 73 74 61 74 65 31 34 31 20 63 29 0a 20 20 20 20  state141 c).    
e550: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
e560: 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\@) (consumeCha
e570: 72 29 20 28 73 74 61 74 65 31 39 38 20 28 73 63  r) (state198 (sc
e580: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
e590: 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73  ((#\+ #\-) (cons
e5a0: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
e5b0: 37 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  77 (scanChar))).
e5c0: 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
e5d0: 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
e5e0: 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
e5f0: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
e600: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
e610: 61 74 65 31 34 31 20 28 73 63 61 6e 43 68 61 72  ate141 (scanChar
e620: 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29  ))).      ((#\#)
e630: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
e640: 73 74 61 74 65 31 34 30 20 28 73 63 61 6e 43 68  state140 (scanCh
e650: 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
e660: 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  /) (consumeChar)
e670: 20 28 73 74 61 74 65 31 33 39 20 28 73 63 61 6e   (state139 (scan
e680: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
e690: 23 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c 53 20  #\e #\E #\s #\S 
e6a0: 23 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c 44 20  #\f #\F #\d #\D 
e6b0: 23 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20 20 20  #\l #\L).       
e6c0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
e6d0: 20 20 20 20 20 28 73 74 61 74 65 31 33 35 20 28       (state135 (
e6e0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
e6f0: 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d    ((#\|) (consum
e700: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 33 32  eChar) (state132
e710: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
e720: 20 20 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73      ((#\.) (cons
e730: 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
e740: 33 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  30 (scanChar))).
e750: 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63        (else (acc
e760: 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a  ept 'number)))).
e770: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
e780: 31 34 32 20 63 29 0a 20 20 20 20 28 63 61 73 65  142 c).    (case
e790: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 66 29 20   c.      ((#\f) 
e7a0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
e7b0: 74 61 74 65 31 34 36 20 28 73 63 61 6e 43 68 61  tate146 (scanCha
e7c0: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
e7d0: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
e7e0: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
e7f0: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
e800: 28 73 74 61 74 65 31 34 33 20 63 29 0a 20 20 20  (state143 c).   
e810: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
e820: 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\n) (consumeCh
e830: 61 72 29 20 28 73 74 61 74 65 31 34 32 20 28 73  ar) (state142 (s
e840: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
e850: 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
e860: 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
e870: 66 69 6e 65 20 28 73 74 61 74 65 31 34 34 20 63  fine (state144 c
e880: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
e890: 20 20 20 20 28 28 23 5c 69 20 23 5c 49 29 20 28      ((#\i #\I) (
e8a0: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63  consumeChar) (ac
e8b0: 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20  cept 'number)). 
e8c0: 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e       ((#\@) (con
e8d0: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
e8e0: 31 39 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  198 (scanChar)))
e8f0: 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d  .      ((#\+ #\-
e900: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
e910: 28 73 74 61 74 65 31 37 37 20 28 73 63 61 6e 43  (state177 (scanC
e920: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
e930: 73 65 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  se (accept 'numb
e940: 65 72 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  er)))).  (define
e950: 20 28 73 74 61 74 65 31 34 35 20 63 29 0a 20 20   (state145 c).  
e960: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
e970: 28 28 23 5c 30 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\0) (consumeC
e980: 68 61 72 29 20 28 73 74 61 74 65 31 34 34 20 28  har) (state144 (
e990: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
e9a0: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
e9b0: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
e9c0: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
e9d0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 34 36  define (state146
e9e0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
e9f0: 20 20 20 20 20 20 28 28 23 5c 2e 29 20 28 63 6f        ((#\.) (co
ea00: 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
ea10: 65 31 34 35 20 28 73 63 61 6e 43 68 61 72 29 29  e145 (scanChar))
ea20: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
ea30: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
ea40: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
ea50: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
ea60: 61 74 65 31 34 37 20 63 29 0a 20 20 20 20 28 63  ate147 c).    (c
ea70: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
ea80: 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  n) (consumeChar)
ea90: 20 28 73 74 61 74 65 31 34 36 20 28 73 63 61 6e   (state146 (scan
eaa0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
eab0: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
eac0: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
ead0: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
eae0: 6e 65 20 28 73 74 61 74 65 31 34 38 20 63 29 0a  ne (state148 c).
eaf0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
eb00: 20 20 28 28 23 5c 61 29 20 28 63 6f 6e 73 75 6d    ((#\a) (consum
eb10: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 34 37  eChar) (state147
eb20: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
eb30: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
eb40: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
eb50: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
eb60: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
eb70: 34 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  49 c).    (case 
eb80: 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  c.      ((#\0 #\
eb90: 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c  1 #\2 #\3 #\4 #\
eba0: 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c  5 #\6 #\7 #\8 #\
ebb0: 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  9).       (consu
ebc0: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
ebd0: 73 74 61 74 65 31 35 30 20 28 73 63 61 6e 43 68  state150 (scanCh
ebe0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
ebf0: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
ec00: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
ec10: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
ec20: 20 28 73 74 61 74 65 31 35 30 20 63 29 0a 20 20   (state150 c).  
ec30: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
ec40: 28 28 23 5c 69 20 23 5c 49 29 20 28 63 6f 6e 73  ((#\i #\I) (cons
ec50: 75 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74  umeChar) (accept
ec60: 20 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20   'number)).     
ec70: 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
ec80: 43 68 61 72 29 20 28 73 74 61 74 65 31 39 38 20  Char) (state198 
ec90: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
eca0: 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63     ((#\+ #\-) (c
ecb0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
ecc0: 74 65 31 37 37 20 28 73 63 61 6e 43 68 61 72 29  te177 (scanChar)
ecd0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20  )).      ((#\#) 
ece0: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
ecf0: 74 61 74 65 31 35 36 20 28 73 63 61 6e 43 68 61  tate156 (scanCha
ed00: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 65  r))).      ((#\e
ed10: 20 23 5c 45 20 23 5c 73 20 23 5c 53 20 23 5c 66   #\E #\s #\S #\f
ed20: 20 23 5c 46 20 23 5c 64 20 23 5c 44 20 23 5c 6c   #\F #\d #\D #\l
ed30: 20 23 5c 4c 29 0a 20 20 20 20 20 20 20 28 63 6f   #\L).       (co
ed40: 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
ed50: 20 20 28 73 74 61 74 65 31 35 35 20 28 73 63 61    (state155 (sca
ed60: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
ed70: 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\|) (consumeCh
ed80: 61 72 29 20 28 73 74 61 74 65 31 35 32 20 28 73  ar) (state152 (s
ed90: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
eda0: 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23   ((#\0 #\1 #\2 #
edb0: 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23  \3 #\4 #\5 #\6 #
edc0: 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20  \7 #\8 #\9).    
edd0: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
ede0: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31 35  .       (state15
edf0: 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  0 (scanChar))). 
ee00: 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
ee10: 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20  pt 'number)))). 
ee20: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
ee30: 35 31 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  51 c).    (case 
ee40: 63 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c  c.      ((#\i #\
ee50: 49 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  I) (consumeChar)
ee60: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
ee70: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20  )).      ((#\@) 
ee80: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
ee90: 74 61 74 65 31 39 38 20 28 73 63 61 6e 43 68 61  tate198 (scanCha
eea0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b  r))).      ((#\+
eeb0: 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\-) (consumeCh
eec0: 61 72 29 20 28 73 74 61 74 65 31 37 37 20 28 73  ar) (state177 (s
eed0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
eee0: 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23   ((#\0 #\1 #\2 #
eef0: 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23  \3 #\4 #\5 #\6 #
ef00: 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20  \7 #\8 #\9).    
ef10: 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
ef20: 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31 35  .       (state15
ef30: 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  1 (scanChar))). 
ef40: 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
ef50: 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20  pt 'number)))). 
ef60: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
ef70: 35 32 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  52 c).    (case 
ef80: 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  c.      ((#\0 #\
ef90: 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c  1 #\2 #\3 #\4 #\
efa0: 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c  5 #\6 #\7 #\8 #\
efb0: 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  9).       (consu
efc0: 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
efd0: 73 74 61 74 65 31 35 31 20 28 73 63 61 6e 43 68  state151 (scanCh
efe0: 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
eff0: 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
f000: 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
f010: 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
f020: 20 28 73 74 61 74 65 31 35 33 20 63 29 0a 20 20   (state153 c).  
f030: 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
f040: 28 28 23 5c 69 20 23 5c 49 29 20 28 63 6f 6e 73  ((#\i #\I) (cons
f050: 75 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74  umeChar) (accept
f060: 20 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20   'number)).     
f070: 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
f080: 43 68 61 72 29 20 28 73 74 61 74 65 31 39 38 20  Char) (state198 
f090: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
f0a0: 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63     ((#\+ #\-) (c
f0b0: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
f0c0: 74 65 31 37 37 20 28 73 63 61 6e 43 68 61 72 29  te177 (scanChar)
f0d0: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23  )).      ((#\0 #
f0e0: 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
f0f0: 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
f100: 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
f110: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
f120: 28 73 74 61 74 65 31 35 33 20 28 73 63 61 6e 43  (state153 (scanC
f130: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
f140: 5c 7c 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \|) (consumeChar
f150: 29 20 28 73 74 61 74 65 31 35 32 20 28 73 63 61  ) (state152 (sca
f160: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
f170: 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 6e 75  else (accept 'nu
f180: 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65 66 69  mber)))).  (defi
f190: 6e 65 20 28 73 74 61 74 65 31 35 34 20 63 29 0a  ne (state154 c).
f1a0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
f1b0: 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20    ((#\0 #\1 #\2 
f1c0: 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20  #\3 #\4 #\5 #\6 
f1d0: 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20  #\7 #\8 #\9).   
f1e0: 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
f1f0: 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31  ).       (state1
f200: 35 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  53 (scanChar))).
f210: 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
f220: 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
f230: 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
f240: 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
f250: 65 31 35 35 20 63 29 0a 20 20 20 20 28 63 61 73  e155 c).    (cas
f260: 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 2b 20  e c.      ((#\+ 
f270: 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\-) (consumeCha
f280: 72 29 20 28 73 74 61 74 65 31 35 34 20 28 73 63  r) (state154 (sc
f290: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
f2a0: 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c  ((#\0 #\1 #\2 #\
f2b0: 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c  3 #\4 #\5 #\6 #\
f2c0: 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20  7 #\8 #\9).     
f2d0: 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
f2e0: 20 20 20 20 20 20 20 28 73 74 61 74 65 31 35 33         (state153
f2f0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
f300: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
f310: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
f320: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
f330: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
f340: 35 36 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  56 c).    (case 
f350: 63 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c  c.      ((#\i #\
f360: 49 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  I) (consumeChar)
f370: 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
f380: 29 29 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20  )).      ((#\@) 
f390: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
f3a0: 74 61 74 65 31 39 38 20 28 73 63 61 6e 43 68 61  tate198 (scanCha
f3b0: 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b  r))).      ((#\+
f3c0: 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\-) (consumeCh
f3d0: 61 72 29 20 28 73 74 61 74 65 31 37 37 20 28 73  ar) (state177 (s
f3e0: 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
f3f0: 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65   ((#\#) (consume
f400: 43 68 61 72 29 20 28 73 74 61 74 65 31 35 36 20  Char) (state156 
f410: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
f420: 20 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73     ((#\e #\E #\s
f430: 20 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64   #\S #\f #\F #\d
f440: 20 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20   #\D #\l #\L).  
f450: 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
f460: 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
f470: 31 35 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  155 (scanChar)))
f480: 0a 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63  .      ((#\|) (c
f490: 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
f4a0: 74 65 31 35 32 20 28 73 63 61 6e 43 68 61 72 29  te152 (scanChar)
f4b0: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
f4c0: 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
f4d0: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
f4e0: 61 74 65 31 35 37 20 63 29 0a 20 20 20 20 28 63  ate157 c).    (c
f4f0: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
f500: 66 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  f) (consumeChar)
f510: 20 28 73 74 61 74 65 31 36 31 20 28 73 63 61 6e   (state161 (scan
f520: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
f530: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
f540: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
f550: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
f560: 6e 65 20 28 73 74 61 74 65 31 35 38 20 63 29 0a  ne (state158 c).
f570: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
f580: 20 20 28 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d    ((#\n) (consum
f590: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 35 37  eChar) (state157
f5a0: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
f5b0: 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70      (else (accep
f5c0: 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20  t 'number)))).  
f5d0: 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 35  (define (state15
f5e0: 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  9 c).    (case c
f5f0: 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c 49  .      ((#\i #\I
f600: 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
f610: 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
f620: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
f630: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
f640: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
f650: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
f660: 61 74 65 31 36 30 20 63 29 0a 20 20 20 20 28 63  ate160 c).    (c
f670: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
f680: 30 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  0) (consumeChar)
f690: 20 28 73 74 61 74 65 31 35 39 20 28 73 63 61 6e   (state159 (scan
f6a0: 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65  Char))).      (e
f6b0: 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f  lse (scannerErro
f6c0: 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54  r errIncompleteT
f6d0: 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  oken)))).  (defi
f6e0: 6e 65 20 28 73 74 61 74 65 31 36 31 20 63 29 0a  ne (state161 c).
f6f0: 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20      (case c.    
f700: 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d    ((#\.) (consum
f710: 65 43 68 61 72 29 20 28 73 74 61 74 65 31 36 30  eChar) (state160
f720: 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
f730: 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
f740: 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
f750: 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
f760: 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31   (define (state1
f770: 36 32 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  62 c).    (case 
f780: 63 0a 20 20 20 20 20 20 28 28 23 5c 6e 29 20 28  c.      ((#\n) (
f790: 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
f7a0: 61 74 65 31 36 31 20 28 73 63 61 6e 43 68 61 72  ate161 (scanChar
f7b0: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
f7c0: 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
f7d0: 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
f7e0: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
f7f0: 73 74 61 74 65 31 36 33 20 63 29 0a 20 20 20 20  state163 c).    
f800: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
f810: 23 5c 61 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\a) (consumeCha
f820: 72 29 20 28 73 74 61 74 65 31 36 32 20 28 73 63  r) (state162 (sc
f830: 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
f840: 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
f850: 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
f860: 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
f870: 66 69 6e 65 20 28 73 74 61 74 65 31 36 34 20 63  fine (state164 c
f880: 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
f890: 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
f8a0: 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
f8b0: 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20  6 #\7 #\8 #\9). 
f8c0: 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
f8d0: 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
f8e0: 65 31 36 35 20 28 73 63 61 6e 43 68 61 72 29 29  e165 (scanChar))
f8f0: 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
f900: 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
f910: 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
f920: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
f930: 61 74 65 31 36 35 20 63 29 0a 20 20 20 20 28 63  ate165 c).    (c
f940: 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
f950: 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43  i #\I) (consumeC
f960: 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75  har) (accept 'nu
f970: 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23  mber)).      ((#
f980: 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \#) (consumeChar
f990: 29 20 28 73 74 61 74 65 31 37 31 20 28 73 63 61  ) (state171 (sca
f9a0: 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
f9b0: 28 23 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c 53  (#\e #\E #\s #\S
f9c0: 20 23 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c 44   #\f #\F #\d #\D
f9d0: 20 23 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20 20   #\l #\L).      
f9e0: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
f9f0: 20 20 20 20 20 20 28 73 74 61 74 65 31 37 30 20        (state170 
fa00: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
fa10: 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75     ((#\|) (consu
fa20: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 36  meChar) (state16
fa30: 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  7 (scanChar))). 
fa40: 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
fa50: 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
fa60: 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a  \6 #\7 #\8 #\9).
fa70: 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
fa80: 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
fa90: 74 65 31 36 35 20 28 73 63 61 6e 43 68 61 72 29  te165 (scanChar)
faa0: 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
fab0: 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
fac0: 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
fad0: 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
fae0: 74 61 74 65 31 36 36 20 63 29 0a 20 20 20 20 28  tate166 c).    (
faf0: 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
fb00: 5c 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65  \i #\I) (consume
fb10: 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e  Char) (accept 'n
fb20: 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28  umber)).      ((
fb30: 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20  #\0 #\1 #\2 #\3 
fb40: 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20  #\4 #\5 #\6 #\7 
fb50: 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20  #\8 #\9).       
fb60: 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
fb70: 20 20 20 20 20 28 73 74 61 74 65 31 36 36 20 28       (state166 (
fb80: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
fb90: 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
fba0: 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
fbb0: 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
fbc0: 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 36 37  define (state167
fbd0: 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
fbe0: 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
fbf0: 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
fc00: 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
fc10: 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
fc20: 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
fc30: 61 74 65 31 36 36 20 28 73 63 61 6e 43 68 61 72  ate166 (scanChar
fc40: 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
fc50: 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
fc60: 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
fc70: 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
fc80: 73 74 61 74 65 31 36 38 20 63 29 0a 20 20 20 20  state168 c).    
fc90: 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
fca0: 23 5c 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d  #\i #\I) (consum
fcb0: 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20 27  eChar) (accept '
fcc0: 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28  number)).      (
fcd0: 28 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33  (#\0 #\1 #\2 #\3
fce0: 20 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37   #\4 #\5 #\6 #\7
fcf0: 20 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20   #\8 #\9).      
fd00: 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20   (consumeChar). 
fd10: 20 20 20 20 20 20 28 73 74 61 74 65 31 36 38 20        (state168 
fd20: 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
fd30: 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75     ((#\|) (consu
fd40: 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 36  meChar) (state16
fd50: 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  7 (scanChar))). 
fd60: 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e       (else (scan
fd70: 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f  nerError errInco
fd80: 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a  mpleteToken)))).
fd90: 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
fda0: 31 36 39 20 63 29 0a 20 20 20 20 28 63 61 73 65  169 c).    (case
fdb0: 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23   c.      ((#\0 #
fdc0: 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
fdd0: 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
fde0: 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
fdf0: 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
fe00: 28 73 74 61 74 65 31 36 38 20 28 73 63 61 6e 43  (state168 (scanC
fe10: 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c  har))).      (el
fe20: 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72  se (scannerError
fe30: 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f   errIncompleteTo
fe40: 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ken)))).  (defin
fe50: 65 20 28 73 74 61 74 65 31 37 30 20 63 29 0a 20  e (state170 c). 
fe60: 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
fe70: 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e   ((#\+ #\-) (con
fe80: 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
fe90: 31 36 39 20 28 73 63 61 6e 43 68 61 72 29 29 29  169 (scanChar)))
fea0: 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31  .      ((#\0 #\1
feb0: 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35   #\2 #\3 #\4 #\5
fec0: 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39   #\6 #\7 #\8 #\9
fed0: 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
fee0: 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
fef0: 74 61 74 65 31 36 38 20 28 73 63 61 6e 43 68 61  tate168 (scanCha
ff00: 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
ff10: 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
ff20: 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65  rrIncompleteToke
ff30: 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20  n)))).  (define 
ff40: 28 73 74 61 74 65 31 37 31 20 63 29 0a 20 20 20  (state171 c).   
ff50: 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28   (case c.      (
ff60: 28 23 5c 69 20 23 5c 49 29 20 28 63 6f 6e 73 75  (#\i #\I) (consu
ff70: 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
ff80: 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20  'number)).      
ff90: 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\#) (consumeC
ffa0: 68 61 72 29 20 28 73 74 61 74 65 31 37 31 20 28  har) (state171 (
ffb0: 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
ffc0: 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73 20    ((#\e #\E #\s 
ffd0: 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64 20  #\S #\f #\F #\d 
ffe0: 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20 20  #\D #\l #\L).   
fff0: 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
10000 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31  ).       (state1
10010 37 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  70 (scanChar))).
10020 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63 6f        ((#\|) (co
10030 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
10040 65 31 36 37 20 28 73 63 61 6e 43 68 61 72 29 29  e167 (scanChar))
10050 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
10060 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
10070 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
10080 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
10090 61 74 65 31 37 32 20 63 29 0a 20 20 20 20 28 63  ate172 c).    (c
100a0 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
100b0 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43  i #\I) (consumeC
100c0 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75  har) (accept 'nu
100d0 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23  mber)).      ((#
100e0 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \#) (consumeChar
100f0 29 20 28 73 74 61 74 65 31 37 32 20 28 73 63 61  ) (state172 (sca
10100 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
10110 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
10120 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
10130 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
10140 69 6e 65 20 28 73 74 61 74 65 31 37 33 20 63 29  ine (state173 c)
10150 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
10160 20 20 20 28 28 23 5c 69 20 23 5c 49 29 20 28 63     ((#\i #\I) (c
10170 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63 63  onsumeChar) (acc
10180 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20 20  ept 'number)).  
10190 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
101a0 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
101b0 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20  6 #\7 #\8 #\9). 
101c0 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
101d0 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
101e0 65 31 37 33 20 28 73 63 61 6e 43 68 61 72 29 29  e173 (scanChar))
101f0 29 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20 28  ).      ((#\#) (
10200 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
10210 61 74 65 31 37 32 20 28 73 63 61 6e 43 68 61 72  ate172 (scanChar
10220 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
10230 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
10240 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
10250 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
10260 73 74 61 74 65 31 37 34 20 63 29 0a 20 20 20 20  state174 c).    
10270 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
10280 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20  #\0 #\1 #\2 #\3 
10290 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20  #\4 #\5 #\6 #\7 
102a0 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20  #\8 #\9).       
102b0 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
102c0 20 20 20 20 20 28 73 74 61 74 65 31 37 33 20 28       (state173 (
102d0 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
102e0 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
102f0 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
10300 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
10310 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 37 35  define (state175
10320 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
10330 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c 49 29        ((#\i #\I)
10340 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
10350 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
10360 0a 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63  .      ((#\#) (c
10370 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
10380 74 65 31 37 35 20 28 73 63 61 6e 43 68 61 72 29  te175 (scanChar)
10390 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20  )).      ((#\/) 
103a0 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
103b0 74 61 74 65 31 37 34 20 28 73 63 61 6e 43 68 61  tate174 (scanCha
103c0 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2e  r))).      ((#\.
103d0 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
103e0 28 73 74 61 74 65 31 37 31 20 28 73 63 61 6e 43  (state171 (scanC
103f0 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
10400 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c 53 20 23  \e #\E #\s #\S #
10410 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c 44 20 23  \f #\F #\d #\D #
10420 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20 20 20 28  \l #\L).       (
10430 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
10440 20 20 20 20 28 73 74 61 74 65 31 37 30 20 28 73      (state170 (s
10450 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
10460 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d 65   ((#\|) (consume
10470 43 68 61 72 29 20 28 73 74 61 74 65 31 36 37 20  Char) (state167 
10480 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
10490 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
104a0 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
104b0 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
104c0 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 37  (define (state17
104d0 36 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  6 c).    (case c
104e0 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23 5c 49  .      ((#\i #\I
104f0 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
10500 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
10510 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c  ).      ((#\0 #\
10520 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c  1 #\2 #\3 #\4 #\
10530 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c  5 #\6 #\7 #\8 #\
10540 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  9).       (consu
10550 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28  meChar).       (
10560 73 74 61 74 65 31 37 36 20 28 73 63 61 6e 43 68  state176 (scanCh
10570 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c  ar))).      ((#\
10580 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  #) (consumeChar)
10590 20 28 73 74 61 74 65 31 37 35 20 28 73 63 61 6e   (state175 (scan
105a0 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
105b0 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\/) (consumeCha
105c0 72 29 20 28 73 74 61 74 65 31 37 34 20 28 73 63  r) (state174 (sc
105d0 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
105e0 28 28 23 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c  ((#\e #\E #\s #\
105f0 53 20 23 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c  S #\f #\F #\d #\
10600 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20  D #\l #\L).     
10610 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
10620 20 20 20 20 20 20 20 28 73 74 61 74 65 31 37 30         (state170
10630 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
10640 20 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73      ((#\|) (cons
10650 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
10660 36 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  67 (scanChar))).
10670 20 20 20 20 20 20 28 28 23 5c 2e 29 20 28 63 6f        ((#\.) (co
10680 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
10690 65 31 36 35 20 28 73 63 61 6e 43 68 61 72 29 29  e165 (scanChar))
106a0 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
106b0 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
106c0 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
106d0 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
106e0 61 74 65 31 37 37 20 63 29 0a 20 20 20 20 28 63  ate177 c).    (c
106f0 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
10700 49 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  I) (consumeChar)
10710 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
10720 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23  )).      ((#\0 #
10730 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
10740 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
10750 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
10760 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
10770 28 73 74 61 74 65 31 37 36 20 28 73 63 61 6e 43  (state176 (scanC
10780 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
10790 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \.) (consumeChar
107a0 29 20 28 73 74 61 74 65 31 36 34 20 28 73 63 61  ) (state164 (sca
107b0 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
107c0 28 23 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\n) (consumeCh
107d0 61 72 29 20 28 73 74 61 74 65 31 36 33 20 28 73  ar) (state163 (s
107e0 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
107f0 20 28 28 23 5c 69 29 20 28 63 6f 6e 73 75 6d 65   ((#\i) (consume
10800 43 68 61 72 29 20 28 73 74 61 74 65 31 35 38 20  Char) (state158 
10810 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
10820 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65     (else (scanne
10830 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70  rError errIncomp
10840 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20  leteToken)))).  
10850 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 37  (define (state17
10860 38 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63  8 c).    (case c
10870 0a 20 20 20 20 20 20 28 28 23 5c 66 29 20 28 63  .      ((#\f) (c
10880 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
10890 74 65 31 38 31 20 28 73 63 61 6e 43 68 61 72 29  te181 (scanChar)
108a0 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
108b0 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
108c0 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
108d0 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
108e0 74 61 74 65 31 37 39 20 63 29 0a 20 20 20 20 28  tate179 c).    (
108f0 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
10900 5c 6e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \n) (consumeChar
10910 29 20 28 73 74 61 74 65 31 37 38 20 28 73 63 61  ) (state178 (sca
10920 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
10930 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
10940 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
10950 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
10960 69 6e 65 20 28 73 74 61 74 65 31 38 30 20 63 29  ine (state180 c)
10970 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
10980 20 20 20 28 28 23 5c 30 29 20 28 63 6f 6e 73 75     ((#\0) (consu
10990 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
109a0 27 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20  'number)).      
109b0 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
109c0 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
109d0 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
109e0 66 69 6e 65 20 28 73 74 61 74 65 31 38 31 20 63  fine (state181 c
109f0 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
10a00 20 20 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73      ((#\.) (cons
10a10 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
10a20 38 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  80 (scanChar))).
10a30 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
10a40 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
10a50 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
10a60 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
10a70 65 31 38 32 20 63 29 0a 20 20 20 20 28 63 61 73  e182 c).    (cas
10a80 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 6e 29  e c.      ((#\n)
10a90 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
10aa0 73 74 61 74 65 31 38 31 20 28 73 63 61 6e 43 68  state181 (scanCh
10ab0 61 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73  ar))).      (els
10ac0 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20  e (scannerError 
10ad0 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b  errIncompleteTok
10ae0 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  en)))).  (define
10af0 20 28 73 74 61 74 65 31 38 33 20 63 29 0a 20 20   (state183 c).  
10b00 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20 20    (case c.      
10b10 28 28 23 5c 61 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\a) (consumeC
10b20 68 61 72 29 20 28 73 74 61 74 65 31 38 32 20 28  har) (state182 (
10b30 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
10b40 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72    (else (scanner
10b50 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c  Error errIncompl
10b60 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28  eteToken)))).  (
10b70 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 38 34  define (state184
10b80 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
10b90 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
10ba0 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
10bb0 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
10bc0 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
10bd0 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
10be0 61 74 65 31 38 35 20 28 73 63 61 6e 43 68 61 72  ate185 (scanChar
10bf0 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
10c00 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
10c10 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
10c20 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
10c30 73 74 61 74 65 31 38 35 20 63 29 0a 20 20 20 20  state185 c).    
10c40 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
10c50 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\#) (consumeCha
10c60 72 29 20 28 73 74 61 74 65 31 39 31 20 28 73 63  r) (state191 (sc
10c70 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
10c80 28 28 23 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c  ((#\e #\E #\s #\
10c90 53 20 23 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c  S #\f #\F #\d #\
10ca0 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20  D #\l #\L).     
10cb0 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
10cc0 20 20 20 20 20 20 20 28 73 74 61 74 65 31 39 30         (state190
10cd0 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
10ce0 20 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73      ((#\|) (cons
10cf0 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
10d00 38 37 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  87 (scanChar))).
10d10 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20        ((#\0 #\1 
10d20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20  #\2 #\3 #\4 #\5 
10d30 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29  #\6 #\7 #\8 #\9)
10d40 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
10d50 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74  Char).       (st
10d60 61 74 65 31 38 35 20 28 73 63 61 6e 43 68 61 72  ate185 (scanChar
10d70 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
10d80 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29  (accept 'number)
10d90 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
10da0 74 61 74 65 31 38 36 20 63 29 0a 20 20 20 20 28  tate186 c).    (
10db0 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
10dc0 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23  \0 #\1 #\2 #\3 #
10dd0 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23  \4 #\5 #\6 #\7 #
10de0 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28  \8 #\9).       (
10df0 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
10e00 20 20 20 20 28 73 74 61 74 65 31 38 36 20 28 73      (state186 (s
10e10 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
10e20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
10e30 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
10e40 66 69 6e 65 20 28 73 74 61 74 65 31 38 37 20 63  fine (state187 c
10e50 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
10e60 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
10e70 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
10e80 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20  6 #\7 #\8 #\9). 
10e90 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
10ea0 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
10eb0 65 31 38 36 20 28 73 63 61 6e 43 68 61 72 29 29  e186 (scanChar))
10ec0 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
10ed0 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
10ee0 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
10ef0 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
10f00 61 74 65 31 38 38 20 63 29 0a 20 20 20 20 28 63  ate188 c).    (c
10f10 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
10f20 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c  0 #\1 #\2 #\3 #\
10f30 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c  4 #\5 #\6 #\7 #\
10f40 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63  8 #\9).       (c
10f50 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
10f60 20 20 20 28 73 74 61 74 65 31 38 38 20 28 73 63     (state188 (sc
10f70 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
10f80 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\|) (consumeC
10f90 68 61 72 29 20 28 73 74 61 74 65 31 38 37 20 28  har) (state187 (
10fa0 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
10fb0 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20    (else (accept 
10fc0 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64  'number)))).  (d
10fd0 65 66 69 6e 65 20 28 73 74 61 74 65 31 38 39 20  efine (state189 
10fe0 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
10ff0 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
11000 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
11010 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a  \6 #\7 #\8 #\9).
11020 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
11030 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
11040 74 65 31 38 38 20 28 73 63 61 6e 43 68 61 72 29  te188 (scanChar)
11050 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
11060 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72  scannerError err
11070 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29  IncompleteToken)
11080 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
11090 74 61 74 65 31 39 30 20 63 29 0a 20 20 20 20 28  tate190 c).    (
110a0 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23  case c.      ((#
110b0 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65  \+ #\-) (consume
110c0 43 68 61 72 29 20 28 73 74 61 74 65 31 38 39 20  Char) (state189 
110d0 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
110e0 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32     ((#\0 #\1 #\2
110f0 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36   #\3 #\4 #\5 #\6
11100 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20   #\7 #\8 #\9).  
11110 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
11120 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
11130 31 38 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  188 (scanChar)))
11140 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63  .      (else (sc
11150 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e  annerError errIn
11160 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29  completeToken)))
11170 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
11180 74 65 31 39 31 20 63 29 0a 20 20 20 20 28 63 61  te191 c).    (ca
11190 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 23  se c.      ((#\#
111a0 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
111b0 28 73 74 61 74 65 31 39 31 20 28 73 63 61 6e 43  (state191 (scanC
111c0 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
111d0 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c 53 20 23  \e #\E #\s #\S #
111e0 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c 44 20 23  \f #\F #\d #\D #
111f0 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20 20 20 28  \l #\L).       (
11200 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
11210 20 20 20 20 28 73 74 61 74 65 31 39 30 20 28 73      (state190 (s
11220 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
11230 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d 65   ((#\|) (consume
11240 43 68 61 72 29 20 28 73 74 61 74 65 31 38 37 20  Char) (state187 
11250 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
11260 20 20 20 28 65 6c 73 65 20 28 61 63 63 65 70 74     (else (accept
11270 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28   'number)))).  (
11280 64 65 66 69 6e 65 20 28 73 74 61 74 65 31 39 32  define (state192
11290 20 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a   c).    (case c.
112a0 20 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f        ((#\#) (co
112b0 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
112c0 65 31 39 32 20 28 73 63 61 6e 43 68 61 72 29 29  e192 (scanChar))
112d0 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
112e0 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29  ccept 'number)))
112f0 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
11300 74 65 31 39 33 20 63 29 0a 20 20 20 20 28 63 61  te193 c).    (ca
11310 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30  se c.      ((#\0
11320 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
11330 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
11340 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
11350 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
11360 20 20 28 73 74 61 74 65 31 39 33 20 28 73 63 61    (state193 (sca
11370 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
11380 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
11390 61 72 29 20 28 73 74 61 74 65 31 39 32 20 28 73  ar) (state192 (s
113a0 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
113b0 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20 27   (else (accept '
113c0 6e 75 6d 62 65 72 29 29 29 29 0a 20 20 28 64 65  number)))).  (de
113d0 66 69 6e 65 20 28 73 74 61 74 65 31 39 34 20 63  fine (state194 c
113e0 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
113f0 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c      ((#\0 #\1 #\
11400 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c  2 #\3 #\4 #\5 #\
11410 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20  6 #\7 #\8 #\9). 
11420 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68        (consumeCh
11430 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74  ar).       (stat
11440 65 31 39 33 20 28 73 63 61 6e 43 68 61 72 29 29  e193 (scanChar))
11450 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
11460 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
11470 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
11480 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
11490 61 74 65 31 39 35 20 63 29 0a 20 20 20 20 28 63  ate195 c).    (c
114a0 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
114b0 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  #) (consumeChar)
114c0 20 28 73 74 61 74 65 31 39 35 20 28 73 63 61 6e   (state195 (scan
114d0 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28  Char))).      ((
114e0 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\/) (consumeCha
114f0 72 29 20 28 73 74 61 74 65 31 39 34 20 28 73 63  r) (state194 (sc
11500 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
11510 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\.) (consumeC
11520 68 61 72 29 20 28 73 74 61 74 65 31 39 31 20 28  har) (state191 (
11530 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
11540 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73 20    ((#\e #\E #\s 
11550 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64 20  #\S #\f #\F #\d 
11560 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20 20  #\D #\l #\L).   
11570 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
11580 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31  ).       (state1
11590 39 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  90 (scanChar))).
115a0 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63 6f        ((#\|) (co
115b0 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
115c0 65 31 38 37 20 28 73 63 61 6e 43 68 61 72 29 29  e187 (scanChar))
115d0 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61  ).      (else (a
115e0 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29  ccept 'number)))
115f0 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
11600 74 65 31 39 36 20 63 29 0a 20 20 20 20 28 63 61  te196 c).    (ca
11610 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 30  se c.      ((#\0
11620 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
11630 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
11640 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
11650 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
11660 20 20 28 73 74 61 74 65 31 39 36 20 28 73 63 61    (state196 (sca
11670 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
11680 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
11690 61 72 29 20 28 73 74 61 74 65 31 39 35 20 28 73  ar) (state195 (s
116a0 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
116b0 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75 6d 65   ((#\/) (consume
116c0 43 68 61 72 29 20 28 73 74 61 74 65 31 39 34 20  Char) (state194 
116d0 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
116e0 20 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73     ((#\e #\E #\s
116f0 20 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64   #\S #\f #\F #\d
11700 20 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20   #\D #\l #\L).  
11710 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
11720 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
11730 31 39 30 20 28 73 63 61 6e 43 68 61 72 29 29 29  190 (scanChar)))
11740 0a 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63  .      ((#\|) (c
11750 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
11760 74 65 31 38 37 20 28 73 63 61 6e 43 68 61 72 29  te187 (scanChar)
11770 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2e 29 20  )).      ((#\.) 
11780 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
11790 74 61 74 65 31 38 35 20 28 73 63 61 6e 43 68 61  tate185 (scanCha
117a0 72 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65  r))).      (else
117b0 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
117c0 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
117d0 73 74 61 74 65 31 39 37 20 63 29 0a 20 20 20 20  state197 c).    
117e0 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
117f0 23 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20  #\0 #\1 #\2 #\3 
11800 23 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20  #\4 #\5 #\6 #\7 
11810 23 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20  #\8 #\9).       
11820 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
11830 20 20 20 20 20 28 73 74 61 74 65 31 39 36 20 28       (state196 (
11840 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
11850 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d    ((#\.) (consum
11860 65 43 68 61 72 29 20 28 73 74 61 74 65 31 38 34  eChar) (state184
11870 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
11880 20 20 20 20 28 28 23 5c 6e 29 20 28 63 6f 6e 73      ((#\n) (cons
11890 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31  umeChar) (state1
118a0 38 33 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  83 (scanChar))).
118b0 20 20 20 20 20 20 28 28 23 5c 69 29 20 28 63 6f        ((#\i) (co
118c0 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
118d0 65 31 37 39 20 28 73 63 61 6e 43 68 61 72 29 29  e179 (scanChar))
118e0 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
118f0 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
11900 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
11910 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
11920 61 74 65 31 39 38 20 63 29 0a 20 20 20 20 28 63  ate198 c).    (c
11930 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
11940 2b 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43  + #\-) (consumeC
11950 68 61 72 29 20 28 73 74 61 74 65 31 39 37 20 28  har) (state197 (
11960 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20  scanChar))).    
11970 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32 20    ((#\0 #\1 #\2 
11980 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36 20  #\3 #\4 #\5 #\6 
11990 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20 20  #\7 #\8 #\9).   
119a0 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72      (consumeChar
119b0 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31  ).       (state1
119c0 39 36 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  96 (scanChar))).
119d0 20 20 20 20 20 20 28 28 23 5c 2e 29 20 28 63 6f        ((#\.) (co
119e0 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
119f0 65 31 38 34 20 28 73 63 61 6e 43 68 61 72 29 29  e184 (scanChar))
11a00 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 73  ).      (else (s
11a10 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49  cannerError errI
11a20 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29  ncompleteToken))
11a30 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
11a40 61 74 65 31 39 39 20 63 29 0a 20 20 20 20 28 63  ate199 c).    (c
11a50 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
11a60 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43  i #\I) (consumeC
11a70 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75  har) (accept 'nu
11a80 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23  mber)).      ((#
11a90 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \#) (consumeChar
11aa0 29 20 28 73 74 61 74 65 31 39 39 20 28 73 63 61  ) (state199 (sca
11ab0 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
11ac0 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\@) (consumeCh
11ad0 61 72 29 20 28 73 74 61 74 65 31 39 38 20 28 73  ar) (state198 (s
11ae0 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
11af0 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63 6f 6e   ((#\+ #\-) (con
11b00 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
11b10 31 37 37 20 28 73 63 61 6e 43 68 61 72 29 29 29  177 (scanChar)))
11b20 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28 61 63  .      (else (ac
11b30 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29  cept 'number))))
11b40 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
11b50 65 32 30 30 20 63 29 0a 20 20 20 20 28 63 61 73  e200 c).    (cas
11b60 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 69 20  e c.      ((#\i 
11b70 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\I) (consumeCha
11b80 72 29 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62  r) (accept 'numb
11b90 65 72 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  er)).      ((#\0
11ba0 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
11bb0 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
11bc0 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
11bd0 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
11be0 20 20 28 73 74 61 74 65 32 30 30 20 28 73 63 61    (state200 (sca
11bf0 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
11c00 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\#) (consumeCh
11c10 61 72 29 20 28 73 74 61 74 65 31 39 39 20 28 73  ar) (state199 (s
11c20 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
11c30 20 28 28 23 5c 40 29 20 28 63 6f 6e 73 75 6d 65   ((#\@) (consume
11c40 43 68 61 72 29 20 28 73 74 61 74 65 31 39 38 20  Char) (state198 
11c50 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
11c60 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63     ((#\+ #\-) (c
11c70 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
11c80 74 65 31 37 37 20 28 73 63 61 6e 43 68 61 72 29  te177 (scanChar)
11c90 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
11ca0 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
11cb0 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
11cc0 61 74 65 32 30 31 20 63 29 0a 20 20 20 20 28 63  ate201 c).    (c
11cd0 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
11ce0 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c  0 #\1 #\2 #\3 #\
11cf0 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c  4 #\5 #\6 #\7 #\
11d00 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63  8 #\9).       (c
11d10 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
11d20 20 20 20 28 73 74 61 74 65 32 30 30 20 28 73 63     (state200 (sc
11d30 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
11d40 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
11d50 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
11d60 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
11d70 66 69 6e 65 20 28 73 74 61 74 65 32 30 32 20 63  fine (state202 c
11d80 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
11d90 20 20 20 20 28 28 23 5c 69 20 23 5c 49 29 20 28      ((#\i #\I) (
11da0 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63  consumeChar) (ac
11db0 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20  cept 'number)). 
11dc0 20 20 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e       ((#\#) (con
11dd0 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
11de0 32 30 32 20 28 73 63 61 6e 43 68 61 72 29 29 29  202 (scanChar)))
11df0 0a 20 20 20 20 20 20 28 28 23 5c 2f 29 20 28 63  .      ((#\/) (c
11e00 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
11e10 74 65 32 30 31 20 28 73 63 61 6e 43 68 61 72 29  te201 (scanChar)
11e20 29 29 0a 20 20 20 20 20 20 28 28 23 5c 40 29 20  )).      ((#\@) 
11e30 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
11e40 74 61 74 65 31 39 38 20 28 73 63 61 6e 43 68 61  tate198 (scanCha
11e50 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2b  r))).      ((#\+
11e60 20 23 5c 2d 29 20 28 63 6f 6e 73 75 6d 65 43 68   #\-) (consumeCh
11e70 61 72 29 20 28 73 74 61 74 65 31 37 37 20 28 73  ar) (state177 (s
11e80 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
11e90 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65   ((#\.) (consume
11ea0 43 68 61 72 29 20 28 73 74 61 74 65 31 35 36 20  Char) (state156 
11eb0 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
11ec0 20 20 20 28 28 23 5c 65 20 23 5c 45 20 23 5c 73     ((#\e #\E #\s
11ed0 20 23 5c 53 20 23 5c 66 20 23 5c 46 20 23 5c 64   #\S #\f #\F #\d
11ee0 20 23 5c 44 20 23 5c 6c 20 23 5c 4c 29 0a 20 20   #\D #\l #\L).  
11ef0 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61       (consumeCha
11f00 72 29 0a 20 20 20 20 20 20 20 28 73 74 61 74 65  r).       (state
11f10 31 35 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  155 (scanChar)))
11f20 0a 20 20 20 20 20 20 28 28 23 5c 7c 29 20 28 63  .      ((#\|) (c
11f30 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
11f40 74 65 31 35 32 20 28 73 63 61 6e 43 68 61 72 29  te152 (scanChar)
11f50 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20 28  )).      (else (
11f60 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29  accept 'number))
11f70 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
11f80 61 74 65 32 30 33 20 63 29 0a 20 20 20 20 28 63  ate203 c).    (c
11f90 61 73 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c  ase c.      ((#\
11fa0 69 20 23 5c 49 29 20 28 63 6f 6e 73 75 6d 65 43  i #\I) (consumeC
11fb0 68 61 72 29 20 28 61 63 63 65 70 74 20 27 6e 75  har) (accept 'nu
11fc0 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 28 23  mber)).      ((#
11fd0 5c 30 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23  \0 #\1 #\2 #\3 #
11fe0 5c 34 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23  \4 #\5 #\6 #\7 #
11ff0 5c 38 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28  \8 #\9).       (
12000 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
12010 20 20 20 20 28 73 74 61 74 65 32 30 33 20 28 73      (state203 (s
12020 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
12030 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75 6d 65   ((#\#) (consume
12040 43 68 61 72 29 20 28 73 74 61 74 65 32 30 32 20  Char) (state202 
12050 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
12060 20 20 20 28 28 23 5c 2f 29 20 28 63 6f 6e 73 75     ((#\/) (consu
12070 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32 30  meChar) (state20
12080 31 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  1 (scanChar))). 
12090 20 20 20 20 20 28 28 23 5c 40 29 20 28 63 6f 6e       ((#\@) (con
120a0 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
120b0 31 39 38 20 28 73 63 61 6e 43 68 61 72 29 29 29  198 (scanChar)))
120c0 0a 20 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d  .      ((#\+ #\-
120d0 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
120e0 28 73 74 61 74 65 31 37 37 20 28 73 63 61 6e 43  (state177 (scanC
120f0 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
12100 5c 65 20 23 5c 45 20 23 5c 73 20 23 5c 53 20 23  \e #\E #\s #\S #
12110 5c 66 20 23 5c 46 20 23 5c 64 20 23 5c 44 20 23  \f #\F #\d #\D #
12120 5c 6c 20 23 5c 4c 29 0a 20 20 20 20 20 20 20 28  \l #\L).       (
12130 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20  consumeChar).   
12140 20 20 20 20 28 73 74 61 74 65 31 35 35 20 28 73      (state155 (s
12150 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
12160 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75 6d 65   ((#\|) (consume
12170 43 68 61 72 29 20 28 73 74 61 74 65 31 35 32 20  Char) (state152 
12180 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
12190 20 20 20 28 28 23 5c 2e 29 20 28 63 6f 6e 73 75     ((#\.) (consu
121a0 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 31 35  meChar) (state15
121b0 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  0 (scanChar))). 
121c0 20 20 20 20 20 28 65 6c 73 65 20 28 61 63 63 65       (else (acce
121d0 70 74 20 27 6e 75 6d 62 65 72 29 29 29 29 0a 20  pt 'number)))). 
121e0 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 32   (define (state2
121f0 30 34 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  04 c).    (case 
12200 63 0a 20 20 20 20 20 20 28 28 23 5c 49 29 20 28  c.      ((#\I) (
12210 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61 63  consumeChar) (ac
12220 63 65 70 74 20 27 6e 75 6d 62 65 72 29 29 0a 20  cept 'number)). 
12230 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23       ((#\0 #\1 #
12240 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23  \2 #\3 #\4 #\5 #
12250 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a  \6 #\7 #\8 #\9).
12260 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 43         (consumeC
12270 68 61 72 29 0a 20 20 20 20 20 20 20 28 73 74 61  har).       (sta
12280 74 65 32 30 33 20 28 73 63 61 6e 43 68 61 72 29  te203 (scanChar)
12290 29 29 0a 20 20 20 20 20 20 28 28 23 5c 2e 29 20  )).      ((#\.) 
122a0 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
122b0 74 61 74 65 31 34 39 20 28 73 63 61 6e 43 68 61  tate149 (scanCha
122c0 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 6e  r))).      ((#\n
122d0 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20  ) (consumeChar) 
122e0 28 73 74 61 74 65 31 34 38 20 28 73 63 61 6e 43  (state148 (scanC
122f0 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
12300 5c 69 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \i) (consumeChar
12310 29 20 28 73 74 61 74 65 31 34 33 20 28 73 63 61  ) (state143 (sca
12320 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
12330 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
12340 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
12350 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
12360 69 6e 65 20 28 73 74 61 74 65 32 30 35 20 63 29  ine (state205 c)
12370 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
12380 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20 28 63     ((#\+ #\-) (c
12390 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
123a0 74 65 32 30 34 20 28 73 63 61 6e 43 68 61 72 29  te204 (scanChar)
123b0 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23  )).      ((#\0 #
123c0 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23  \1 #\2 #\3 #\4 #
123d0 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23  \5 #\6 #\7 #\8 #
123e0 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73  \9).       (cons
123f0 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 20  umeChar).       
12400 28 73 74 61 74 65 31 34 31 20 28 73 63 61 6e 43  (state141 (scanC
12410 68 61 72 29 29 29 0a 20 20 20 20 20 20 28 28 23  har))).      ((#
12420 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72  \.) (consumeChar
12430 29 20 28 73 74 61 74 65 31 32 39 20 28 73 63 61  ) (state129 (sca
12440 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
12450 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
12460 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
12470 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
12480 69 6e 65 20 28 73 74 61 74 65 32 30 36 20 63 29  ine (state206 c)
12490 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
124a0 20 20 20 28 28 23 5c 69 20 23 5c 49 20 23 5c 65     ((#\i #\I #\e
124b0 20 23 5c 45 29 0a 20 20 20 20 20 20 20 28 63 6f   #\E).       (co
124c0 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
124d0 20 20 28 73 74 61 74 65 32 30 35 20 28 73 63 61    (state205 (sca
124e0 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
124f0 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72  else (scannerErr
12500 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74 65  or errIncomplete
12510 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65 66  Token)))).  (def
12520 69 6e 65 20 28 73 74 61 74 65 32 30 37 20 63 29  ine (state207 c)
12530 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20 20  .    (case c.   
12540 20 20 20 28 28 23 5c 23 29 20 28 63 6f 6e 73 75     ((#\#) (consu
12550 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32 30  meChar) (state20
12560 36 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  6 (scanChar))). 
12570 20 20 20 20 20 28 28 23 5c 2b 20 23 5c 2d 29 20       ((#\+ #\-) 
12580 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
12590 74 61 74 65 32 30 34 20 28 73 63 61 6e 43 68 61  tate204 (scanCha
125a0 72 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 30  r))).      ((#\0
125b0 20 23 5c 31 20 23 5c 32 20 23 5c 33 20 23 5c 34   #\1 #\2 #\3 #\4
125c0 20 23 5c 35 20 23 5c 36 20 23 5c 37 20 23 5c 38   #\5 #\6 #\7 #\8
125d0 20 23 5c 39 29 0a 20 20 20 20 20 20 20 28 63 6f   #\9).       (co
125e0 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20 20  nsumeChar).     
125f0 20 20 28 73 74 61 74 65 31 34 31 20 28 73 63 61    (state141 (sca
12600 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
12610 28 23 5c 2e 29 20 28 63 6f 6e 73 75 6d 65 43 68  (#\.) (consumeCh
12620 61 72 29 20 28 73 74 61 74 65 31 32 39 20 28 73  ar) (state129 (s
12630 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20  canChar))).     
12640 20 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45   (else (scannerE
12650 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65  rror errIncomple
12660 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64  teToken)))).  (d
12670 65 66 69 6e 65 20 28 73 74 61 74 65 32 30 38 20  efine (state208 
12680 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20  c).    (case c. 
12690 20 20 20 20 20 28 28 23 5c 73 29 20 28 63 6f 6e       ((#\s) (con
126a0 73 75 6d 65 43 68 61 72 29 20 28 61 63 63 65 70  sumeChar) (accep
126b0 74 20 27 6d 69 73 63 66 6c 61 67 29 29 0a 20 20  t 'miscflag)).  
126c0 20 20 20 20 28 65 6c 73 65 20 28 73 63 61 6e 6e      (else (scann
126d0 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63 6f 6d  erError errIncom
126e0 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29 0a 20  pleteToken)))). 
126f0 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 32   (define (state2
12700 30 39 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  09 c).    (case 
12710 63 0a 20 20 20 20 20 20 28 28 23 5c 72 29 20 28  c.      ((#\r) (
12720 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74  consumeChar) (st
12730 61 74 65 32 30 38 20 28 73 63 61 6e 43 68 61 72  ate208 (scanChar
12740 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
12750 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
12760 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
12770 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
12780 73 74 61 74 65 32 31 30 20 63 29 0a 20 20 20 20  state210 c).    
12790 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 28  (case c.      ((
127a0 23 5c 36 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\6) (consumeCha
127b0 72 29 20 28 73 74 61 74 65 32 30 39 20 28 73 63  r) (state209 (sc
127c0 61 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20  anChar))).      
127d0 28 65 6c 73 65 20 28 73 63 61 6e 6e 65 72 45 72  (else (scannerEr
127e0 72 6f 72 20 65 72 72 49 6e 63 6f 6d 70 6c 65 74  ror errIncomplet
127f0 65 54 6f 6b 65 6e 29 29 29 29 0a 20 20 28 64 65  eToken)))).  (de
12800 66 69 6e 65 20 28 73 74 61 74 65 32 31 31 20 63  fine (state211 c
12810 29 0a 20 20 20 20 28 63 61 73 65 20 63 0a 20 20  ).    (case c.  
12820 20 20 20 20 28 28 23 5c 72 29 20 28 63 6f 6e 73      ((#\r) (cons
12830 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32  umeChar) (state2
12840 31 30 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  10 (scanChar))).
12850 20 20 20 20 20 20 28 65 6c 73 65 20 28 73 63 61        (else (sca
12860 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
12870 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 29 29  ompleteToken))))
12880 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
12890 65 32 31 32 20 63 29 0a 20 20 20 20 28 63 61 73  e212 c).    (cas
128a0 65 20 63 0a 20 20 20 20 20 20 28 28 23 5c 60 29  e c.      ((#\`)
128b0 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28   (consumeChar) (
128c0 61 63 63 65 70 74 20 27 71 75 61 73 69 73 79 6e  accept 'quasisyn
128d0 74 61 78 29 29 0a 20 20 20 20 20 20 28 28 23 5c  tax)).      ((#\
128e0 27 29 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  ') (consumeChar)
128f0 20 28 61 63 63 65 70 74 20 27 73 79 6e 74 61 78   (accept 'syntax
12900 29 29 0a 20 20 20 20 20 20 28 28 23 5c 28 29 20  )).      ((#\() 
12910 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 61  (consumeChar) (a
12920 63 63 65 70 74 20 27 76 65 63 73 74 61 72 74 29  ccept 'vecstart)
12930 29 0a 20 20 20 20 20 20 28 28 23 5c 74 20 23 5c  ).      ((#\t #\
12940 54 20 23 5c 66 20 23 5c 46 29 0a 20 20 20 20 20  T #\f #\F).     
12950 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
12960 20 20 20 20 20 20 20 28 61 63 63 65 70 74 20 27         (accept '
12970 62 6f 6f 6c 65 61 6e 29 29 0a 20 20 20 20 20 20  boolean)).      
12980 28 28 23 5c 3b 29 20 28 63 6f 6e 73 75 6d 65 43  ((#\;) (consumeC
12990 68 61 72 29 20 28 61 63 63 65 70 74 20 27 63 6f  har) (accept 'co
129a0 6d 6d 65 6e 74 64 61 74 75 6d 29 29 0a 20 20 20  mmentdatum)).   
129b0 20 20 20 28 28 23 5c 7c 29 20 28 63 6f 6e 73 75     ((#\|) (consu
129c0 6d 65 43 68 61 72 29 20 28 61 63 63 65 70 74 20  meChar) (accept 
129d0 27 63 6f 6d 6d 65 6e 74 29 29 0a 20 20 20 20 20  'comment)).     
129e0 20 28 28 23 5c 21 29 20 28 63 6f 6e 73 75 6d 65   ((#\!) (consume
129f0 43 68 61 72 29 20 28 73 74 61 74 65 32 31 31 20  Char) (state211 
12a00 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20 20  (scanChar))).   
12a10 20 20 20 28 28 23 5c 64 20 23 5c 44 29 20 28 63     ((#\d #\D) (c
12a20 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61  onsumeChar) (sta
12a30 74 65 32 30 37 20 28 73 63 61 6e 43 68 61 72 29  te207 (scanChar)
12a40 29 29 0a 20 20 20 20 20 20 28 28 23 5c 69 20 23  )).      ((#\i #
12a50 5c 49 20 23 5c 65 20 23 5c 45 29 0a 20 20 20 20  \I #\e #\E).    
12a60 20 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29     (consumeChar)
12a70 0a 20 20 20 20 20 20 20 28 73 74 61 74 65 31 32  .       (state12
12a80 38 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  8 (scanChar))). 
12a90 20 20 20 20 20 28 28 23 5c 62 20 23 5c 42 29 20       ((#\b #\B) 
12aa0 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 20 28 73  (consumeChar) (s
12ab0 74 61 74 65 32 38 20 28 73 63 61 6e 43 68 61 72  tate28 (scanChar
12ac0 29 29 29 0a 20 20 20 20 20 20 28 28 23 5c 6f 20  ))).      ((#\o 
12ad0 23 5c 4f 29 20 28 63 6f 6e 73 75 6d 65 43 68 61  #\O) (consumeCha
12ae0 72 29 20 28 73 74 61 74 65 32 36 20 28 73 63 61  r) (state26 (sca
12af0 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 28  nChar))).      (
12b00 28 23 5c 78 20 23 5c 58 29 20 28 63 6f 6e 73 75  (#\x #\X) (consu
12b10 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32 34  meChar) (state24
12b20 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20 20   (scanChar))).  
12b30 20 20 20 20 28 28 23 5c 5c 29 20 28 63 6f 6e 73      ((#\\) (cons
12b40 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65 32  umeChar) (state2
12b50 32 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a 20  2 (scanChar))). 
12b60 20 20 20 20 20 28 28 23 5c 76 29 20 28 63 6f 6e       ((#\v) (con
12b70 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74 65  sumeChar) (state
12b80 31 38 20 28 73 63 61 6e 43 68 61 72 29 29 29 0a  18 (scanChar))).
12b90 20 20 20 20 20 20 28 28 23 5c 2c 29 20 28 63 6f        ((#\,) (co
12ba0 6e 73 75 6d 65 43 68 61 72 29 20 28 73 74 61 74  nsumeChar) (stat
12bb0 65 31 35 20 28 73 63 61 6e 43 68 61 72 29 29 29  e15 (scanChar)))
12bc0 0a 20 20 20 20 20 20 28 28 23 5c 30 20 23 5c 31  .      ((#\0 #\1
12bd0 20 23 5c 32 20 23 5c 33 20 23 5c 34 20 23 5c 35   #\2 #\3 #\4 #\5
12be0 20 23 5c 36 20 23 5c 37 20 23 5c 38 20 23 5c 39   #\6 #\7 #\8 #\9
12bf0 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d  ).       (consum
12c00 65 43 68 61 72 29 0a 20 20 20 20 20 20 20 28 73  eChar).       (s
12c10 74 61 74 65 31 34 20 28 73 63 61 6e 43 68 61 72  tate14 (scanChar
12c20 29 29 29 0a 20 20 20 20 20 20 28 65 6c 73 65 20  ))).      (else 
12c30 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
12c40 72 49 6e 63 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e  rIncompleteToken
12c50 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
12c60 73 74 61 74 65 32 31 33 20 63 29 0a 20 20 20 20  state213 c).    
12c70 28 63 61 73 65 20 63 0a 20 20 20 20 20 20 28 65  (case c.      (e
12c80 6c 73 65 0a 20 20 20 20 20 20 20 28 69 66 20 28  lse.       (if (
12c90 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20 20  (lambda (c).    
12ca0 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28            (and (
12cb0 63 68 61 72 3f 20 63 29 0a 20 20 20 20 20 20 20  char? c).       
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74              (not
12cd0 20 28 63 68 61 72 3d 3f 20 63 20 28 69 6e 74 65   (char=? c (inte
12ce0 67 65 72 2d 3e 63 68 61 72 20 31 30 29 29 29 29  ger->char 10))))
12cf0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 29  ).            c)
12d00 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67  .           (beg
12d10 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29  in (consumeChar)
12d20 20 28 73 74 61 74 65 32 31 33 20 28 73 63 61 6e   (state213 (scan
12d30 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20  Char))).        
12d40 20 20 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20     (begin.      
12d50 20 20 20 20 20 20 20 28 73 65 74 21 20 73 74 72         (set! str
12d60 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72 5f  ing_accumulator_
12d70 6c 65 6e 67 74 68 20 30 29 0a 20 20 20 20 20 20  length 0).      
12d80 20 20 20 20 20 20 20 28 73 74 61 74 65 30 20 28         (state0 (
12d90 73 63 61 6e 43 68 61 72 29 29 29 29 29 29 29 0a  scanChar))))))).
12da0 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65    (define (state
12db0 32 31 34 20 63 29 0a 20 20 20 20 28 63 61 73 65  214 c).    (case
12dc0 20 63 0a 20 20 20 20 20 20 28 65 6c 73 65 0a 20   c.      (else. 
12dd0 20 20 20 20 20 20 28 62 65 67 69 6e 0a 20 20 20        (begin.   
12de0 20 20 20 20 20 20 28 73 65 74 21 20 73 74 72 69        (set! stri
12df0 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72 5f 6c  ng_accumulator_l
12e00 65 6e 67 74 68 20 30 29 0a 20 20 20 20 20 20 20  ength 0).       
12e10 20 20 28 73 74 61 74 65 30 20 28 73 63 61 6e 43    (state0 (scanC
12e20 68 61 72 29 29 29 29 29 29 0a 20 20 28 64 65 66  har)))))).  (def
12e30 69 6e 65 20 28 73 74 61 74 65 32 31 35 20 63 29  ine (state215 c)
12e40 0a 20 20 20 20 28 63 61 73 65 20 63 20 28 65 6c  .    (case c (el
12e50 73 65 20 28 61 63 63 65 70 74 20 27 63 6f 6d 6d  se (accept 'comm
12e60 65 6e 74 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ent)))).  (defin
12e70 65 20 28 73 74 61 74 65 32 31 36 20 63 29 0a 20  e (state216 c). 
12e80 20 20 20 28 63 61 73 65 20 63 20 28 65 6c 73 65     (case c (else
12e90 20 28 61 63 63 65 70 74 20 27 63 6f 6d 6d 65 6e   (accept 'commen
12ea0 74 64 61 74 75 6d 29 29 29 29 0a 20 20 28 64 65  tdatum)))).  (de
12eb0 66 69 6e 65 20 28 73 74 61 74 65 32 31 37 20 63  fine (state217 c
12ec0 29 0a 20 20 20 20 28 63 61 73 65 20 63 20 28 65  ).    (case c (e
12ed0 6c 73 65 20 28 61 63 63 65 70 74 20 27 6d 69 73  lse (accept 'mis
12ee0 63 66 6c 61 67 29 29 29 29 0a 20 20 28 64 65 66  cflag)))).  (def
12ef0 69 6e 65 20 28 73 74 61 74 65 32 31 38 20 63 29  ine (state218 c)
12f00 0a 20 20 20 20 28 63 61 73 65 20 63 20 28 65 6c  .    (case c (el
12f10 73 65 20 28 61 63 63 65 70 74 20 27 62 6f 6f 6c  se (accept 'bool
12f20 65 61 6e 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ean)))).  (defin
12f30 65 20 28 73 74 61 74 65 32 31 39 20 63 29 0a 20  e (state219 c). 
12f40 20 20 20 28 63 61 73 65 20 63 20 28 65 6c 73 65     (case c (else
12f50 20 28 61 63 63 65 70 74 20 27 6e 75 6d 62 65 72   (accept 'number
12f60 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
12f70 73 74 61 74 65 32 32 30 20 63 29 0a 20 20 20 20  state220 c).    
12f80 28 63 61 73 65 20 63 20 28 65 6c 73 65 20 28 61  (case c (else (a
12f90 63 63 65 70 74 20 27 63 68 61 72 61 63 74 65 72  ccept 'character
12fa0 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28  )))).  (define (
12fb0 73 74 61 74 65 32 32 31 20 63 29 0a 20 20 20 20  state221 c).    
12fc0 28 63 61 73 65 20 63 20 28 65 6c 73 65 20 28 61  (case c (else (a
12fd0 63 63 65 70 74 20 27 76 65 63 73 74 61 72 74 29  ccept 'vecstart)
12fe0 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
12ff0 74 61 74 65 32 32 32 20 63 29 0a 20 20 20 20 28  tate222 c).    (
13000 63 61 73 65 20 63 20 28 65 6c 73 65 20 28 61 63  case c (else (ac
13010 63 65 70 74 20 27 62 76 65 63 73 74 61 72 74 29  cept 'bvecstart)
13020 29 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73  ))).  (define (s
13030 74 61 74 65 32 32 33 20 63 29 0a 20 20 20 20 28  tate223 c).    (
13040 63 61 73 65 20 63 20 28 65 6c 73 65 20 28 61 63  case c (else (ac
13050 63 65 70 74 20 27 73 79 6e 74 61 78 29 29 29 29  cept 'syntax))))
13060 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61 74  .  (define (stat
13070 65 32 32 34 20 63 29 0a 20 20 20 20 28 63 61 73  e224 c).    (cas
13080 65 20 63 20 28 65 6c 73 65 20 28 61 63 63 65 70  e c (else (accep
13090 74 20 27 71 75 61 73 69 73 79 6e 74 61 78 29 29  t 'quasisyntax))
130a0 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
130b0 61 74 65 32 32 35 20 63 29 0a 20 20 20 20 28 63  ate225 c).    (c
130c0 61 73 65 20 63 20 28 65 6c 73 65 20 28 61 63 63  ase c (else (acc
130d0 65 70 74 20 27 75 6e 73 79 6e 74 61 78 73 70 6c  ept 'unsyntaxspl
130e0 69 63 69 6e 67 29 29 29 29 0a 20 20 28 64 65 66  icing)))).  (def
130f0 69 6e 65 20 28 73 74 61 74 65 32 32 36 20 63 29  ine (state226 c)
13100 0a 20 20 20 20 28 63 61 73 65 20 63 20 28 65 6c  .    (case c (el
13110 73 65 20 28 61 63 63 65 70 74 20 27 73 68 61 72  se (accept 'shar
13120 69 6e 67 64 65 66 29 29 29 29 0a 20 20 28 64 65  ingdef)))).  (de
13130 66 69 6e 65 20 28 73 74 61 74 65 32 32 37 20 63  fine (state227 c
13140 29 0a 20 20 20 20 28 63 61 73 65 20 63 20 28 65  ).    (case c (e
13150 6c 73 65 20 28 61 63 63 65 70 74 20 27 73 68 61  lse (accept 'sha
13160 72 69 6e 67 75 73 65 29 29 29 29 0a 20 20 28 64  ringuse)))).  (d
13170 65 66 69 6e 65 20 28 73 74 61 74 65 32 32 38 20  efine (state228 
13180 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 20 28  c).    (case c (
13190 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 65 6f  else (accept 'eo
131a0 66 6f 62 6a 29 29 29 29 0a 20 20 28 64 65 66 69  fobj)))).  (defi
131b0 6e 65 20 28 73 74 61 74 65 32 32 39 20 63 29 0a  ne (state229 c).
131c0 20 20 20 20 28 63 61 73 65 20 63 20 28 65 6c 73      (case c (els
131d0 65 20 28 61 63 63 65 70 74 20 27 69 64 29 29 29  e (accept 'id)))
131e0 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74 61  ).  (define (sta
131f0 74 65 32 33 30 20 63 29 0a 20 20 20 20 28 63 61  te230 c).    (ca
13200 73 65 20 63 20 28 65 6c 73 65 20 28 61 63 63 65  se c (else (acce
13210 70 74 20 27 73 74 72 69 6e 67 29 29 29 29 0a 20  pt 'string)))). 
13220 20 28 64 65 66 69 6e 65 20 28 73 74 61 74 65 32   (define (state2
13230 33 31 20 63 29 0a 20 20 20 20 28 63 61 73 65 20  31 c).    (case 
13240 63 20 28 65 6c 73 65 20 28 61 63 63 65 70 74 20  c (else (accept 
13250 27 6c 70 61 72 65 6e 29 29 29 29 0a 20 20 28 64  'lparen)))).  (d
13260 65 66 69 6e 65 20 28 73 74 61 74 65 32 33 32 20  efine (state232 
13270 63 29 0a 20 20 20 20 28 63 61 73 65 20 63 20 28  c).    (case c (
13280 65 6c 73 65 20 28 61 63 63 65 70 74 20 27 72 70  else (accept 'rp
13290 61 72 65 6e 29 29 29 29 0a 20 20 28 64 65 66 69  aren)))).  (defi
132a0 6e 65 20 28 73 74 61 74 65 32 33 33 20 63 29 0a  ne (state233 c).
132b0 20 20 20 20 28 63 61 73 65 20 63 20 28 65 6c 73      (case c (els
132c0 65 20 28 61 63 63 65 70 74 20 27 6c 62 72 61 63  e (accept 'lbrac
132d0 6b 65 74 29 29 29 29 0a 20 20 28 64 65 66 69 6e  ket)))).  (defin
132e0 65 20 28 73 74 61 74 65 32 33 34 20 63 29 0a 20  e (state234 c). 
132f0 20 20 20 28 63 61 73 65 20 63 20 28 65 6c 73 65     (case c (else
13300 20 28 61 63 63 65 70 74 20 27 72 62 72 61 63 6b   (accept 'rbrack
13310 65 74 29 29 29 29 0a 20 20 28 64 65 66 69 6e 65  et)))).  (define
13320 20 28 73 74 61 74 65 32 33 35 20 63 29 0a 20 20   (state235 c).  
13330 20 20 28 63 61 73 65 20 63 20 28 65 6c 73 65 20    (case c (else 
13340 28 61 63 63 65 70 74 20 27 71 75 6f 74 65 29 29  (accept 'quote))
13350 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
13360 61 74 65 32 33 36 20 63 29 0a 20 20 20 20 28 63  ate236 c).    (c
13370 61 73 65 20 63 20 28 65 6c 73 65 20 28 61 63 63  ase c (else (acc
13380 65 70 74 20 27 62 61 63 6b 71 75 6f 74 65 29 29  ept 'backquote))
13390 29 29 0a 20 20 28 64 65 66 69 6e 65 20 28 73 74  )).  (define (st
133a0 61 74 65 32 33 37 20 63 29 0a 20 20 20 20 28 63  ate237 c).    (c
133b0 61 73 65 20 63 20 28 65 6c 73 65 20 28 61 63 63  ase c (else (acc
133c0 65 70 74 20 27 73 70 6c 69 63 69 6e 67 29 29 29  ept 'splicing)))
133d0 29 0a 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b  )..    ;;;;;;;;;
133e0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
133f0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13400 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13410 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
13420 20 20 3b 20 45 6e 64 20 6f 66 20 73 74 61 74 65    ; End of state
13430 20 6d 61 63 68 69 6e 65 20 67 65 6e 65 72 61 74   machine generat
13440 65 64 20 62 79 20 4c 65 78 47 65 6e 2e 0a 20 20  ed by LexGen..  
13450 20 20 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b    ;.    ;;;;;;;;
13460 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13470 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13480 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13490 3b 3b 3b 3b 3b 3b 3b 3b 0a 0a 20 20 20 20 3b 3b  ;;;;;;;;..    ;;
134a0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
134b0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
134c0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
134d0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 20  ;;;;;;;;;;;;;;. 
134e0 20 20 20 3b 0a 20 20 20 20 3b 20 50 61 72 73 65     ;.    ; Parse
134f0 47 65 6e 20 67 65 6e 65 72 61 74 65 64 20 74 68  Gen generated th
13500 65 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 73  e code for the s
13510 74 72 6f 6e 67 20 4c 4c 28 31 29 20 70 61 72 73  trong LL(1) pars
13520 65 72 2e 0a 20 20 20 20 3b 0a 20 20 20 20 3b 3b  er..    ;.    ;;
13530 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13540 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13550 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
13560 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 20  ;;;;;;;;;;;;;;. 
13570 20 0a 28 64 65 66 69 6e 65 20 28 70 61 72 73 65   .(define (parse
13580 2d 6f 75 74 65 72 6d 6f 73 74 2d 64 61 74 75 6d  -outermost-datum
13590 29 0a 20 20 28 63 61 73 65 20 28 6e 65 78 74 2d  ).  (case (next-
135a0 74 6f 6b 65 6e 29 0a 20 20 20 20 28 28 75 6e 73  token).    ((uns
135b0 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 0a 20 20  yntaxsplicing.  
135c0 20 20 20 20 20 75 6e 73 79 6e 74 61 78 0a 20 20       unsyntax.  
135d0 20 20 20 20 20 71 75 61 73 69 73 79 6e 74 61 78       quasisyntax
135e0 0a 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a 20  .       syntax. 
135f0 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67 0a 20        splicing. 
13600 20 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20        comma.    
13610 20 20 20 62 61 63 6b 71 75 6f 74 65 0a 20 20 20     backquote.   
13620 20 20 20 20 71 75 6f 74 65 0a 20 20 20 20 20 20      quote.      
13630 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20   lbracket.      
13640 20 6c 70 61 72 65 6e 0a 20 20 20 20 20 20 20 76   lparen.       v
13650 65 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 62  ecstart.       b
13660 76 65 63 73 74 61 72 74 0a 20 20 20 20 20 20 20  vecstart.       
13670 6d 69 73 63 66 6c 61 67 0a 20 20 20 20 20 20 20  miscflag.       
13680 69 64 0a 20 20 20 20 20 20 20 73 74 72 69 6e 67  id.       string
13690 0a 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65  .       characte
136a0 72 0a 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a  r.       number.
136b0 20 20 20 20 20 20 20 62 6f 6f 6c 65 61 6e 0a 20         boolean. 
136c0 20 20 20 20 20 20 73 68 61 72 69 6e 67 64 65 66        sharingdef
136d0 0a 20 20 20 20 20 20 20 73 68 61 72 69 6e 67 75  .       sharingu
136e0 73 65 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28  se).     (let ((
136f0 61 73 74 31 20 28 70 61 72 73 65 2d 64 61 74 75  ast1 (parse-datu
13700 6d 29 29 29 20 28 69 64 65 6e 74 69 74 79 20 61  m))) (identity a
13710 73 74 31 29 29 29 0a 20 20 20 20 28 28 65 6f 66  st1))).    ((eof
13720 6f 62 6a 29 20 28 62 65 67 69 6e 20 28 63 6f 6e  obj) (begin (con
13730 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 6d 61  sume-token!) (ma
13740 6b 65 45 4f 46 29 29 29 0a 20 20 20 20 28 65 6c  keEOF))).    (el
13750 73 65 0a 20 20 20 20 20 28 70 61 72 73 65 2d 65  se.     (parse-e
13760 72 72 6f 72 0a 20 20 20 20 20 20 20 27 3c 6f 75  rror.       '<ou
13770 74 65 72 6d 6f 73 74 2d 64 61 74 75 6d 3e 0a 20  termost-datum>. 
13780 20 20 20 20 20 20 27 28 62 61 63 6b 71 75 6f 74        '(backquot
13790 65 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  e.          bool
137a0 65 61 6e 0a 20 20 20 20 20 20 20 20 20 20 62 76  ean.          bv
137b0 65 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 20  ecstart.        
137c0 20 20 63 68 61 72 61 63 74 65 72 0a 20 20 20 20    character.    
137d0 20 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20        comma.    
137e0 20 20 20 20 20 20 65 6f 66 6f 62 6a 0a 20 20 20        eofobj.   
137f0 20 20 20 20 20 20 20 69 64 0a 20 20 20 20 20 20         id.      
13800 20 20 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20      lbracket.   
13810 20 20 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20         lparen.  
13820 20 20 20 20 20 20 20 20 6d 69 73 63 66 6c 61 67          miscflag
13830 0a 20 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65  .          numbe
13840 72 0a 20 20 20 20 20 20 20 20 20 20 71 75 61 73  r.          quas
13850 69 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20  isyntax.        
13860 20 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20    quote.        
13870 20 20 73 68 61 72 69 6e 67 64 65 66 0a 20 20 20    sharingdef.   
13880 20 20 20 20 20 20 20 73 68 61 72 69 6e 67 75 73         sharingus
13890 65 0a 20 20 20 20 20 20 20 20 20 20 73 70 6c 69  e.          spli
138a0 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 73  cing.          s
138b0 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20  tring.          
138c0 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20  syntax.         
138d0 20 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20   unsyntax.      
138e0 20 20 20 20 75 6e 73 79 6e 74 61 78 73 70 6c 69      unsyntaxspli
138f0 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 76  cing.          v
13900 65 63 73 74 61 72 74 29 29 29 29 29 0a 0a 28 64  ecstart)))))..(d
13910 65 66 69 6e 65 20 28 70 61 72 73 65 2d 64 61 74  efine (parse-dat
13920 75 6d 29 0a 20 20 28 63 61 73 65 20 28 6e 65 78  um).  (case (nex
13930 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 28 28 73  t-token).    ((s
13940 68 61 72 69 6e 67 75 73 65 29 0a 20 20 20 20 20  haringuse).     
13950 28 6c 65 74 20 28 28 61 73 74 31 20 28 70 61 72  (let ((ast1 (par
13960 73 65 2d 73 68 61 72 69 6e 67 75 73 65 29 29 29  se-sharinguse)))
13970 0a 20 20 20 20 20 20 20 28 6d 61 6b 65 53 68 61  .       (makeSha
13980 72 69 6e 67 55 73 65 20 61 73 74 31 29 29 29 0a  ringUse ast1))).
13990 20 20 20 20 28 28 73 68 61 72 69 6e 67 64 65 66      ((sharingdef
139a0 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 61 73  ).     (let ((as
139b0 74 31 20 28 70 61 72 73 65 2d 73 68 61 72 69 6e  t1 (parse-sharin
139c0 67 64 65 66 29 29 29 0a 20 20 20 20 20 20 20 28  gdef))).       (
139d0 6c 65 74 20 28 28 61 73 74 32 20 28 70 61 72 73  let ((ast2 (pars
139e0 65 2d 75 64 61 74 75 6d 29 29 29 0a 20 20 20 20  e-udatum))).    
139f0 20 20 20 20 20 28 6d 61 6b 65 53 68 61 72 69 6e       (makeSharin
13a00 67 44 65 66 20 61 73 74 31 20 61 73 74 32 29 29  gDef ast1 ast2))
13a10 29 29 0a 20 20 20 20 28 28 62 6f 6f 6c 65 61 6e  )).    ((boolean
13a20 0a 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20  .       number. 
13a30 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 0a        character.
13a40 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20         string.  
13a50 20 20 20 20 20 69 64 0a 20 20 20 20 20 20 20 6d       id.       m
13a60 69 73 63 66 6c 61 67 0a 20 20 20 20 20 20 20 62  iscflag.       b
13a70 76 65 63 73 74 61 72 74 0a 20 20 20 20 20 20 20  vecstart.       
13a80 76 65 63 73 74 61 72 74 0a 20 20 20 20 20 20 20  vecstart.       
13a90 6c 70 61 72 65 6e 0a 20 20 20 20 20 20 20 6c 62  lparen.       lb
13aa0 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20 71 75  racket.       qu
13ab0 6f 74 65 0a 20 20 20 20 20 20 20 62 61 63 6b 71  ote.       backq
13ac0 75 6f 74 65 0a 20 20 20 20 20 20 20 63 6f 6d 6d  uote.       comm
13ad0 61 0a 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e  a.       splicin
13ae0 67 0a 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a  g.       syntax.
13af0 20 20 20 20 20 20 20 71 75 61 73 69 73 79 6e 74         quasisynt
13b00 61 78 0a 20 20 20 20 20 20 20 75 6e 73 79 6e 74  ax.       unsynt
13b10 61 78 0a 20 20 20 20 20 20 20 75 6e 73 79 6e 74  ax.       unsynt
13b20 61 78 73 70 6c 69 63 69 6e 67 29 0a 20 20 20 20  axsplicing).    
13b30 20 28 6c 65 74 20 28 28 61 73 74 31 20 28 70 61   (let ((ast1 (pa
13b40 72 73 65 2d 75 64 61 74 75 6d 29 29 29 20 28 69  rse-udatum))) (i
13b50 64 65 6e 74 69 74 79 20 61 73 74 31 29 29 29 0a  dentity ast1))).
13b60 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20 28      (else.     (
13b70 70 61 72 73 65 2d 65 72 72 6f 72 0a 20 20 20 20  parse-error.    
13b80 20 20 20 27 3c 64 61 74 75 6d 3e 0a 20 20 20 20     '<datum>.    
13b90 20 20 20 27 28 62 61 63 6b 71 75 6f 74 65 0a 20     '(backquote. 
13ba0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 65 61 6e           boolean
13bb0 0a 20 20 20 20 20 20 20 20 20 20 62 76 65 63 73  .          bvecs
13bc0 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 63  tart.          c
13bd0 68 61 72 61 63 74 65 72 0a 20 20 20 20 20 20 20  haracter.       
13be0 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20     comma.       
13bf0 20 20 20 69 64 0a 20 20 20 20 20 20 20 20 20 20     id.          
13c00 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20  lbracket.       
13c10 20 20 20 6c 70 61 72 65 6e 0a 20 20 20 20 20 20     lparen.      
13c20 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20 20 20      miscflag.   
13c30 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20         number.  
13c40 20 20 20 20 20 20 20 20 71 75 61 73 69 73 79 6e          quasisyn
13c50 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 71 75  tax.          qu
13c60 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 73 68  ote.          sh
13c70 61 72 69 6e 67 64 65 66 0a 20 20 20 20 20 20 20  aringdef.       
13c80 20 20 20 73 68 61 72 69 6e 67 75 73 65 0a 20 20     sharinguse.  
13c90 20 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67          splicing
13ca0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
13cb0 67 0a 20 20 20 20 20 20 20 20 20 20 73 79 6e 74  g.          synt
13cc0 61 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73  ax.          uns
13cd0 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20  yntax.          
13ce0 75 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67  unsyntaxsplicing
13cf0 0a 20 20 20 20 20 20 20 20 20 20 76 65 63 73 74  .          vecst
13d00 61 72 74 29 29 29 29 29 0a 0a 28 64 65 66 69 6e  art)))))..(defin
13d10 65 20 28 70 61 72 73 65 2d 75 64 61 74 75 6d 29  e (parse-udatum)
13d20 0a 20 20 28 63 61 73 65 20 28 6e 65 78 74 2d 74  .  (case (next-t
13d30 6f 6b 65 6e 29 0a 20 20 20 20 28 28 75 6e 73 79  oken).    ((unsy
13d40 6e 74 61 78 73 70 6c 69 63 69 6e 67 0a 20 20 20  ntaxsplicing.   
13d50 20 20 20 20 75 6e 73 79 6e 74 61 78 0a 20 20 20      unsyntax.   
13d60 20 20 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a      quasisyntax.
13d70 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a 20 20         syntax.  
13d80 20 20 20 20 20 73 70 6c 69 63 69 6e 67 0a 20 20       splicing.  
13d90 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20       comma.     
13da0 20 20 62 61 63 6b 71 75 6f 74 65 0a 20 20 20 20    backquote.    
13db0 20 20 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20     quote.       
13dc0 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20  lbracket.       
13dd0 6c 70 61 72 65 6e 0a 20 20 20 20 20 20 20 76 65  lparen.       ve
13de0 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 62 76  cstart.       bv
13df0 65 63 73 74 61 72 74 29 0a 20 20 20 20 20 28 6c  ecstart).     (l
13e00 65 74 20 28 28 61 73 74 31 20 28 70 61 72 73 65  et ((ast1 (parse
13e10 2d 6c 6f 63 61 74 69 6f 6e 29 29 29 0a 20 20 20  -location))).   
13e20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74 32 20      (let ((ast2 
13e30 28 70 61 72 73 65 2d 73 74 72 75 63 74 75 72 65  (parse-structure
13e40 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6d  d))).         (m
13e50 61 6b 65 53 74 72 75 63 74 75 72 65 64 20 61 73  akeStructured as
13e60 74 31 20 61 73 74 32 29 29 29 29 0a 20 20 20 20  t1 ast2)))).    
13e70 28 28 6d 69 73 63 66 6c 61 67 29 20 28 62 65 67  ((miscflag) (beg
13e80 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65  in (consume-toke
13e90 6e 21 29 20 28 6d 61 6b 65 46 6c 61 67 29 29 29  n!) (makeFlag)))
13ea0 0a 20 20 20 20 28 28 69 64 29 20 28 62 65 67 69  .    ((id) (begi
13eb0 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e  n (consume-token
13ec0 21 29 20 28 6d 61 6b 65 53 79 6d 29 29 29 0a 20  !) (makeSym))). 
13ed0 20 20 20 28 28 73 74 72 69 6e 67 29 20 28 62 65     ((string) (be
13ee0 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b  gin (consume-tok
13ef0 65 6e 21 29 20 28 6d 61 6b 65 53 74 72 69 6e 67  en!) (makeString
13f00 29 29 29 0a 20 20 20 20 28 28 63 68 61 72 61 63  ))).    ((charac
13f10 74 65 72 29 20 28 62 65 67 69 6e 20 28 63 6f 6e  ter) (begin (con
13f20 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 6d 61  sume-token!) (ma
13f30 6b 65 43 68 61 72 29 29 29 0a 20 20 20 20 28 28  keChar))).    ((
13f40 6e 75 6d 62 65 72 29 20 28 62 65 67 69 6e 20 28  number) (begin (
13f50 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20  consume-token!) 
13f60 28 6d 61 6b 65 4e 75 6d 29 29 29 0a 20 20 20 20  (makeNum))).    
13f70 28 28 62 6f 6f 6c 65 61 6e 29 20 28 62 65 67 69  ((boolean) (begi
13f80 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e  n (consume-token
13f90 21 29 20 28 6d 61 6b 65 42 6f 6f 6c 29 29 29 0a  !) (makeBool))).
13fa0 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20 28      (else.     (
13fb0 70 61 72 73 65 2d 65 72 72 6f 72 0a 20 20 20 20  parse-error.    
13fc0 20 20 20 27 3c 75 64 61 74 75 6d 3e 0a 20 20 20     '<udatum>.   
13fd0 20 20 20 20 27 28 62 61 63 6b 71 75 6f 74 65 0a      '(backquote.
13fe0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 65 61            boolea
13ff0 6e 0a 20 20 20 20 20 20 20 20 20 20 62 76 65 63  n.          bvec
14000 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 20  start.          
14010 63 68 61 72 61 63 74 65 72 0a 20 20 20 20 20 20  character.      
14020 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20      comma.      
14030 20 20 20 20 69 64 0a 20 20 20 20 20 20 20 20 20      id.         
14040 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20   lbracket.      
14050 20 20 20 20 6c 70 61 72 65 6e 0a 20 20 20 20 20      lparen.     
14060 20 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20 20       miscflag.  
14070 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20          number. 
14080 20 20 20 20 20 20 20 20 20 71 75 61 73 69 73 79           quasisy
14090 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 71  ntax.          q
140a0 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 73  uote.          s
140b0 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20  plicing.        
140c0 20 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20    string.       
140d0 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20     syntax.      
140e0 20 20 20 20 75 6e 73 79 6e 74 61 78 0a 20 20 20      unsyntax.   
140f0 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78 73         unsyntaxs
14100 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20  plicing.        
14110 20 20 76 65 63 73 74 61 72 74 29 29 29 29 29 0a    vecstart))))).
14120 0a 28 64 65 66 69 6e 65 20 28 70 61 72 73 65 2d  .(define (parse-
14130 73 74 72 75 63 74 75 72 65 64 29 0a 20 20 28 63  structured).  (c
14140 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29  ase (next-token)
14150 0a 20 20 20 20 28 28 62 76 65 63 73 74 61 72 74  .    ((bvecstart
14160 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 61 73  ).     (let ((as
14170 74 31 20 28 70 61 72 73 65 2d 62 79 74 65 76 65  t1 (parse-byteve
14180 63 74 6f 72 29 29 29 20 28 69 64 65 6e 74 69 74  ctor))) (identit
14190 79 20 61 73 74 31 29 29 29 0a 20 20 20 20 28 28  y ast1))).    ((
141a0 76 65 63 73 74 61 72 74 29 0a 20 20 20 20 20 28  vecstart).     (
141b0 6c 65 74 20 28 28 61 73 74 31 20 28 70 61 72 73  let ((ast1 (pars
141c0 65 2d 76 65 63 74 6f 72 29 29 29 20 28 69 64 65  e-vector))) (ide
141d0 6e 74 69 74 79 20 61 73 74 31 29 29 29 0a 20 20  ntity ast1))).  
141e0 20 20 28 28 6c 70 61 72 65 6e 0a 20 20 20 20 20    ((lparen.     
141f0 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20    lbracket.     
14200 20 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 62    quote.       b
14210 61 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20  ackquote.       
14220 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 73 70 6c  comma.       spl
14230 69 63 69 6e 67 0a 20 20 20 20 20 20 20 73 79 6e  icing.       syn
14240 74 61 78 0a 20 20 20 20 20 20 20 71 75 61 73 69  tax.       quasi
14250 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 75 6e  syntax.       un
14260 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 75 6e  syntax.       un
14270 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 29 0a  syntaxsplicing).
14280 20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74 31       (let ((ast1
14290 20 28 70 61 72 73 65 2d 6c 69 73 74 29 29 29 20   (parse-list))) 
142a0 28 69 64 65 6e 74 69 74 79 20 61 73 74 31 29 29  (identity ast1))
142b0 29 0a 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20  ).    (else.    
142c0 20 28 70 61 72 73 65 2d 65 72 72 6f 72 0a 20 20   (parse-error.  
142d0 20 20 20 20 20 27 3c 73 74 72 75 63 74 75 72 65       '<structure
142e0 64 3e 0a 20 20 20 20 20 20 20 27 28 62 61 63 6b  d>.       '(back
142f0 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20  quote.          
14300 62 76 65 63 73 74 61 72 74 0a 20 20 20 20 20 20  bvecstart.      
14310 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20      comma.      
14320 20 20 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20      lbracket.   
14330 20 20 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20         lparen.  
14340 20 20 20 20 20 20 20 20 71 75 61 73 69 73 79 6e          quasisyn
14350 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 71 75  tax.          qu
14360 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 73 70  ote.          sp
14370 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20  licing.         
14380 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20   syntax.        
14390 20 20 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20    unsyntax.     
143a0 20 20 20 20 20 75 6e 73 79 6e 74 61 78 73 70 6c       unsyntaxspl
143b0 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20  icing.          
143c0 76 65 63 73 74 61 72 74 29 29 29 29 29 0a 0a 28  vecstart)))))..(
143d0 64 65 66 69 6e 65 20 28 70 61 72 73 65 2d 73 74  define (parse-st
143e0 72 69 6e 67 29 0a 20 20 28 63 61 73 65 20 28 6e  ring).  (case (n
143f0 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 28  ext-token).    (
14400 28 73 74 72 69 6e 67 29 20 28 62 65 67 69 6e 20  (string) (begin 
14410 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29  (consume-token!)
14420 20 28 6d 61 6b 65 53 74 72 69 6e 67 29 29 29 0a   (makeString))).
14430 20 20 20 20 28 65 6c 73 65 20 28 70 61 72 73 65      (else (parse
14440 2d 65 72 72 6f 72 20 27 3c 73 74 72 69 6e 67 3e  -error '<string>
14450 20 27 28 73 74 72 69 6e 67 29 29 29 29 29 0a 0a   '(string)))))..
14460 28 64 65 66 69 6e 65 20 28 70 61 72 73 65 2d 73  (define (parse-s
14470 79 6d 62 6f 6c 29 0a 20 20 28 63 61 73 65 20 28  ymbol).  (case (
14480 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20  next-token).    
14490 28 28 69 64 29 20 28 62 65 67 69 6e 20 28 63 6f  ((id) (begin (co
144a0 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 6d  nsume-token!) (m
144b0 61 6b 65 53 79 6d 29 29 29 0a 20 20 20 20 28 65  akeSym))).    (e
144c0 6c 73 65 20 28 70 61 72 73 65 2d 65 72 72 6f 72  lse (parse-error
144d0 20 27 3c 73 79 6d 62 6f 6c 3e 20 27 28 69 64 29   '<symbol> '(id)
144e0 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 70  ))))..(define (p
144f0 61 72 73 65 2d 6c 69 73 74 29 0a 20 20 28 63 61  arse-list).  (ca
14500 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a  se (next-token).
14510 20 20 20 20 28 28 75 6e 73 79 6e 74 61 78 73 70      ((unsyntaxsp
14520 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 75 6e  licing.       un
14530 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 71 75  syntax.       qu
14540 61 73 69 73 79 6e 74 61 78 0a 20 20 20 20 20 20  asisyntax.      
14550 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 73   syntax.       s
14560 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 63  plicing.       c
14570 6f 6d 6d 61 0a 20 20 20 20 20 20 20 62 61 63 6b  omma.       back
14580 71 75 6f 74 65 0a 20 20 20 20 20 20 20 71 75 6f  quote.       quo
14590 74 65 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28  te).     (let ((
145a0 61 73 74 31 20 28 70 61 72 73 65 2d 61 62 62 72  ast1 (parse-abbr
145b0 65 76 69 61 74 69 6f 6e 29 29 29 0a 20 20 20 20  eviation))).    
145c0 20 20 20 28 69 64 65 6e 74 69 74 79 20 61 73 74     (identity ast
145d0 31 29 29 29 0a 20 20 20 20 28 28 6c 62 72 61 63  1))).    ((lbrac
145e0 6b 65 74 29 0a 20 20 20 20 20 28 62 65 67 69 6e  ket).     (begin
145f0 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75 6d 65  .       (consume
14600 2d 74 6f 6b 65 6e 21 29 0a 20 20 20 20 20 20 20  -token!).       
14610 28 6c 65 74 20 28 28 61 73 74 31 20 28 70 61 72  (let ((ast1 (par
14620 73 65 2d 62 6c 73 74 32 29 29 29 20 28 69 64 65  se-blst2))) (ide
14630 6e 74 69 74 79 20 61 73 74 31 29 29 29 29 0a 20  ntity ast1)))). 
14640 20 20 20 28 28 6c 70 61 72 65 6e 29 0a 20 20 20     ((lparen).   
14650 20 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20 20    (begin.       
14660 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29  (consume-token!)
14670 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61  .       (let ((a
14680 73 74 31 20 28 70 61 72 73 65 2d 6c 69 73 74 32  st1 (parse-list2
14690 29 29 29 20 28 69 64 65 6e 74 69 74 79 20 61 73  ))) (identity as
146a0 74 31 29 29 29 29 0a 20 20 20 20 28 65 6c 73 65  t1)))).    (else
146b0 0a 20 20 20 20 20 28 70 61 72 73 65 2d 65 72 72  .     (parse-err
146c0 6f 72 0a 20 20 20 20 20 20 20 27 3c 6c 69 73 74  or.       '<list
146d0 3e 0a 20 20 20 20 20 20 20 27 28 62 61 63 6b 71  >.       '(backq
146e0 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 63  uote.          c
146f0 6f 6d 6d 61 0a 20 20 20 20 20 20 20 20 20 20 6c  omma.          l
14700 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20 20  bracket.        
14710 20 20 6c 70 61 72 65 6e 0a 20 20 20 20 20 20 20    lparen.       
14720 20 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20     quasisyntax. 
14730 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 0a 20           quote. 
14740 20 20 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e           splicin
14750 67 0a 20 20 20 20 20 20 20 20 20 20 73 79 6e 74  g.          synt
14760 61 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73  ax.          uns
14770 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20  yntax.          
14780 75 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67  unsyntaxsplicing
14790 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28  )))))..(define (
147a0 70 61 72 73 65 2d 6c 69 73 74 32 29 0a 20 20 28  parse-list2).  (
147b0 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e  case (next-token
147c0 29 0a 20 20 20 20 28 28 75 6e 73 79 6e 74 61 78  ).    ((unsyntax
147d0 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20  splicing.       
147e0 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20  unsyntax.       
147f0 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20 20 20  quasisyntax.    
14800 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20     syntax.      
14810 20 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20   splicing.      
14820 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 62 61   comma.       ba
14830 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20 71  ckquote.       q
14840 75 6f 74 65 0a 20 20 20 20 20 20 20 6c 62 72 61  uote.       lbra
14850 63 6b 65 74 0a 20 20 20 20 20 20 20 6c 70 61 72  cket.       lpar
14860 65 6e 0a 20 20 20 20 20 20 20 76 65 63 73 74 61  en.       vecsta
14870 72 74 0a 20 20 20 20 20 20 20 62 76 65 63 73 74  rt.       bvecst
14880 61 72 74 0a 20 20 20 20 20 20 20 6d 69 73 63 66  art.       miscf
14890 6c 61 67 0a 20 20 20 20 20 20 20 69 64 0a 20 20  lag.       id.  
148a0 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20 20 20       string.    
148b0 20 20 20 63 68 61 72 61 63 74 65 72 0a 20 20 20     character.   
148c0 20 20 20 20 6e 75 6d 62 65 72 0a 20 20 20 20 20      number.     
148d0 20 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20 20 20    boolean.      
148e0 20 73 68 61 72 69 6e 67 64 65 66 0a 20 20 20 20   sharingdef.    
148f0 20 20 20 73 68 61 72 69 6e 67 75 73 65 29 0a 20     sharinguse). 
14900 20 20 20 20 28 6c 65 74 20 28 28 61 73 74 31 20      (let ((ast1 
14910 28 70 61 72 73 65 2d 64 61 74 75 6d 29 29 29 0a  (parse-datum))).
14920 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 73         (let ((as
14930 74 32 20 28 70 61 72 73 65 2d 6c 69 73 74 33 29  t2 (parse-list3)
14940 29 29 20 28 63 6f 6e 73 20 61 73 74 31 20 61 73  )) (cons ast1 as
14950 74 32 29 29 29 29 0a 20 20 20 20 28 28 72 70 61  t2)))).    ((rpa
14960 72 65 6e 29 20 28 62 65 67 69 6e 20 28 63 6f 6e  ren) (begin (con
14970 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 65 6d  sume-token!) (em
14980 70 74 79 4c 69 73 74 29 29 29 0a 20 20 20 20 28  ptyList))).    (
14990 65 6c 73 65 0a 20 20 20 20 20 28 70 61 72 73 65  else.     (parse
149a0 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 27 3c  -error.       '<
149b0 6c 69 73 74 32 3e 0a 20 20 20 20 20 20 20 27 28  list2>.       '(
149c0 62 61 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20  backquote.      
149d0 20 20 20 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20      boolean.    
149e0 20 20 20 20 20 20 62 76 65 63 73 74 61 72 74 0a        bvecstart.
149f0 20 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63            charac
14a00 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 63 6f  ter.          co
14a10 6d 6d 61 0a 20 20 20 20 20 20 20 20 20 20 69 64  mma.          id
14a20 0a 20 20 20 20 20 20 20 20 20 20 6c 62 72 61 63  .          lbrac
14a30 6b 65 74 0a 20 20 20 20 20 20 20 20 20 20 6c 70  ket.          lp
14a40 61 72 65 6e 0a 20 20 20 20 20 20 20 20 20 20 6d  aren.          m
14a50 69 73 63 66 6c 61 67 0a 20 20 20 20 20 20 20 20  iscflag.        
14a60 20 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20    number.       
14a70 20 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20     quasisyntax. 
14a80 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 0a 20           quote. 
14a90 20 20 20 20 20 20 20 20 20 72 70 61 72 65 6e 0a           rparen.
14aa0 20 20 20 20 20 20 20 20 20 20 73 68 61 72 69 6e            sharin
14ab0 67 64 65 66 0a 20 20 20 20 20 20 20 20 20 20 73  gdef.          s
14ac0 68 61 72 69 6e 67 75 73 65 0a 20 20 20 20 20 20  haringuse.      
14ad0 20 20 20 20 73 70 6c 69 63 69 6e 67 0a 20 20 20      splicing.   
14ae0 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20         string.  
14af0 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a 20          syntax. 
14b00 20 20 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61           unsynta
14b10 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73 79  x.          unsy
14b20 6e 74 61 78 73 70 6c 69 63 69 6e 67 0a 20 20 20  ntaxsplicing.   
14b30 20 20 20 20 20 20 20 76 65 63 73 74 61 72 74 29         vecstart)
14b40 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 70  ))))..(define (p
14b50 61 72 73 65 2d 6c 69 73 74 33 29 0a 20 20 28 63  arse-list3).  (c
14b60 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29  ase (next-token)
14b70 0a 20 20 20 20 28 28 72 70 61 72 65 6e 0a 20 20  .    ((rparen.  
14b80 20 20 20 20 20 70 65 72 69 6f 64 0a 20 20 20 20       period.    
14b90 20 20 20 73 68 61 72 69 6e 67 75 73 65 0a 20 20     sharinguse.  
14ba0 20 20 20 20 20 73 68 61 72 69 6e 67 64 65 66 0a       sharingdef.
14bb0 20 20 20 20 20 20 20 62 6f 6f 6c 65 61 6e 0a 20         boolean. 
14bc0 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20 20        number.   
14bd0 20 20 20 20 63 68 61 72 61 63 74 65 72 0a 20 20      character.  
14be0 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20 20 20       string.    
14bf0 20 20 20 69 64 0a 20 20 20 20 20 20 20 6d 69 73     id.       mis
14c00 63 66 6c 61 67 0a 20 20 20 20 20 20 20 62 76 65  cflag.       bve
14c10 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 76 65  cstart.       ve
14c20 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 6c 70  cstart.       lp
14c30 61 72 65 6e 0a 20 20 20 20 20 20 20 6c 62 72 61  aren.       lbra
14c40 63 6b 65 74 0a 20 20 20 20 20 20 20 71 75 6f 74  cket.       quot
14c50 65 0a 20 20 20 20 20 20 20 62 61 63 6b 71 75 6f  e.       backquo
14c60 74 65 0a 20 20 20 20 20 20 20 63 6f 6d 6d 61 0a  te.       comma.
14c70 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67 0a         splicing.
14c80 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a 20 20         syntax.  
14c90 20 20 20 20 20 71 75 61 73 69 73 79 6e 74 61 78       quasisyntax
14ca0 0a 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78  .       unsyntax
14cb0 0a 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78  .       unsyntax
14cc0 73 70 6c 69 63 69 6e 67 29 0a 20 20 20 20 20 28  splicing).     (
14cd0 6c 65 74 20 28 28 61 73 74 31 20 28 70 61 72 73  let ((ast1 (pars
14ce0 65 2d 64 61 74 61 29 29 29 0a 20 20 20 20 20 20  e-data))).      
14cf0 20 28 6c 65 74 20 28 28 61 73 74 32 20 28 70 61   (let ((ast2 (pa
14d00 72 73 65 2d 6c 69 73 74 34 29 29 29 0a 20 20 20  rse-list4))).   
14d10 20 20 20 20 20 20 28 70 73 65 75 64 6f 41 70 70        (pseudoApp
14d20 65 6e 64 20 61 73 74 31 20 61 73 74 32 29 29 29  end ast1 ast2)))
14d30 29 0a 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20  ).    (else.    
14d40 20 28 70 61 72 73 65 2d 65 72 72 6f 72 0a 20 20   (parse-error.  
14d50 20 20 20 20 20 27 3c 6c 69 73 74 33 3e 0a 20 20       '<list3>.  
14d60 20 20 20 20 20 27 28 62 61 63 6b 71 75 6f 74 65       '(backquote
14d70 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 65  .          boole
14d80 61 6e 0a 20 20 20 20 20 20 20 20 20 20 62 76 65  an.          bve
14d90 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20  cstart.         
14da0 20 63 68 61 72 61 63 74 65 72 0a 20 20 20 20 20   character.     
14db0 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20       comma.     
14dc0 20 20 20 20 20 69 64 0a 20 20 20 20 20 20 20 20       id.        
14dd0 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20    lbracket.     
14de0 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20 20 20       lparen.    
14df0 20 20 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20        miscflag. 
14e00 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a           number.
14e10 20 20 20 20 20 20 20 20 20 20 70 65 72 69 6f 64            period
14e20 0a 20 20 20 20 20 20 20 20 20 20 71 75 61 73 69  .          quasi
14e30 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20  syntax.         
14e40 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20   quote.         
14e50 20 72 70 61 72 65 6e 0a 20 20 20 20 20 20 20 20   rparen.        
14e60 20 20 73 68 61 72 69 6e 67 64 65 66 0a 20 20 20    sharingdef.   
14e70 20 20 20 20 20 20 20 73 68 61 72 69 6e 67 75 73         sharingus
14e80 65 0a 20 20 20 20 20 20 20 20 20 20 73 70 6c 69  e.          spli
14e90 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 73  cing.          s
14ea0 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20  tring.          
14eb0 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20  syntax.         
14ec0 20 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20   unsyntax.      
14ed0 20 20 20 20 75 6e 73 79 6e 74 61 78 73 70 6c 69      unsyntaxspli
14ee0 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 76  cing.          v
14ef0 65 63 73 74 61 72 74 29 29 29 29 29 0a 0a 28 64  ecstart)))))..(d
14f00 65 66 69 6e 65 20 28 70 61 72 73 65 2d 6c 69 73  efine (parse-lis
14f10 74 34 29 0a 20 20 28 63 61 73 65 20 28 6e 65 78  t4).  (case (nex
14f20 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 28 28 70  t-token).    ((p
14f30 65 72 69 6f 64 29 0a 20 20 20 20 20 28 62 65 67  eriod).     (beg
14f40 69 6e 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 75  in.       (consu
14f50 6d 65 2d 74 6f 6b 65 6e 21 29 0a 20 20 20 20 20  me-token!).     
14f60 20 20 28 6c 65 74 20 28 28 61 73 74 31 20 28 70    (let ((ast1 (p
14f70 61 72 73 65 2d 64 61 74 75 6d 29 29 29 0a 20 20  arse-datum))).  
14f80 20 20 20 20 20 20 20 28 69 66 20 28 65 71 3f 20         (if (eq? 
14f90 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 20 27 72 70  (next-token) 'rp
14fa0 61 72 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20  aren).          
14fb0 20 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73 75     (begin (consu
14fc0 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 69 64 65 6e  me-token!) (iden
14fd0 74 69 74 79 20 61 73 74 31 29 29 0a 20 20 20 20  tity ast1)).    
14fe0 20 20 20 20 20 20 20 20 20 28 70 61 72 73 65 2d           (parse-
14ff0 65 72 72 6f 72 20 27 3c 6c 69 73 74 34 3e 20 27  error '<list4> '
15000 28 72 70 61 72 65 6e 29 29 29 29 29 29 0a 20 20  (rparen)))))).  
15010 20 20 28 28 72 70 61 72 65 6e 29 20 28 62 65 67    ((rparen) (beg
15020 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65  in (consume-toke
15030 6e 21 29 20 28 65 6d 70 74 79 4c 69 73 74 29 29  n!) (emptyList))
15040 29 0a 20 20 20 20 28 65 6c 73 65 20 28 70 61 72  ).    (else (par
15050 73 65 2d 65 72 72 6f 72 20 27 3c 6c 69 73 74 34  se-error '<list4
15060 3e 20 27 28 70 65 72 69 6f 64 20 72 70 61 72 65  > '(period rpare
15070 6e 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20  n)))))..(define 
15080 28 70 61 72 73 65 2d 62 6c 73 74 32 29 0a 20 20  (parse-blst2).  
15090 28 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65  (case (next-toke
150a0 6e 29 0a 20 20 20 20 28 28 75 6e 73 79 6e 74 61  n).    ((unsynta
150b0 78 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20  xsplicing.      
150c0 20 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20   unsyntax.      
150d0 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20 20   quasisyntax.   
150e0 20 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20      syntax.     
150f0 20 20 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20    splicing.     
15100 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 62    comma.       b
15110 61 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20  ackquote.       
15120 71 75 6f 74 65 0a 20 20 20 20 20 20 20 6c 62 72  quote.       lbr
15130 61 63 6b 65 74 0a 20 20 20 20 20 20 20 6c 70 61  acket.       lpa
15140 72 65 6e 0a 20 20 20 20 20 20 20 76 65 63 73 74  ren.       vecst
15150 61 72 74 0a 20 20 20 20 20 20 20 62 76 65 63 73  art.       bvecs
15160 74 61 72 74 0a 20 20 20 20 20 20 20 6d 69 73 63  tart.       misc
15170 66 6c 61 67 0a 20 20 20 20 20 20 20 69 64 0a 20  flag.       id. 
15180 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20 20        string.   
15190 20 20 20 20 63 68 61 72 61 63 74 65 72 0a 20 20      character.  
151a0 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20 20 20       number.    
151b0 20 20 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20 20     boolean.     
151c0 20 20 73 68 61 72 69 6e 67 64 65 66 0a 20 20 20    sharingdef.   
151d0 20 20 20 20 73 68 61 72 69 6e 67 75 73 65 29 0a      sharinguse).
151e0 20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74 31       (let ((ast1
151f0 20 28 70 61 72 73 65 2d 64 61 74 75 6d 29 29 29   (parse-datum)))
15200 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61  .       (let ((a
15210 73 74 32 20 28 70 61 72 73 65 2d 62 6c 73 74 33  st2 (parse-blst3
15220 29 29 29 20 28 63 6f 6e 73 20 61 73 74 31 20 61  ))) (cons ast1 a
15230 73 74 32 29 29 29 29 0a 20 20 20 20 28 28 72 62  st2)))).    ((rb
15240 72 61 63 6b 65 74 29 20 28 62 65 67 69 6e 20 28  racket) (begin (
15250 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20  consume-token!) 
15260 28 65 6d 70 74 79 4c 69 73 74 29 29 29 0a 20 20  (emptyList))).  
15270 20 20 28 65 6c 73 65 0a 20 20 20 20 20 28 70 61    (else.     (pa
15280 72 73 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20  rse-error.      
15290 20 27 3c 62 6c 73 74 32 3e 0a 20 20 20 20 20 20   '<blst2>.      
152a0 20 27 28 62 61 63 6b 71 75 6f 74 65 0a 20 20 20   '(backquote.   
152b0 20 20 20 20 20 20 20 62 6f 6f 6c 65 61 6e 0a 20         boolean. 
152c0 20 20 20 20 20 20 20 20 20 62 76 65 63 73 74 61           bvecsta
152d0 72 74 0a 20 20 20 20 20 20 20 20 20 20 63 68 61  rt.          cha
152e0 72 61 63 74 65 72 0a 20 20 20 20 20 20 20 20 20  racter.         
152f0 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 20 20   comma.         
15300 20 69 64 0a 20 20 20 20 20 20 20 20 20 20 6c 62   id.          lb
15310 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20 20 20  racket.         
15320 20 6c 70 61 72 65 6e 0a 20 20 20 20 20 20 20 20   lparen.        
15330 20 20 6d 69 73 63 66 6c 61 67 0a 20 20 20 20 20    miscflag.     
15340 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20 20 20       number.    
15350 20 20 20 20 20 20 71 75 61 73 69 73 79 6e 74 61        quasisynta
15360 78 0a 20 20 20 20 20 20 20 20 20 20 71 75 6f 74  x.          quot
15370 65 0a 20 20 20 20 20 20 20 20 20 20 72 62 72 61  e.          rbra
15380 63 6b 65 74 0a 20 20 20 20 20 20 20 20 20 20 73  cket.          s
15390 68 61 72 69 6e 67 64 65 66 0a 20 20 20 20 20 20  haringdef.      
153a0 20 20 20 20 73 68 61 72 69 6e 67 75 73 65 0a 20      sharinguse. 
153b0 20 20 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e           splicin
153c0 67 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  g.          stri
153d0 6e 67 0a 20 20 20 20 20 20 20 20 20 20 73 79 6e  ng.          syn
153e0 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e  tax.          un
153f0 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20  syntax.         
15400 20 75 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e   unsyntaxsplicin
15410 67 0a 20 20 20 20 20 20 20 20 20 20 76 65 63 73  g.          vecs
15420 74 61 72 74 29 29 29 29 29 0a 0a 28 64 65 66 69  tart)))))..(defi
15430 6e 65 20 28 70 61 72 73 65 2d 62 6c 73 74 33 29  ne (parse-blst3)
15440 0a 20 20 28 63 61 73 65 20 28 6e 65 78 74 2d 74  .  (case (next-t
15450 6f 6b 65 6e 29 0a 20 20 20 20 28 28 72 62 72 61  oken).    ((rbra
15460 63 6b 65 74 0a 20 20 20 20 20 20 20 70 65 72 69  cket.       peri
15470 6f 64 0a 20 20 20 20 20 20 20 73 68 61 72 69 6e  od.       sharin
15480 67 75 73 65 0a 20 20 20 20 20 20 20 73 68 61 72  guse.       shar
15490 69 6e 67 64 65 66 0a 20 20 20 20 20 20 20 62 6f  ingdef.       bo
154a0 6f 6c 65 61 6e 0a 20 20 20 20 20 20 20 6e 75 6d  olean.       num
154b0 62 65 72 0a 20 20 20 20 20 20 20 63 68 61 72 61  ber.       chara
154c0 63 74 65 72 0a 20 20 20 20 20 20 20 73 74 72 69  cter.       stri
154d0 6e 67 0a 20 20 20 20 20 20 20 69 64 0a 20 20 20  ng.       id.   
154e0 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20 20 20      miscflag.   
154f0 20 20 20 20 62 76 65 63 73 74 61 72 74 0a 20 20      bvecstart.  
15500 20 20 20 20 20 76 65 63 73 74 61 72 74 0a 20 20       vecstart.  
15510 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20 20 20       lparen.    
15520 20 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20     lbracket.    
15530 20 20 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20     quote.       
15540 62 61 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20  backquote.      
15550 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 73 70   comma.       sp
15560 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 73 79  licing.       sy
15570 6e 74 61 78 0a 20 20 20 20 20 20 20 71 75 61 73  ntax.       quas
15580 69 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 75  isyntax.       u
15590 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 75  nsyntax.       u
155a0 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 29  nsyntaxsplicing)
155b0 0a 20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74  .     (let ((ast
155c0 31 20 28 70 61 72 73 65 2d 64 61 74 61 29 29 29  1 (parse-data)))
155d0 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61  .       (let ((a
155e0 73 74 32 20 28 70 61 72 73 65 2d 62 6c 73 74 34  st2 (parse-blst4
155f0 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 73  ))).         (ps
15600 65 75 64 6f 41 70 70 65 6e 64 20 61 73 74 31 20  eudoAppend ast1 
15610 61 73 74 32 29 29 29 29 0a 20 20 20 20 28 65 6c  ast2)))).    (el
15620 73 65 0a 20 20 20 20 20 28 70 61 72 73 65 2d 65  se.     (parse-e
15630 72 72 6f 72 0a 20 20 20 20 20 20 20 27 3c 62 6c  rror.       '<bl
15640 73 74 33 3e 0a 20 20 20 20 20 20 20 27 28 62 61  st3>.       '(ba
15650 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20  ckquote.        
15660 20 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20 20 20    boolean.      
15670 20 20 20 20 62 76 65 63 73 74 61 72 74 0a 20 20      bvecstart.  
15680 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65          characte
15690 72 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d  r.          comm
156a0 61 0a 20 20 20 20 20 20 20 20 20 20 69 64 0a 20  a.          id. 
156b0 20 20 20 20 20 20 20 20 20 6c 62 72 61 63 6b 65           lbracke
156c0 74 0a 20 20 20 20 20 20 20 20 20 20 6c 70 61 72  t.          lpar
156d0 65 6e 0a 20 20 20 20 20 20 20 20 20 20 6d 69 73  en.          mis
156e0 63 66 6c 61 67 0a 20 20 20 20 20 20 20 20 20 20  cflag.          
156f0 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 20  number.         
15700 20 70 65 72 69 6f 64 0a 20 20 20 20 20 20 20 20   period.        
15710 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20    quasisyntax.  
15720 20 20 20 20 20 20 20 20 71 75 6f 74 65 0a 20 20          quote.  
15730 20 20 20 20 20 20 20 20 72 62 72 61 63 6b 65 74          rbracket
15740 0a 20 20 20 20 20 20 20 20 20 20 73 68 61 72 69  .          shari
15750 6e 67 64 65 66 0a 20 20 20 20 20 20 20 20 20 20  ngdef.          
15760 73 68 61 72 69 6e 67 75 73 65 0a 20 20 20 20 20  sharinguse.     
15770 20 20 20 20 20 73 70 6c 69 63 69 6e 67 0a 20 20       splicing.  
15780 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20          string. 
15790 20 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a           syntax.
157a0 20 20 20 20 20 20 20 20 20 20 75 6e 73 79 6e 74            unsynt
157b0 61 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73  ax.          uns
157c0 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 0a 20 20  yntaxsplicing.  
157d0 20 20 20 20 20 20 20 20 76 65 63 73 74 61 72 74          vecstart
157e0 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28  )))))..(define (
157f0 70 61 72 73 65 2d 62 6c 73 74 34 29 0a 20 20 28  parse-blst4).  (
15800 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e  case (next-token
15810 29 0a 20 20 20 20 28 28 70 65 72 69 6f 64 29 0a  ).    ((period).
15820 20 20 20 20 20 28 62 65 67 69 6e 0a 20 20 20 20       (begin.    
15830 20 20 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65     (consume-toke
15840 6e 21 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20  n!).       (let 
15850 28 28 61 73 74 31 20 28 70 61 72 73 65 2d 64 61  ((ast1 (parse-da
15860 74 75 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20  tum))).         
15870 28 69 66 20 28 65 71 3f 20 28 6e 65 78 74 2d 74  (if (eq? (next-t
15880 6f 6b 65 6e 29 20 27 72 62 72 61 63 6b 65 74 29  oken) 'rbracket)
15890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62  .             (b
158a0 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f  egin (consume-to
158b0 6b 65 6e 21 29 20 28 69 64 65 6e 74 69 74 79 20  ken!) (identity 
158c0 61 73 74 31 29 29 0a 20 20 20 20 20 20 20 20 20  ast1)).         
158d0 20 20 20 20 28 70 61 72 73 65 2d 65 72 72 6f 72      (parse-error
158e0 20 27 3c 62 6c 73 74 34 3e 20 27 28 72 62 72 61   '<blst4> '(rbra
158f0 63 6b 65 74 29 29 29 29 29 29 0a 20 20 20 20 28  cket)))))).    (
15900 28 72 62 72 61 63 6b 65 74 29 20 28 62 65 67 69  (rbracket) (begi
15910 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e  n (consume-token
15920 21 29 20 28 65 6d 70 74 79 4c 69 73 74 29 29 29  !) (emptyList)))
15930 0a 20 20 20 20 28 65 6c 73 65 20 28 70 61 72 73  .    (else (pars
15940 65 2d 65 72 72 6f 72 20 27 3c 62 6c 73 74 34 3e  e-error '<blst4>
15950 20 27 28 70 65 72 69 6f 64 20 72 62 72 61 63 6b   '(period rbrack
15960 65 74 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65  et)))))..(define
15970 20 28 70 61 72 73 65 2d 61 62 62 72 65 76 69 61   (parse-abbrevia
15980 74 69 6f 6e 29 0a 20 20 28 63 61 73 65 20 28 6e  tion).  (case (n
15990 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 28  ext-token).    (
159a0 28 71 75 6f 74 65 20 62 61 63 6b 71 75 6f 74 65  (quote backquote
159b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d  .            com
159c0 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ma.            s
159d0 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20  plicing.        
159e0 20 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20      syntax.     
159f0 20 20 20 20 20 20 20 71 75 61 73 69 73 79 6e 74         quasisynt
15a00 61 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  ax.            u
15a10 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20  nsyntax.        
15a20 20 20 20 20 75 6e 73 79 6e 74 61 78 73 70 6c 69      unsyntaxspli
15a30 63 69 6e 67 29 0a 20 20 20 20 20 28 6c 65 74 20  cing).     (let 
15a40 28 28 61 73 74 31 20 28 70 61 72 73 65 2d 61 62  ((ast1 (parse-ab
15a50 62 72 65 76 2d 70 72 65 66 69 78 29 29 29 0a 20  brev-prefix))). 
15a60 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74        (let ((ast
15a70 32 20 28 70 61 72 73 65 2d 64 61 74 75 6d 29 29  2 (parse-datum))
15a80 29 20 28 6c 69 73 74 20 61 73 74 31 20 61 73 74  ) (list ast1 ast
15a90 32 29 29 29 29 0a 20 20 20 20 28 65 6c 73 65 0a  2)))).    (else.
15aa0 20 20 20 20 20 28 70 61 72 73 65 2d 65 72 72 6f       (parse-erro
15ab0 72 0a 20 20 20 20 20 20 20 27 3c 61 62 62 72 65  r.       '<abbre
15ac0 76 69 61 74 69 6f 6e 3e 0a 20 20 20 20 20 20 20  viation>.       
15ad0 27 28 62 61 63 6b 71 75 6f 74 65 0a 20 20 20 20  '(backquote.    
15ae0 20 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20        comma.    
15af0 20 20 20 20 20 20 71 75 61 73 69 73 79 6e 74 61        quasisynta
15b00 78 0a 20 20 20 20 20 20 20 20 20 20 71 75 6f 74  x.          quot
15b10 65 0a 20 20 20 20 20 20 20 20 20 20 73 70 6c 69  e.          spli
15b20 63 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 73  cing.          s
15b30 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20  yntax.          
15b40 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20  unsyntax.       
15b50 20 20 20 75 6e 73 79 6e 74 61 78 73 70 6c 69 63     unsyntaxsplic
15b60 69 6e 67 29 29 29 29 29 0a 0a 28 64 65 66 69 6e  ing)))))..(defin
15b70 65 20 28 70 61 72 73 65 2d 61 62 62 72 65 76 2d  e (parse-abbrev-
15b80 70 72 65 66 69 78 29 0a 20 20 28 63 61 73 65 20  prefix).  (case 
15b90 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20  (next-token).   
15ba0 20 28 28 75 6e 73 79 6e 74 61 78 73 70 6c 69 63   ((unsyntaxsplic
15bb0 69 6e 67 29 0a 20 20 20 20 20 28 62 65 67 69 6e  ing).     (begin
15bc0 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21   (consume-token!
15bd0 29 20 28 73 79 6d 55 6e 73 79 6e 74 61 78 2d 73  ) (symUnsyntax-s
15be0 70 6c 69 63 69 6e 67 29 29 29 0a 20 20 20 20 28  plicing))).    (
15bf0 28 75 6e 73 79 6e 74 61 78 29 0a 20 20 20 20 20  (unsyntax).     
15c00 28 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d  (begin (consume-
15c10 74 6f 6b 65 6e 21 29 20 28 73 79 6d 55 6e 73 79  token!) (symUnsy
15c20 6e 74 61 78 29 29 29 0a 20 20 20 20 28 28 71 75  ntax))).    ((qu
15c30 61 73 69 73 79 6e 74 61 78 29 0a 20 20 20 20 20  asisyntax).     
15c40 28 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d  (begin (consume-
15c50 74 6f 6b 65 6e 21 29 20 28 73 79 6d 51 75 61 73  token!) (symQuas
15c60 69 73 79 6e 74 61 78 29 29 29 0a 20 20 20 20 28  isyntax))).    (
15c70 28 73 79 6e 74 61 78 29 20 28 62 65 67 69 6e 20  (syntax) (begin 
15c80 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29  (consume-token!)
15c90 20 28 73 79 6d 53 79 6e 74 61 78 29 29 29 0a 20   (symSyntax))). 
15ca0 20 20 20 28 28 73 70 6c 69 63 69 6e 67 29 0a 20     ((splicing). 
15cb0 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73      (begin (cons
15cc0 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 73 79 6d  ume-token!) (sym
15cd0 53 70 6c 69 63 69 6e 67 29 29 29 0a 20 20 20 20  Splicing))).    
15ce0 28 28 63 6f 6d 6d 61 29 20 28 62 65 67 69 6e 20  ((comma) (begin 
15cf0 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29  (consume-token!)
15d00 20 28 73 79 6d 55 6e 71 75 6f 74 65 29 29 29 0a   (symUnquote))).
15d10 20 20 20 20 28 28 62 61 63 6b 71 75 6f 74 65 29      ((backquote)
15d20 0a 20 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f  .     (begin (co
15d30 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 73  nsume-token!) (s
15d40 79 6d 42 61 63 6b 71 75 6f 74 65 29 29 29 0a 20  ymBackquote))). 
15d50 20 20 20 28 28 71 75 6f 74 65 29 20 28 62 65 67     ((quote) (beg
15d60 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65  in (consume-toke
15d70 6e 21 29 20 28 73 79 6d 51 75 6f 74 65 29 29 29  n!) (symQuote)))
15d80 0a 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20  .    (else.     
15d90 28 70 61 72 73 65 2d 65 72 72 6f 72 0a 20 20 20  (parse-error.   
15da0 20 20 20 20 27 3c 61 62 62 72 65 76 2d 70 72 65      '<abbrev-pre
15db0 66 69 78 3e 0a 20 20 20 20 20 20 20 27 28 62 61  fix>.       '(ba
15dc0 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20  ckquote.        
15dd0 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 20    comma.        
15de0 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20    quasisyntax.  
15df0 20 20 20 20 20 20 20 20 71 75 6f 74 65 0a 20 20          quote.  
15e00 20 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67          splicing
15e10 0a 20 20 20 20 20 20 20 20 20 20 73 79 6e 74 61  .          synta
15e20 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73 79  x.          unsy
15e30 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 75  ntax.          u
15e40 6e 73 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 29  nsyntaxsplicing)
15e50 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 70  ))))..(define (p
15e60 61 72 73 65 2d 76 65 63 74 6f 72 29 0a 20 20 28  arse-vector).  (
15e70 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e  case (next-token
15e80 29 0a 20 20 20 20 28 28 76 65 63 73 74 61 72 74  ).    ((vecstart
15e90 29 0a 20 20 20 20 20 28 62 65 67 69 6e 0a 20 20  ).     (begin.  
15ea0 20 20 20 20 20 28 63 6f 6e 73 75 6d 65 2d 74 6f       (consume-to
15eb0 6b 65 6e 21 29 0a 20 20 20 20 20 20 20 28 6c 65  ken!).       (le
15ec0 74 20 28 28 61 73 74 31 20 28 70 61 72 73 65 2d  t ((ast1 (parse-
15ed0 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20  data))).        
15ee0 20 28 69 66 20 28 65 71 3f 20 28 6e 65 78 74 2d   (if (eq? (next-
15ef0 74 6f 6b 65 6e 29 20 27 72 70 61 72 65 6e 29 0a  token) 'rparen).
15f00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65               (be
15f10 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b  gin (consume-tok
15f20 65 6e 21 29 20 28 6c 69 73 74 32 76 65 63 74 6f  en!) (list2vecto
15f30 72 20 61 73 74 31 29 29 0a 20 20 20 20 20 20 20  r ast1)).       
15f40 20 20 20 20 20 20 28 70 61 72 73 65 2d 65 72 72        (parse-err
15f50 6f 72 20 27 3c 76 65 63 74 6f 72 3e 20 27 28 72  or '<vector> '(r
15f60 70 61 72 65 6e 29 29 29 29 29 29 0a 20 20 20 20  paren)))))).    
15f70 28 65 6c 73 65 20 28 70 61 72 73 65 2d 65 72 72  (else (parse-err
15f80 6f 72 20 27 3c 76 65 63 74 6f 72 3e 20 27 28 76  or '<vector> '(v
15f90 65 63 73 74 61 72 74 29 29 29 29 29 0a 0a 28 64  ecstart)))))..(d
15fa0 65 66 69 6e 65 20 28 70 61 72 73 65 2d 62 79 74  efine (parse-byt
15fb0 65 76 65 63 74 6f 72 29 0a 20 20 28 63 61 73 65  evector).  (case
15fc0 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20   (next-token).  
15fd0 20 20 28 28 62 76 65 63 73 74 61 72 74 29 0a 20    ((bvecstart). 
15fe0 20 20 20 20 28 62 65 67 69 6e 0a 20 20 20 20 20      (begin.     
15ff0 20 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e    (consume-token
16000 21 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28  !).       (let (
16010 28 61 73 74 31 20 28 70 61 72 73 65 2d 6f 63 74  (ast1 (parse-oct
16020 65 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20  ets))).         
16030 28 69 66 20 28 65 71 3f 20 28 6e 65 78 74 2d 74  (if (eq? (next-t
16040 6f 6b 65 6e 29 20 27 72 70 61 72 65 6e 29 0a 20  oken) 'rparen). 
16050 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67              (beg
16060 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65  in (consume-toke
16070 6e 21 29 20 28 6c 69 73 74 32 62 79 74 65 76 65  n!) (list2byteve
16080 63 74 6f 72 20 61 73 74 31 29 29 0a 20 20 20 20  ctor ast1)).    
16090 20 20 20 20 20 20 20 20 20 28 70 61 72 73 65 2d           (parse-
160a0 65 72 72 6f 72 20 27 3c 62 79 74 65 76 65 63 74  error '<bytevect
160b0 6f 72 3e 20 27 28 72 70 61 72 65 6e 29 29 29 29  or> '(rparen))))
160c0 29 29 0a 20 20 20 20 28 65 6c 73 65 20 28 70 61  )).    (else (pa
160d0 72 73 65 2d 65 72 72 6f 72 20 27 3c 62 79 74 65  rse-error '<byte
160e0 76 65 63 74 6f 72 3e 20 27 28 62 76 65 63 73 74  vector> '(bvecst
160f0 61 72 74 29 29 29 29 29 0a 0a 28 64 65 66 69 6e  art)))))..(defin
16100 65 20 28 70 61 72 73 65 2d 64 61 74 61 29 0a 20  e (parse-data). 
16110 20 28 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b   (case (next-tok
16120 65 6e 29 0a 20 20 20 20 28 28 75 6e 73 79 6e 74  en).    ((unsynt
16130 61 78 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20  axsplicing.     
16140 20 20 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20    unsyntax.     
16150 20 20 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20    quasisyntax.  
16160 20 20 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20       syntax.    
16170 20 20 20 73 70 6c 69 63 69 6e 67 0a 20 20 20 20     splicing.    
16180 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20     comma.       
16190 62 61 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20  backquote.      
161a0 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 6c 62   quote.       lb
161b0 72 61 63 6b 65 74 0a 20 20 20 20 20 20 20 6c 70  racket.       lp
161c0 61 72 65 6e 0a 20 20 20 20 20 20 20 76 65 63 73  aren.       vecs
161d0 74 61 72 74 0a 20 20 20 20 20 20 20 62 76 65 63  tart.       bvec
161e0 73 74 61 72 74 0a 20 20 20 20 20 20 20 6d 69 73  start.       mis
161f0 63 66 6c 61 67 0a 20 20 20 20 20 20 20 69 64 0a  cflag.       id.
16200 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a 20 20         string.  
16210 20 20 20 20 20 63 68 61 72 61 63 74 65 72 0a 20       character. 
16220 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20 20        number.   
16230 20 20 20 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20      boolean.    
16240 20 20 20 73 68 61 72 69 6e 67 64 65 66 0a 20 20     sharingdef.  
16250 20 20 20 20 20 73 68 61 72 69 6e 67 75 73 65 29       sharinguse)
16260 0a 20 20 20 20 20 28 6c 65 74 20 28 28 61 73 74  .     (let ((ast
16270 31 20 28 70 61 72 73 65 2d 64 61 74 75 6d 29 29  1 (parse-datum))
16280 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  ).       (let ((
16290 61 73 74 32 20 28 70 61 72 73 65 2d 64 61 74 61  ast2 (parse-data
162a0 29 29 29 20 28 63 6f 6e 73 20 61 73 74 31 20 61  ))) (cons ast1 a
162b0 73 74 32 29 29 29 29 0a 20 20 20 20 28 28 72 70  st2)))).    ((rp
162c0 61 72 65 6e 20 70 65 72 69 6f 64 20 72 62 72 61  aren period rbra
162d0 63 6b 65 74 29 20 28 65 6d 70 74 79 4c 69 73 74  cket) (emptyList
162e0 29 29 0a 20 20 20 20 28 65 6c 73 65 0a 20 20 20  )).    (else.   
162f0 20 20 28 70 61 72 73 65 2d 65 72 72 6f 72 0a 20    (parse-error. 
16300 20 20 20 20 20 20 27 3c 64 61 74 61 3e 0a 20 20        '<data>.  
16310 20 20 20 20 20 27 28 62 61 63 6b 71 75 6f 74 65       '(backquote
16320 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 65  .          boole
16330 61 6e 0a 20 20 20 20 20 20 20 20 20 20 62 76 65  an.          bve
16340 63 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20  cstart.         
16350 20 63 68 61 72 61 63 74 65 72 0a 20 20 20 20 20   character.     
16360 20 20 20 20 20 63 6f 6d 6d 61 0a 20 20 20 20 20       comma.     
16370 20 20 20 20 20 69 64 0a 20 20 20 20 20 20 20 20       id.        
16380 20 20 6c 62 72 61 63 6b 65 74 0a 20 20 20 20 20    lbracket.     
16390 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20 20 20       lparen.    
163a0 20 20 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20        miscflag. 
163b0 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a           number.
163c0 20 20 20 20 20 20 20 20 20 20 70 65 72 69 6f 64            period
163d0 0a 20 20 20 20 20 20 20 20 20 20 71 75 61 73 69  .          quasi
163e0 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20  syntax.         
163f0 20 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20   quote.         
16400 20 72 62 72 61 63 6b 65 74 0a 20 20 20 20 20 20   rbracket.      
16410 20 20 20 20 72 70 61 72 65 6e 0a 20 20 20 20 20      rparen.     
16420 20 20 20 20 20 73 68 61 72 69 6e 67 64 65 66 0a       sharingdef.
16430 20 20 20 20 20 20 20 20 20 20 73 68 61 72 69 6e            sharin
16440 67 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 73  guse.          s
16450 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20  plicing.        
16460 20 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20    string.       
16470 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20     syntax.      
16480 20 20 20 20 75 6e 73 79 6e 74 61 78 0a 20 20 20      unsyntax.   
16490 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78 73         unsyntaxs
164a0 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20 20  plicing.        
164b0 20 20 76 65 63 73 74 61 72 74 29 29 29 29 29 0a    vecstart))))).
164c0 0a 28 64 65 66 69 6e 65 20 28 70 61 72 73 65 2d  .(define (parse-
164d0 6f 63 74 65 74 73 29 0a 20 20 28 63 61 73 65 20  octets).  (case 
164e0 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20  (next-token).   
164f0 20 28 28 6e 75 6d 62 65 72 29 0a 20 20 20 20 20   ((number).     
16500 28 6c 65 74 20 28 28 61 73 74 31 20 28 70 61 72  (let ((ast1 (par
16510 73 65 2d 6f 63 74 65 74 29 29 29 0a 20 20 20 20  se-octet))).    
16520 20 20 20 28 6c 65 74 20 28 28 61 73 74 32 20 28     (let ((ast2 (
16530 70 61 72 73 65 2d 6f 63 74 65 74 73 29 29 29 20  parse-octets))) 
16540 28 63 6f 6e 73 20 61 73 74 31 20 61 73 74 32 29  (cons ast1 ast2)
16550 29 29 29 0a 20 20 20 20 28 28 72 70 61 72 65 6e  ))).    ((rparen
16560 29 20 28 65 6d 70 74 79 4c 69 73 74 29 29 0a 20  ) (emptyList)). 
16570 20 20 20 28 65 6c 73 65 20 28 70 61 72 73 65 2d     (else (parse-
16580 65 72 72 6f 72 20 27 3c 6f 63 74 65 74 73 3e 20  error '<octets> 
16590 27 28 6e 75 6d 62 65 72 20 72 70 61 72 65 6e 29  '(number rparen)
165a0 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 70  ))))..(define (p
165b0 61 72 73 65 2d 6f 63 74 65 74 29 0a 20 20 28 63  arse-octet).  (c
165c0 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29  ase (next-token)
165d0 0a 20 20 20 20 28 28 6e 75 6d 62 65 72 29 20 28  .    ((number) (
165e0 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74  begin (consume-t
165f0 6f 6b 65 6e 21 29 20 28 6d 61 6b 65 4f 63 74 65  oken!) (makeOcte
16600 74 29 29 29 0a 20 20 20 20 28 65 6c 73 65 20 28  t))).    (else (
16610 70 61 72 73 65 2d 65 72 72 6f 72 20 27 3c 6f 63  parse-error '<oc
16620 74 65 74 3e 20 27 28 6e 75 6d 62 65 72 29 29 29  tet> '(number)))
16630 29 29 0a 0a 28 64 65 66 69 6e 65 20 28 70 61 72  ))..(define (par
16640 73 65 2d 6c 6f 63 61 74 69 6f 6e 29 0a 20 20 28  se-location).  (
16650 63 61 73 65 20 28 6e 65 78 74 2d 74 6f 6b 65 6e  case (next-token
16660 29 0a 20 20 20 20 28 28 75 6e 73 79 6e 74 61 78  ).    ((unsyntax
16670 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20  splicing.       
16680 75 6e 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20  unsyntax.       
16690 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20 20 20  quasisyntax.    
166a0 20 20 20 73 79 6e 74 61 78 0a 20 20 20 20 20 20     syntax.      
166b0 20 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20   splicing.      
166c0 20 63 6f 6d 6d 61 0a 20 20 20 20 20 20 20 62 61   comma.       ba
166d0 63 6b 71 75 6f 74 65 0a 20 20 20 20 20 20 20 71  ckquote.       q
166e0 75 6f 74 65 0a 20 20 20 20 20 20 20 6c 62 72 61  uote.       lbra
166f0 63 6b 65 74 0a 20 20 20 20 20 20 20 6c 70 61 72  cket.       lpar
16700 65 6e 0a 20 20 20 20 20 20 20 76 65 63 73 74 61  en.       vecsta
16710 72 74 0a 20 20 20 20 20 20 20 62 76 65 63 73 74  rt.       bvecst
16720 61 72 74 29 0a 20 20 20 20 20 28 73 6f 75 72 63  art).     (sourc
16730 65 4c 6f 63 61 74 69 6f 6e 29 29 0a 20 20 20 20  eLocation)).    
16740 28 65 6c 73 65 0a 20 20 20 20 20 28 70 61 72 73  (else.     (pars
16750 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 27  e-error.       '
16760 3c 6c 6f 63 61 74 69 6f 6e 3e 0a 20 20 20 20 20  <location>.     
16770 20 20 27 28 62 61 63 6b 71 75 6f 74 65 0a 20 20    '(backquote.  
16780 20 20 20 20 20 20 20 20 62 76 65 63 73 74 61 72          bvecstar
16790 74 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d  t.          comm
167a0 61 0a 20 20 20 20 20 20 20 20 20 20 6c 62 72 61  a.          lbra
167b0 63 6b 65 74 0a 20 20 20 20 20 20 20 20 20 20 6c  cket.          l
167c0 70 61 72 65 6e 0a 20 20 20 20 20 20 20 20 20 20  paren.          
167d0 71 75 61 73 69 73 79 6e 74 61 78 0a 20 20 20 20  quasisyntax.    
167e0 20 20 20 20 20 20 71 75 6f 74 65 0a 20 20 20 20        quote.    
167f0 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67 0a 20        splicing. 
16800 20 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a           syntax.
16810 20 20 20 20 20 20 20 20 20 20 75 6e 73 79 6e 74            unsynt
16820 61 78 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73  ax.          uns
16830 79 6e 74 61 78 73 70 6c 69 63 69 6e 67 0a 20 20  yntaxsplicing.  
16840 20 20 20 20 20 20 20 20 76 65 63 73 74 61 72 74          vecstart
16850 29 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20 28  )))))..(define (
16860 70 61 72 73 65 2d 73 68 61 72 69 6e 67 64 65 66  parse-sharingdef
16870 29 0a 20 20 28 63 61 73 65 20 28 6e 65 78 74 2d  ).  (case (next-
16880 74 6f 6b 65 6e 29 0a 20 20 20 20 28 28 73 68 61  token).    ((sha
16890 72 69 6e 67 64 65 66 29 0a 20 20 20 20 20 28 62  ringdef).     (b
168a0 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 2d 74 6f  egin (consume-to
168b0 6b 65 6e 21 29 20 28 73 68 61 72 69 6e 67 44 65  ken!) (sharingDe
168c0 66 29 29 29 0a 20 20 20 20 28 65 6c 73 65 20 28  f))).    (else (
168d0 70 61 72 73 65 2d 65 72 72 6f 72 20 27 3c 73 68  parse-error '<sh
168e0 61 72 69 6e 67 64 65 66 3e 20 27 28 73 68 61 72  aringdef> '(shar
168f0 69 6e 67 64 65 66 29 29 29 29 29 0a 0a 28 64 65  ingdef)))))..(de
16900 66 69 6e 65 20 28 70 61 72 73 65 2d 73 68 61 72  fine (parse-shar
16910 69 6e 67 75 73 65 29 0a 20 20 28 63 61 73 65 20  inguse).  (case 
16920 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20  (next-token).   
16930 20 28 28 73 68 61 72 69 6e 67 75 73 65 29 0a 20   ((sharinguse). 
16940 20 20 20 20 28 62 65 67 69 6e 20 28 63 6f 6e 73      (begin (cons
16950 75 6d 65 2d 74 6f 6b 65 6e 21 29 20 28 73 68 61  ume-token!) (sha
16960 72 69 6e 67 55 73 65 29 29 29 0a 20 20 20 20 28  ringUse))).    (
16970 65 6c 73 65 20 28 70 61 72 73 65 2d 65 72 72 6f  else (parse-erro
16980 72 20 27 3c 73 68 61 72 69 6e 67 75 73 65 3e 20  r '<sharinguse> 
16990 27 28 73 68 61 72 69 6e 67 75 73 65 29 29 29 29  '(sharinguse))))
169a0 29 0a 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b  )..    ;;;;;;;;;
169b0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
169c0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
169d0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
169e0 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
169f0 20 20 3b 20 45 6e 64 20 6f 66 20 4c 4c 28 31 29    ; End of LL(1)
16a00 20 70 61 72 73 65 72 20 67 65 6e 65 72 61 74 65   parser generate
16a10 64 20 62 79 20 50 61 72 73 65 47 65 6e 2e 0a 20  d by ParseGen.. 
16a20 20 20 20 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b     ;.    ;;;;;;;
16a30 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16a40 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16a50 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16a60 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 0a 20 20 20 20 3b  ;;;;;;;;;..    ;
16a70 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16a80 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16a90 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16aa0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a  ;;;;;;;;;;;;;;;.
16ab0 20 20 20 20 3b 0a 20 20 20 20 3b 20 4c 65 78 69      ;.    ; Lexi
16ac0 63 61 6c 20 61 6e 61 6c 79 7a 65 72 2e 0a 20 20  cal analyzer..  
16ad0 20 20 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b    ;.    ;;;;;;;;
16ae0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16af0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16b00 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
16b10 3b 3b 3b 3b 3b 3b 3b 3b 0a 20 20 0a 20 20 20 20  ;;;;;;;;.  .    
16b20 3b 20 6e 65 78 74 2d 74 6f 6b 65 6e 20 61 6e 64  ; next-token and
16b30 20 63 6f 6e 73 75 6d 65 2d 74 6f 6b 65 6e 21 20   consume-token! 
16b40 61 72 65 20 63 61 6c 6c 65 64 20 62 79 20 74 68  are called by th
16b50 65 20 70 61 72 73 65 72 2e 0a 20 20 0a 20 20 20  e parser..  .   
16b60 20 3b 20 52 65 74 75 72 6e 73 20 74 68 65 20 63   ; Returns the c
16b70 75 72 72 65 6e 74 20 74 6f 6b 65 6e 2e 0a 20 20  urrent token..  
16b80 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 6e 65  .    (define (ne
16b90 78 74 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20  xt-token).      
16ba0 28 69 66 20 6e 65 78 74 54 6f 6b 65 6e 49 73 52  (if nextTokenIsR
16bb0 65 61 64 79 0a 20 20 20 20 20 20 20 20 20 20 6b  eady.          k
16bc0 69 6e 64 4f 66 4e 65 78 74 54 6f 6b 65 6e 0a 20  indOfNextToken. 
16bd0 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 20           (begin 
16be0 28 73 65 74 21 20 73 74 72 69 6e 67 5f 61 63 63  (set! string_acc
16bf0 75 6d 75 6c 61 74 6f 72 5f 6c 65 6e 67 74 68 20  umulator_length 
16c00 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  0).             
16c10 20 20 20 20 28 73 63 61 6e 6e 65 72 30 29 29 29      (scanner0)))
16c20 29 0a 20 20 0a 20 20 20 20 3b 20 43 6f 6e 73 75  ).  .    ; Consu
16c30 6d 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  mes the current 
16c40 74 6f 6b 65 6e 2e 0a 20 20 0a 20 20 20 20 28 64  token..  .    (d
16c50 65 66 69 6e 65 20 28 63 6f 6e 73 75 6d 65 2d 74  efine (consume-t
16c60 6f 6b 65 6e 21 29 0a 20 20 20 20 20 20 28 73 65  oken!).      (se
16c70 74 21 20 6e 65 78 74 54 6f 6b 65 6e 49 73 52 65  t! nextTokenIsRe
16c80 61 64 79 20 23 66 29 29 0a 20 20 0a 20 20 20 20  ady #f)).  .    
16c90 3b 20 43 61 6c 6c 65 64 20 62 79 20 74 68 65 20  ; Called by the 
16ca0 6c 65 78 69 63 61 6c 20 61 6e 61 6c 79 7a 65 72  lexical analyzer
16cb0 27 73 20 73 74 61 74 65 20 6d 61 63 68 69 6e 65  's state machine
16cc0 2e 0a 20 20 0a 20 20 20 20 28 64 65 66 69 6e 65  ..  .    (define
16cd0 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 6d   (scannerError m
16ce0 73 67 29 0a 20 20 20 20 20 20 28 64 65 66 69 6e  sg).      (defin
16cf0 65 20 6d 73 67 74 78 74 0a 20 20 20 20 20 20 20  e msgtxt.       
16d00 20 28 63 6f 6e 64 20 28 28 3d 20 6d 73 67 20 65   (cond ((= msg e
16d10 72 72 4c 6f 6e 67 54 6f 6b 65 6e 29 0a 20 20 20  rrLongToken).   
16d20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 6d 61              "Ama
16d30 7a 69 6e 67 6c 79 20 6c 6f 6e 67 20 74 6f 6b 65  zingly long toke
16d40 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  n").            
16d50 20 20 28 28 3d 20 6d 73 67 20 65 72 72 49 6e 63    ((= msg errInc
16d60 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 0a 20 20  ompleteToken).  
16d70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
16d80 63 6f 6d 70 6c 65 74 65 20 6f 72 20 69 6c 6c 65  complete or ille
16d90 67 61 6c 20 74 6f 6b 65 6e 22 29 0a 20 20 20 20  gal token").    
16da0 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 6d 73            ((= ms
16db0 67 20 65 72 72 49 6c 6c 65 67 61 6c 48 65 78 45  g errIllegalHexE
16dc0 73 63 61 70 65 29 0a 20 20 20 20 20 20 20 20 20  scape).         
16dd0 20 20 20 20 20 20 22 49 6c 6c 65 67 61 6c 20 68        "Illegal h
16de0 65 78 20 65 73 63 61 70 65 22 29 0a 20 20 20 20  ex escape").    
16df0 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 6d 73            ((= ms
16e00 67 20 65 72 72 49 6c 6c 65 67 61 6c 4e 61 6d 65  g errIllegalName
16e10 64 43 68 61 72 29 0a 20 20 20 20 20 20 20 20 20  dChar).         
16e20 20 20 20 20 20 20 22 49 6c 6c 65 67 61 6c 20 63        "Illegal c
16e30 68 61 72 61 63 74 65 72 20 73 79 6e 74 61 78 22  haracter syntax"
16e40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16e50 28 28 3d 20 6d 73 67 20 65 72 72 49 6c 6c 65 67  ((= msg errIlleg
16e60 61 6c 53 74 72 69 6e 67 29 0a 20 20 20 20 20 20  alString).      
16e70 20 20 20 20 20 20 20 20 20 22 49 6c 6c 65 67 61           "Illega
16e80 6c 20 73 74 72 69 6e 67 20 73 79 6e 74 61 78 22  l string syntax"
16e90 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16ea0 28 28 3d 20 6d 73 67 20 65 72 72 49 6c 6c 65 67  ((= msg errIlleg
16eb0 61 6c 53 79 6d 62 6f 6c 29 0a 20 20 20 20 20 20  alSymbol).      
16ec0 20 20 20 20 20 20 20 20 20 22 49 6c 6c 65 67 61           "Illega
16ed0 6c 20 73 79 6d 62 6f 6c 20 73 79 6e 74 61 78 22  l symbol syntax"
16ee0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16ef0 28 28 3d 20 6d 73 67 20 65 72 72 53 52 46 49 33  ((= msg errSRFI3
16f00 38 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  8).             
16f10 20 20 22 49 6c 6c 65 67 61 6c 20 53 52 46 49 20    "Illegal SRFI 
16f20 33 38 20 73 79 6e 74 61 78 22 29 0a 20 20 20 20  38 syntax").    
16f30 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 6d 73            ((= ms
16f40 67 20 65 72 72 4e 6f 44 65 6c 69 6d 69 74 65 72  g errNoDelimiter
16f50 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16f60 20 22 4d 69 73 73 69 6e 67 20 64 65 6c 69 6d 69   "Missing delimi
16f70 74 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20  ter").          
16f80 20 20 20 20 28 28 3d 20 6d 73 67 20 65 72 72 4c      ((= msg errL
16f90 65 78 47 65 6e 42 75 67 29 0a 20 20 20 20 20 20  exGenBug).      
16fa0 20 20 20 20 20 20 20 20 20 22 42 75 67 20 69 6e           "Bug in
16fb0 20 6c 65 78 69 63 61 6c 20 61 6e 61 6c 79 7a 65   lexical analyze
16fc0 72 20 28 67 65 6e 65 72 61 74 65 64 29 22 29 0a  r (generated)").
16fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65                (e
16fe0 6c 73 65 20 22 42 75 67 20 69 6e 20 6c 65 78 69  lse "Bug in lexi
16ff0 63 61 6c 20 61 6e 61 6c 79 7a 65 72 22 29 29 29  cal analyzer")))
17000 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63  .      (let* ((c
17010 20 28 73 63 61 6e 43 68 61 72 29 29 0a 20 20 20   (scanChar)).   
17020 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 20            (next 
17030 28 69 66 20 28 63 68 61 72 3f 20 63 29 20 28 73  (if (char? c) (s
17040 74 72 69 6e 67 20 63 29 20 22 22 29 29 0a 20 20  tring c) "")).  
17050 20 20 20 20 20 20 20 20 20 20 20 28 6d 73 67 74             (msgt
17060 78 74 20 28 73 74 72 69 6e 67 2d 61 70 70 65 6e  xt (string-appen
17070 64 20 6d 73 67 74 78 74 0a 20 20 20 20 20 20 20  d msgtxt.       
17080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17090 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 20               ": 
170a0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
170b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
170c0 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67        (substring
170d0 20 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61   string_accumula
170e0 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  tor.            
170f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17110 20 20 20 30 0a 20 20 20 20 20 20 20 20 20 20 20     0.           
17120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17140 20 20 20 20 73 74 72 69 6e 67 5f 61 63 63 75 6d      string_accum
17150 75 6c 61 74 6f 72 5f 6c 65 6e 67 74 68 29 0a 20  ulator_length). 
17160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17180 20 20 20 6e 65 78 74 29 29 29 0a 0a 20 20 20 20     next)))..    
17190 20 20 20 20 3b 20 6d 75 73 74 20 61 76 6f 69 64      ; must avoid
171a0 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 20 6f   infinite loop o
171b0 6e 20 63 75 72 72 65 6e 74 20 69 6e 70 75 74 20  n current input 
171c0 70 6f 72 74 0a 0a 20 20 20 20 20 20 20 20 28 63  port..        (c
171d0 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
171e0 20 20 20 20 28 65 72 72 6f 72 20 27 67 65 74 2d      (error 'get-
171f0 64 61 74 75 6d 0a 20 20 20 20 20 20 20 20 20 20  datum.          
17200 20 20 20 20 20 28 73 74 72 69 6e 67 2d 61 70 70       (string-app
17210 65 6e 64 20 22 4c 65 78 69 63 61 6c 20 45 72 72  end "Lexical Err
17220 6f 72 3a 20 22 20 6d 73 67 74 78 74 20 22 20 22  or: " msgtxt " "
17230 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
17240 20 69 6e 70 75 74 2d 70 6f 72 74 29 29 0a 20 20   input-port)).  
17250 20 20 20 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29      (next-token)
17260 29 0a 20 20 0a 20 20 20 20 3b 20 41 63 63 65 70  ).  .    ; Accep
17270 74 73 20 61 20 74 6f 6b 65 6e 20 6f 66 20 74 68  ts a token of th
17280 65 20 67 69 76 65 6e 20 6b 69 6e 64 2c 20 72 65  e given kind, re
17290 74 75 72 6e 69 6e 67 20 74 68 61 74 20 6b 69 6e  turning that kin
172a0 64 2e 0a 20 20 20 20 3b 0a 20 20 20 20 3b 20 46  d..    ;.    ; F
172b0 6f 72 20 73 6f 6d 65 20 6b 69 6e 64 73 20 6f 66  or some kinds of
172c0 20 74 6f 6b 65 6e 73 2c 20 61 20 76 61 6c 75 65   tokens, a value
172d0 20 66 6f 72 20 74 68 65 20 74 6f 6b 65 6e 20 6d   for the token m
172e0 75 73 74 20 61 6c 73 6f 0a 20 20 20 20 3b 20 62  ust also.    ; b
172f0 65 20 72 65 63 6f 72 64 65 64 20 69 6e 20 74 6f  e recorded in to
17300 6b 65 6e 56 61 6c 75 65 2e 20 20 4d 6f 73 74 20  kenValue.  Most 
17310 6f 66 20 74 68 6f 73 65 20 74 6f 6b 65 6e 73 20  of those tokens 
17320 6d 75 73 74 20 62 65 0a 20 20 20 20 3b 20 66 6f  must be.    ; fo
17330 6c 6c 6f 77 65 64 20 62 79 20 61 20 64 65 6c 69  llowed by a deli
17340 6d 69 74 65 72 2e 0a 20 20 20 20 3b 0a 20 20 20  miter..    ;.   
17350 20 3b 20 53 6f 6d 65 20 6d 61 67 69 63 61 6c 20   ; Some magical 
17360 74 6f 6b 65 6e 73 20 72 65 71 75 69 72 65 20 73  tokens require s
17370 70 65 63 69 61 6c 20 70 72 6f 63 65 73 73 69 6e  pecial processin
17380 67 2e 0a 20 20 0a 20 20 20 20 28 64 65 66 69 6e  g..  .    (defin
17390 65 20 28 61 63 63 65 70 74 20 74 29 0a 20 20 20  e (accept t).   
173a0 20 20 20 28 63 61 73 65 20 74 0a 0a 20 20 20 20     (case t..    
173b0 20 20 20 28 28 63 6f 6d 6d 65 6e 74 29 0a 20 20     ((comment).  
173c0 20 20 20 20 20 20 3b 20 54 68 65 20 74 6f 6b 65        ; The toke
173d0 6e 20 69 73 20 23 7c 2c 20 77 68 69 63 68 20 73  n is #|, which s
173e0 74 61 72 74 73 20 61 20 6e 65 73 74 65 64 20 63  tarts a nested c
173f0 6f 6d 6d 65 6e 74 2e 0a 20 20 20 20 20 20 20 20  omment..        
17400 28 73 63 61 6e 2d 6e 65 73 74 65 64 2d 63 6f 6d  (scan-nested-com
17410 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 28 6e  ment).        (n
17420 65 78 74 2d 74 6f 6b 65 6e 29 29 0a 0a 20 20 20  ext-token))..   
17430 20 20 20 20 28 28 63 6f 6d 6d 65 6e 74 64 61 74      ((commentdat
17440 75 6d 29 0a 20 20 20 20 20 20 20 20 3b 20 54 68  um).        ; Th
17450 65 20 74 6f 6b 65 6e 20 69 73 20 23 3b 20 73 6f  e token is #; so
17460 20 70 61 72 73 65 20 61 6e 64 20 69 67 6e 6f 72   parse and ignor
17470 65 20 74 68 65 20 6e 65 78 74 20 64 61 74 75 6d  e the next datum
17480 2e 0a 20 20 20 20 20 20 20 20 28 70 61 72 73 65  ..        (parse
17490 2d 64 61 74 75 6d 29 0a 20 20 20 20 20 20 20 20  -datum).        
174a0 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 29 0a 0a 20  (next-token)).. 
174b0 20 20 20 20 20 20 28 28 69 64 20 62 6f 6f 6c 65        ((id boole
174c0 61 6e 20 6e 75 6d 62 65 72 20 63 68 61 72 61 63  an number charac
174d0 74 65 72 20 73 74 72 69 6e 67 20 6d 69 73 63 66  ter string miscf
174e0 6c 61 67 20 70 65 72 69 6f 64 0a 20 20 20 20 20  lag period.     
174f0 20 20 20 20 73 68 61 72 69 6e 67 64 65 66 20 73      sharingdef s
17500 68 61 72 69 6e 67 75 73 65 29 0a 0a 20 20 20 20  haringuse)..    
17510 20 20 20 20 28 73 65 74 21 20 74 6f 6b 65 6e 56      (set! tokenV
17520 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20  alue.           
17530 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 74     (substring st
17540 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72  ring_accumulator
17550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17560 20 20 20 20 20 20 20 20 20 20 30 20 73 74 72 69            0 stri
17570 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72 5f 6c  ng_accumulator_l
17580 65 6e 67 74 68 29 29 0a 0a 20 20 20 20 20 20 20  ength))..       
17590 20 28 63 6f 6e 64 20 28 28 61 6e 64 20 28 65 71   (cond ((and (eq
175a0 3f 20 74 20 27 6d 69 73 63 66 6c 61 67 29 0a 20  ? t 'miscflag). 
175b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175c0 20 20 20 28 73 74 72 69 6e 67 3d 3f 20 74 6f 6b     (string=? tok
175d0 65 6e 56 61 6c 75 65 20 22 23 21 72 36 72 73 22  enValue "#!r6rs"
175e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
175f0 20 20 28 6e 65 78 74 2d 74 6f 6b 65 6e 29 29 0a    (next-token)).
17600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
17610 28 6f 72 20 28 64 65 6c 69 6d 69 74 65 72 3f 20  (or (delimiter? 
17620 28 73 63 61 6e 43 68 61 72 29 29 0a 20 20 20 20  (scanChar)).    
17630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
17640 65 71 3f 20 74 20 27 73 74 72 69 6e 67 29 0a 20  eq? t 'string). 
17650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17660 20 20 28 65 71 3f 20 74 20 27 73 68 61 72 69 6e    (eq? t 'sharin
17670 67 64 65 66 29 20 20 20 20 20 20 20 20 20 20 20  gdef)           
17680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17690 20 20 20 20 20 3b 20 53 52 46 49 20 33 38 0a 20       ; SRFI 38. 
176a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
176b0 20 20 28 65 71 3f 20 74 20 27 73 68 61 72 69 6e    (eq? t 'sharin
176c0 67 75 73 65 29 29 20 20 20 20 20 20 20 20 20 20  guse))          
176d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
176e0 20 20 20 20 20 3b 20 53 52 46 49 20 33 38 0a 20       ; SRFI 38. 
176f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73                (s
17700 65 74 21 20 6b 69 6e 64 4f 66 4e 65 78 74 54 6f  et! kindOfNextTo
17710 6b 65 6e 20 74 29 0a 20 20 20 20 20 20 20 20 20  ken t).         
17720 20 20 20 20 20 20 28 73 65 74 21 20 6e 65 78 74        (set! next
17730 54 6f 6b 65 6e 49 73 52 65 61 64 79 20 23 74 29  TokenIsReady #t)
17740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17750 74 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
17760 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20    (else.        
17770 20 20 20 20 20 20 20 28 73 63 61 6e 6e 65 72 45         (scannerE
17780 72 72 6f 72 20 65 72 72 4e 6f 44 65 6c 69 6d 69  rror errNoDelimi
17790 74 65 72 29 29 29 29 0a 0a 20 20 20 20 20 20 20  ter))))..       
177a0 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20 28 73  (else.        (s
177b0 65 74 21 20 6b 69 6e 64 4f 66 4e 65 78 74 54 6f  et! kindOfNextTo
177c0 6b 65 6e 20 74 29 0a 20 20 20 20 20 20 20 20 28  ken t).        (
177d0 73 65 74 21 20 6e 65 78 74 54 6f 6b 65 6e 49 73  set! nextTokenIs
177e0 52 65 61 64 79 20 23 74 29 0a 20 20 20 20 20 20  Ready #t).      
177f0 20 20 74 29 29 29 0a 0a 20 20 20 20 3b 20 48 61    t)))..    ; Ha
17800 76 69 6e 67 20 73 65 65 6e 20 61 20 23 7c 20 74  ving seen a #| t
17810 6f 6b 65 6e 2c 20 73 63 61 6e 73 20 61 6e 64 20  oken, scans and 
17820 64 69 73 63 61 72 64 73 20 74 68 65 20 65 6e 74  discards the ent
17830 69 72 65 20 63 6f 6d 6d 65 6e 74 2e 0a 0a 20 20  ire comment...  
17840 20 20 28 64 65 66 69 6e 65 20 28 73 63 61 6e 2d    (define (scan-
17850 6e 65 73 74 65 64 2d 63 6f 6d 6d 65 6e 74 29 0a  nested-comment).
17860 20 20 20 20 20 20 28 64 65 66 69 6e 65 20 28 6c        (define (l
17870 6f 6f 70 20 64 65 70 74 68 29 0a 20 20 20 20 20  oop depth).     
17880 20 20 20 28 6c 65 74 20 28 28 63 20 28 73 63 61     (let ((c (sca
17890 6e 43 68 61 72 29 29 29 0a 20 20 20 20 20 20 20  nChar))).       
178a0 20 20 20 28 63 6f 6e 64 20 28 28 3d 20 64 65 70     (cond ((= dep
178b0 74 68 20 30 29 20 23 74 29 0a 20 20 20 20 20 20  th 0) #t).      
178c0 20 20 20 20 20 20 20 20 20 20 28 28 65 6f 66 2d            ((eof-
178d0 6f 62 6a 65 63 74 3f 20 63 29 0a 20 20 20 20 20  object? c).     
178e0 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 61              (sca
178f0 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6e 63  nnerError errInc
17900 6f 6d 70 6c 65 74 65 54 6f 6b 65 6e 29 29 0a 20  ompleteToken)). 
17910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
17920 28 63 68 61 72 3d 3f 20 63 20 23 5c 23 29 0a 20  (char=? c #\#). 
17930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17940 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20  (consumeChar).  
17950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
17960 69 66 20 28 63 68 61 72 3d 3f 20 28 73 63 61 6e  if (char=? (scan
17970 43 68 61 72 29 20 23 5c 7c 29 0a 20 20 20 20 20  Char) #\|).     
17980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17990 28 62 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 43  (begin (consumeC
179a0 68 61 72 29 20 28 6c 6f 6f 70 20 28 2b 20 64 65  har) (loop (+ de
179b0 70 74 68 20 31 29 29 29 0a 20 20 20 20 20 20 20  pth 1))).       
179c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
179d0 6f 6f 70 20 64 65 70 74 68 29 29 29 0a 20 20 20  oop depth))).   
179e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 63               ((c
179f0 68 61 72 3d 3f 20 63 20 23 5c 7c 29 0a 20 20 20  har=? c #\|).   
17a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
17a10 6f 6e 73 75 6d 65 43 68 61 72 29 0a 20 20 20 20  onsumeChar).    
17a20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66               (if
17a30 20 28 63 68 61 72 3d 3f 20 28 73 63 61 6e 43 68   (char=? (scanCh
17a40 61 72 29 20 23 5c 23 29 0a 20 20 20 20 20 20 20  ar) #\#).       
17a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62                (b
17a60 65 67 69 6e 20 28 63 6f 6e 73 75 6d 65 43 68 61  egin (consumeCha
17a70 72 29 20 28 6c 6f 6f 70 20 28 2d 20 64 65 70 74  r) (loop (- dept
17a80 68 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20  h 1))).         
17a90 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f              (loo
17aa0 70 20 64 65 70 74 68 29 29 29 0a 20 20 20 20 20  p depth))).     
17ab0 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 73 65             (else
17ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17ad0 20 20 28 63 6f 6e 73 75 6d 65 43 68 61 72 29 0a    (consumeChar).
17ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17af0 20 28 6c 6f 6f 70 20 64 65 70 74 68 29 29 29 29   (loop depth))))
17b00 29 0a 20 20 20 20 20 20 28 6c 6f 6f 70 20 31 29  ).      (loop 1)
17b10 29 0a 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b  )..    ;;;;;;;;;
17b20 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17b30 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17b40 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17b50 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
17b60 20 20 3b 20 43 68 61 72 61 63 74 65 72 20 69 2f    ; Character i/
17b70 6f 2c 20 73 6f 20 74 6f 20 73 70 65 61 6b 2e 0a  o, so to speak..
17b80 20 20 20 20 3b 20 55 73 65 73 20 74 68 65 20 69      ; Uses the i
17b90 6e 70 75 74 2d 70 6f 72 74 20 61 73 20 69 6e 70  nput-port as inp
17ba0 75 74 2e 0a 20 20 20 20 3b 0a 20 20 20 20 3b 3b  ut..    ;.    ;;
17bb0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17bc0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17bd0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17be0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 20  ;;;;;;;;;;;;;;. 
17bf0 20 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 73   .    (define (s
17c00 63 61 6e 43 68 61 72 29 0a 20 20 20 20 20 20 28  canChar).      (
17c10 70 65 65 6b 2d 63 68 61 72 20 69 6e 70 75 74 2d  peek-char input-
17c20 70 6f 72 74 29 29 0a 0a 20 20 20 20 3b 20 43 6f  port))..    ; Co
17c30 6e 73 75 6d 65 73 20 74 68 65 20 63 75 72 72 65  nsumes the curre
17c40 6e 74 20 63 68 61 72 61 63 74 65 72 2e 20 20 52  nt character.  R
17c50 65 74 75 72 6e 73 20 75 6e 73 70 65 63 69 66 69  eturns unspecifi
17c60 65 64 20 76 61 6c 75 65 73 2e 0a 20 20 0a 20 20  ed values..  .  
17c70 20 20 28 64 65 66 69 6e 65 20 28 63 6f 6e 73 75    (define (consu
17c80 6d 65 43 68 61 72 29 0a 20 20 20 20 20 20 28 69  meChar).      (i
17c90 66 20 28 3c 20 73 74 72 69 6e 67 5f 61 63 63 75  f (< string_accu
17ca0 6d 75 6c 61 74 6f 72 5f 6c 65 6e 67 74 68 20 28  mulator_length (
17cb0 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73 74  string-length st
17cc0 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72  ring_accumulator
17cd0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65  )).          (le
17ce0 74 20 28 28 63 20 28 72 65 61 64 2d 63 68 61 72  t ((c (read-char
17cf0 20 69 6e 70 75 74 2d 70 6f 72 74 29 29 29 0a 20   input-port))). 
17d00 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28             (if (
17d10 63 68 61 72 3f 20 63 29 0a 20 20 20 20 20 20 20  char? c).       
17d20 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 0a           (begin.
17d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17d40 20 28 73 74 72 69 6e 67 2d 73 65 74 21 20 73 74   (string-set! st
17d50 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72  ring_accumulator
17d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
17d80 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61 74 6f  tring_accumulato
17d90 72 5f 6c 65 6e 67 74 68 0a 20 20 20 20 20 20 20  r_length.       
17da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17db0 20 20 20 20 20 20 20 63 29 0a 20 20 20 20 20 20         c).      
17dc0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21             (set!
17dd0 20 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61   string_accumula
17de0 74 6f 72 5f 6c 65 6e 67 74 68 0a 20 20 20 20 20  tor_length.     
17df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e00 20 20 28 2b 20 73 74 72 69 6e 67 5f 61 63 63 75    (+ string_accu
17e10 6d 75 6c 61 74 6f 72 5f 6c 65 6e 67 74 68 20 31  mulator_length 1
17e20 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  ))))).          
17e30 28 62 65 67 69 6e 20 28 65 78 70 61 6e 64 2d 61  (begin (expand-a
17e40 63 63 75 6d 75 6c 61 74 6f 72 29 20 28 63 6f 6e  ccumulator) (con
17e50 73 75 6d 65 43 68 61 72 29 29 29 29 0a 0a 20 20  sumeChar))))..  
17e60 20 20 3b 20 44 6f 75 62 6c 65 73 20 74 68 65 20    ; Doubles the 
17e70 73 69 7a 65 20 6f 66 20 73 74 72 69 6e 67 5f 61  size of string_a
17e80 63 63 75 6d 75 6c 61 74 6f 72 20 77 68 69 6c 65  ccumulator while
17e90 0a 20 20 20 20 3b 20 70 72 65 73 65 72 76 69 6e  .    ; preservin
17ea0 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e 0a  g its contents..
17eb0 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 65 78  .    (define (ex
17ec0 70 61 6e 64 2d 61 63 63 75 6d 75 6c 61 74 6f 72  pand-accumulator
17ed0 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28  ).      (let* ((
17ee0 6e 20 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68  n (string-length
17ef0 20 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61   string_accumula
17f00 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20  tor)).          
17f10 20 20 20 28 6e 65 77 20 28 6d 61 6b 65 2d 73 74     (new (make-st
17f20 72 69 6e 67 20 28 2a 20 32 20 6e 29 29 29 29 0a  ring (* 2 n)))).
17f30 20 20 20 20 20 20 20 20 28 64 6f 20 28 28 69 20          (do ((i 
17f40 30 20 28 2b 20 69 20 31 29 29 29 0a 20 20 20 20  0 (+ i 1))).    
17f50 20 20 20 20 20 20 20 20 28 28 3d 20 69 20 6e 29          ((= i n)
17f60 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 74 72  ).          (str
17f70 69 6e 67 2d 73 65 74 21 20 6e 65 77 20 69 20 28  ing-set! new i (
17f80 73 74 72 69 6e 67 2d 72 65 66 20 73 74 72 69 6e  string-ref strin
17f90 67 5f 61 63 63 75 6d 75 6c 61 74 6f 72 20 69 29  g_accumulator i)
17fa0 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 21  )).        (set!
17fb0 20 73 74 72 69 6e 67 5f 61 63 63 75 6d 75 6c 61   string_accumula
17fc0 74 6f 72 20 6e 65 77 29 29 29 0a 0a 20 20 20 20  tor new)))..    
17fd0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17fe0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
17ff0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18000 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18010 0a 20 20 20 20 3b 0a 20 20 20 20 3b 20 4d 69 73  .    ;.    ; Mis
18020 63 65 6c 6c 61 6e 65 6f 75 73 20 75 74 69 6c 69  cellaneous utili
18030 74 79 20 72 6f 75 74 69 6e 65 73 2e 0a 20 20 20  ty routines..   
18040 20 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b   ;.    ;;;;;;;;;
18050 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18060 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18070 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18080 3b 3b 3b 3b 3b 3b 3b 0a 0a 20 20 20 20 3b 20 44  ;;;;;;;..    ; D
18090 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
180a0 72 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 69  r its argument i
180b0 73 20 61 20 3c 64 65 6c 69 6d 69 74 65 72 3e 2e  s a <delimiter>.
180c0 0a 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 64  ..    (define (d
180d0 65 6c 69 6d 69 74 65 72 3f 20 63 29 0a 20 20 20  elimiter? c).   
180e0 20 20 20 28 63 61 73 65 20 63 0a 20 20 20 20 20     (case c.     
180f0 20 20 28 28 23 5c 28 20 23 5c 29 20 23 5c 5b 20    ((#\( #\) #\[ 
18100 23 5c 5d 20 23 5c 22 20 23 5c 3b 20 23 5c 23 29  #\] #\" #\; #\#)
18110 0a 20 20 20 20 20 20 20 20 23 74 29 0a 20 20 20  .        #t).   
18120 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20      (else.      
18130 20 20 28 6f 72 20 28 6e 6f 74 20 28 63 68 61 72    (or (not (char
18140 3f 20 63 29 29 0a 20 20 20 20 20 20 20 20 20 20  ? c)).          
18150 20 20 28 63 68 61 72 2d 77 68 69 74 65 73 70 61    (char-whitespa
18160 63 65 3f 20 63 29 29 29 29 29 20 20 20 20 20 20  ce? c)))))      
18170 20 20 20 0a 0a 20 20 20 20 3b 20 47 69 76 65 6e     ..    ; Given
18180 20 74 68 65 20 69 6e 74 65 67 65 72 20 70 61 72   the integer par
18190 73 65 64 20 66 72 6f 6d 20 61 20 68 65 78 20 65  sed from a hex e
181a0 73 63 61 70 65 2c 0a 20 20 20 20 3b 20 72 65 74  scape,.    ; ret
181b0 75 72 6e 73 20 74 68 65 20 63 6f 72 72 65 73 70  urns the corresp
181c0 6f 6e 64 69 6e 67 20 55 6e 69 63 6f 64 65 20 63  onding Unicode c
181d0 68 61 72 61 63 74 65 72 2e 0a 0a 20 20 20 20 28  haracter...    (
181e0 64 65 66 69 6e 65 20 28 63 68 65 63 6b 65 64 2d  define (checked-
181f0 69 6e 74 65 67 65 72 2d 3e 63 68 61 72 20 6e 29  integer->char n)
18200 0a 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28  .      (if (or (
18210 3c 20 6e 20 23 78 64 38 30 30 29 0a 20 20 20 20  < n #xd800).    
18220 20 20 20 20 20 20 20 20 20 20 28 3c 3d 20 23 78            (<= #x
18230 65 30 30 30 20 6e 20 23 78 31 30 66 66 66 66 29  e000 n #x10ffff)
18240 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 74  ).          (int
18250 65 67 65 72 2d 3e 63 68 61 72 20 6e 29 0a 20 20  eger->char n).  
18260 20 20 20 20 20 20 20 20 28 73 63 61 6e 6e 65 72          (scanner
18270 45 72 72 6f 72 20 65 72 72 49 6c 6c 65 67 61 6c  Error errIllegal
18280 48 65 78 45 73 63 61 70 65 29 29 29 0a 0a 20 20  HexEscape)))..  
18290 20 20 3b 20 47 69 76 65 6e 20 61 20 73 74 72 69    ; Given a stri
182a0 6e 67 20 61 6e 64 20 74 68 65 20 69 6e 64 65 78  ng and the index
182b0 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e   at the beginnin
182c0 67 20 6f 66 20 6e 6f 6e 65 6d 70 74 79 0a 20 20  g of nonempty.  
182d0 20 20 3b 20 73 65 71 75 65 6e 63 65 20 6f 66 20    ; sequence of 
182e0 68 65 78 61 64 65 63 69 6d 61 6c 20 63 68 61 72  hexadecimal char
182f0 61 63 74 65 72 73 20 66 6f 6c 6c 6f 77 65 64 20  acters followed 
18300 62 79 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2c 0a  by a semicolon,.
18310 20 20 20 20 3b 20 72 65 74 75 72 6e 73 20 74 77      ; returns tw
18320 6f 20 76 61 6c 75 65 73 3a 0a 20 20 20 20 3b 20  o values:.    ; 
18330 20 20 20 20 74 68 65 20 6e 75 6d 65 72 69 63 61      the numerica
18340 6c 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 68  l value of the h
18350 65 78 20 63 68 61 72 61 63 74 65 72 73 0a 20 20  ex characters.  
18360 20 20 3b 20 20 20 20 20 74 68 65 20 69 6e 64 65    ;     the inde
18370 78 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20  x following the 
18380 73 65 6d 69 63 6f 6c 6f 6e 0a 0a 20 20 20 20 28  semicolon..    (
18390 64 65 66 69 6e 65 20 28 68 65 78 2d 65 73 63 61  define (hex-esca
183a0 70 65 20 73 20 69 29 0a 20 20 20 20 20 20 28 6c  pe s i).      (l
183b0 65 74 20 28 28 6e 20 28 73 74 72 69 6e 67 2d 6c  et ((n (string-l
183c0 65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 20  ength s))).     
183d0 20 20 20 28 64 65 66 69 6e 65 20 28 6c 6f 6f 70     (define (loop
183e0 20 69 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20   i val).        
183f0 20 20 28 69 66 20 28 3e 3d 20 69 20 6e 29 0a 20    (if (>= i n). 
18400 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63               (sc
18410 61 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6c  annerError errIl
18420 6c 65 67 61 6c 48 65 78 45 73 63 61 70 65 29 0a  legalHexEscape).
18430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
18440 65 74 20 28 28 63 20 28 73 74 72 69 6e 67 2d 72  et ((c (string-r
18450 65 66 20 73 20 69 29 29 29 0a 20 20 20 20 20 20  ef s i))).      
18460 20 20 20 20 20 20 20 20 20 20 28 63 61 73 65 20            (case 
18470 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  c.              
18480 20 20 20 28 28 23 5c 30 20 23 5c 31 20 23 5c 32     ((#\0 #\1 #\2
18490 20 23 5c 33 20 23 5c 34 20 23 5c 35 20 23 5c 36   #\3 #\4 #\5 #\6
184a0 20 23 5c 37 20 23 5c 38 20 23 5c 39 29 0a 20 20   #\7 #\8 #\9).  
184b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184c0 28 6c 6f 6f 70 20 28 2b 20 69 20 31 29 0a 20 20  (loop (+ i 1).  
184d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184e0 20 20 20 20 20 20 28 2b 20 28 2a 20 31 36 20 76        (+ (* 16 v
184f0 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  al).            
18500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
18510 2d 20 28 63 68 61 72 2d 3e 69 6e 74 65 67 65 72  - (char->integer
18520 20 63 29 20 28 63 68 61 72 2d 3e 69 6e 74 65 67   c) (char->integ
18530 65 72 20 23 5c 30 29 29 29 29 29 0a 20 20 20 20  er #\0))))).    
18540 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23               ((#
18550 5c 61 20 23 5c 62 20 23 5c 63 20 23 5c 64 20 23  \a #\b #\c #\d #
18560 5c 65 20 23 5c 66 29 0a 20 20 20 20 20 20 20 20  \e #\f).        
18570 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20            (loop 
18580 28 2b 20 69 20 31 29 0a 20 20 20 20 20 20 20 20  (+ i 1).        
18590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185a0 28 2b 20 28 2a 20 31 36 20 76 61 6c 29 0a 20 20  (+ (* 16 val).  
185b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185c0 20 20 20 20 20 20 20 20 20 31 30 0a 20 20 20 20           10.    
185d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185e0 20 20 20 20 20 20 20 28 2d 20 28 63 68 61 72 2d         (- (char-
185f0 3e 69 6e 74 65 67 65 72 20 63 29 20 28 63 68 61  >integer c) (cha
18600 72 2d 3e 69 6e 74 65 67 65 72 20 23 5c 61 29 29  r->integer #\a))
18610 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
18620 20 20 20 20 20 28 28 23 5c 41 20 23 5c 42 20 23       ((#\A #\B #
18630 5c 43 20 23 5c 44 20 23 5c 45 20 23 5c 46 29 0a  \C #\D #\E #\F).
18640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18650 20 20 28 6c 6f 6f 70 20 28 2b 20 69 20 31 29 0a    (loop (+ i 1).
18660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18670 20 20 20 20 20 20 20 20 28 2b 20 28 2a 20 31 36          (+ (* 16
18680 20 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20   val).          
18690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186a0 20 31 30 0a 20 20 20 20 20 20 20 20 20 20 20 20   10.            
186b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
186c0 2d 20 28 63 68 61 72 2d 3e 69 6e 74 65 67 65 72  - (char->integer
186d0 20 63 29 20 28 63 68 61 72 2d 3e 69 6e 74 65 67   c) (char->integ
186e0 65 72 20 23 5c 41 29 29 29 29 29 0a 20 20 20 20  er #\A))))).    
186f0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23               ((#
18700 5c 3b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  \;).            
18710 20 20 20 20 20 20 28 76 61 6c 75 65 73 20 76 61        (values va
18720 6c 20 28 2b 20 69 20 31 29 29 29 0a 20 20 20 20  l (+ i 1))).    
18730 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c               (el
18740 73 65 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72  se (scannerError
18750 20 65 72 72 49 6c 6c 65 67 61 6c 48 65 78 45 73   errIllegalHexEs
18760 63 61 70 65 29 29 29 29 29 29 0a 20 20 20 20 20  cape)))))).     
18770 20 20 20 28 6c 6f 6f 70 20 69 20 30 29 29 29 0a     (loop i 0))).
18780 20 20 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b    .    ;;;;;;;;;
18790 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
187a0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
187b0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
187c0 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
187d0 20 20 3b 20 41 63 74 69 6f 6e 20 70 72 6f 63 65    ; Action proce
187e0 64 75 72 65 73 20 63 61 6c 6c 65 64 20 62 79 20  dures called by 
187f0 74 68 65 20 70 61 72 73 65 72 2e 0a 20 20 20 20  the parser..    
18800 3b 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;.    ;;;;;;;;;;
18810 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18820 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18830 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18840 3b 3b 3b 3b 3b 3b 0a 0a 20 20 20 20 3b 20 48 6f  ;;;;;;..    ; Ho
18850 6f 6b 20 66 6f 72 20 72 65 63 6f 72 64 69 6e 67  ok for recording
18860 20 73 6f 75 72 63 65 20 6c 6f 63 61 74 69 6f 6e   source location
18870 73 2e 0a 20 20 20 20 3b 20 43 61 6c 6c 65 64 20  s..    ; Called 
18880 62 79 20 73 6f 6d 65 20 61 63 74 69 6f 6e 20 72  by some action r
18890 6f 75 74 69 6e 65 73 2e 0a 0a 20 20 20 20 28 64  outines...    (d
188a0 65 66 69 6e 65 20 28 72 65 63 6f 72 64 2d 73 6f  efine (record-so
188b0 75 72 63 65 2d 6c 6f 63 61 74 69 6f 6e 20 78 20  urce-location x 
188c0 6c 6f 63 29 20 78 29 0a 0a 20 20 20 20 3b 3b 3b  loc) x)..    ;;;
188d0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
188e0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
188f0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
18900 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 0a 20  ;;;;;;;;;;;;;.. 
18910 20 20 20 28 64 65 66 69 6e 65 20 28 65 6d 70 74     (define (empt
18920 79 4c 69 73 74 29 20 27 28 29 29 0a 20 20 0a 20  yList) '()).  . 
18930 20 20 20 28 64 65 66 69 6e 65 20 28 69 64 65 6e     (define (iden
18940 74 69 74 79 20 78 29 20 78 29 0a 0a 20 20 20 20  tity x) x)..    
18950 28 64 65 66 69 6e 65 20 28 6c 69 73 74 32 62 79  (define (list2by
18960 74 65 76 65 63 74 6f 72 20 6f 63 74 65 74 73 29  tevector octets)
18970 20 28 75 38 2d 6c 69 73 74 2d 3e 62 79 74 65 76   (u8-list->bytev
18980 65 63 74 6f 72 20 6f 63 74 65 74 73 29 29 0a 0a  ector octets))..
18990 20 20 20 20 28 64 65 66 69 6e 65 20 28 6c 69 73      (define (lis
189a0 74 32 76 65 63 74 6f 72 20 76 61 6c 73 29 20 28  t2vector vals) (
189b0 6c 69 73 74 2d 3e 76 65 63 74 6f 72 20 76 61 6c  list->vector val
189c0 73 29 29 0a 20 20 0a 20 20 20 20 28 64 65 66 69  s)).  .    (defi
189d0 6e 65 20 28 6d 61 6b 65 42 6f 6f 6c 29 0a 20 20  ne (makeBool).  
189e0 20 20 20 20 28 6c 65 74 20 28 28 78 20 28 63 61      (let ((x (ca
189f0 73 65 20 28 73 74 72 69 6e 67 2d 72 65 66 20 74  se (string-ref t
18a00 6f 6b 65 6e 56 61 6c 75 65 20 31 29 0a 20 20 20  okenValue 1).   
18a10 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23               ((#
18a20 5c 74 20 23 5c 54 29 20 23 74 29 0a 20 20 20 20  \t #\T) #t).    
18a30 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23 5c              ((#\
18a40 66 20 23 5c 46 29 20 23 66 29 0a 20 20 20 20 20  f #\F) #f).     
18a50 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 73 65             (else
18a60 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65   (scannerError e
18a70 72 72 42 75 67 29 29 29 29 29 0a 20 20 20 20 20  rrBug))))).     
18a80 20 20 20 28 72 65 63 6f 72 64 2d 73 6f 75 72 63     (record-sourc
18a90 65 2d 6c 6f 63 61 74 69 6f 6e 20 78 20 6c 6f 63  e-location x loc
18aa0 61 74 69 6f 6e 53 74 61 72 74 29 29 29 0a 20 20  ationStart))).  
18ab0 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 6d 61  .    (define (ma
18ac0 6b 65 43 68 61 72 29 0a 20 20 20 20 20 20 28 6c  keChar).      (l
18ad0 65 74 2a 20 28 28 6e 20 28 73 74 72 69 6e 67 2d  et* ((n (string-
18ae0 6c 65 6e 67 74 68 20 74 6f 6b 65 6e 56 61 6c 75  length tokenValu
18af0 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)).            
18b00 20 28 78 20 28 63 6f 6e 64 20 28 28 3d 20 6e 20   (x (cond ((= n 
18b10 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  3).             
18b20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e            (strin
18b30 67 2d 72 65 66 20 74 6f 6b 65 6e 56 61 6c 75 65  g-ref tokenValue
18b40 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   2)).           
18b50 20 20 20 20 20 20 20 20 20 20 20 28 28 63 68 61             ((cha
18b60 72 3d 3f 20 23 5c 78 20 28 73 74 72 69 6e 67 2d  r=? #\x (string-
18b70 72 65 66 20 74 6f 6b 65 6e 56 61 6c 75 65 20 32  ref tokenValue 2
18b80 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
18b90 20 20 20 20 20 20 20 20 20 20 28 63 68 65 63 6b            (check
18ba0 65 64 2d 69 6e 74 65 67 65 72 2d 3e 63 68 61 72  ed-integer->char
18bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18bc0 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67           (string
18bd0 2d 3e 6e 75 6d 62 65 72 20 28 73 75 62 73 74 72  ->number (substr
18be0 69 6e 67 20 74 6f 6b 65 6e 56 61 6c 75 65 20 33  ing tokenValue 3
18bf0 20 6e 29 20 31 36 29 29 29 0a 20 20 20 20 20 20   n) 16))).      
18c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c10 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20  (else.          
18c20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65               (le
18c30 74 2a 20 28 28 73 20 28 73 75 62 73 74 72 69 6e  t* ((s (substrin
18c40 67 20 74 6f 6b 65 6e 56 61 6c 75 65 20 32 20 6e  g tokenValue 2 n
18c50 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
18c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c70 20 28 73 79 6d 20 28 73 74 72 69 6e 67 2d 3e 73   (sym (string->s
18c80 79 6d 62 6f 6c 20 73 29 29 29 0a 20 20 20 20 20  ymbol s))).     
18c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ca0 20 20 20 20 28 63 61 73 65 20 73 79 6d 0a 20 20      (case sym.  
18cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18cc0 20 20 20 20 20 20 20 20 28 28 6e 75 6c 29 20 20          ((nul)  
18cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 23 5c 6e               #\n
18ce0 75 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ul).            
18cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28                ((
18d00 61 6c 61 72 6d 29 20 20 20 20 20 20 20 20 20 20  alarm)          
18d10 20 20 20 23 5c 61 6c 61 72 6d 29 0a 20 20 20 20     #\alarm).    
18d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d30 20 20 20 20 20 20 28 28 62 61 63 6b 73 70 61 63        ((backspac
18d40 65 29 20 20 20 20 20 20 20 20 20 23 5c 62 61 63  e)         #\bac
18d50 6b 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 20  kspace).        
18d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d70 20 20 28 28 74 61 62 29 20 20 20 20 20 20 20 20    ((tab)        
18d80 20 20 20 20 20 20 20 23 5c 74 61 62 29 0a 20 20         #\tab).  
18d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18da0 20 20 20 20 20 20 20 20 28 28 6c 69 6e 65 66 65          ((linefe
18db0 65 64 20 6e 65 77 6c 69 6e 65 29 20 20 23 5c 6c  ed newline)  #\l
18dc0 69 6e 65 66 65 65 64 29 0a 20 20 20 20 20 20 20  inefeed).       
18dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18de0 20 20 20 28 28 76 74 61 62 29 20 20 20 20 20 20     ((vtab)      
18df0 20 20 20 20 20 20 20 20 23 5c 76 74 61 62 29 0a          #\vtab).
18e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e10 20 20 20 20 20 20 20 20 20 20 28 28 70 61 67 65            ((page
18e20 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23  )              #
18e30 5c 70 61 67 65 29 0a 20 20 20 20 20 20 20 20 20  \page).         
18e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e50 20 28 28 72 65 74 75 72 6e 29 20 20 20 20 20 20   ((return)      
18e60 20 20 20 20 20 20 23 5c 72 65 74 75 72 6e 29 0a        #\return).
18e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e80 20 20 20 20 20 20 20 20 20 20 28 28 65 73 63 29            ((esc)
18e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                 #
18ea0 5c 65 73 63 29 0a 20 20 20 20 20 20 20 20 20 20  \esc).          
18eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ec0 28 28 73 70 61 63 65 29 20 20 20 20 20 20 20 20  ((space)        
18ed0 20 20 20 20 20 23 5c 73 70 61 63 65 29 0a 20 20       #\space).  
18ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ef0 20 20 20 20 20 20 20 20 28 28 64 65 6c 65 74 65          ((delete
18f00 29 20 20 20 20 20 20 20 20 20 20 20 20 23 5c 64  )            #\d
18f10 65 6c 65 74 65 29 0a 20 20 20 20 20 20 20 20 20  elete).         
18f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f30 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20   (else.         
18f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f50 20 20 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20    (scannerError 
18f60 65 72 72 49 6c 6c 65 67 61 6c 4e 61 6d 65 64 43  errIllegalNamedC
18f70 68 61 72 29 29 29 29 29 29 29 29 0a 20 20 20 20  har)))))))).    
18f80 20 20 20 20 28 72 65 63 6f 72 64 2d 73 6f 75 72      (record-sour
18f90 63 65 2d 6c 6f 63 61 74 69 6f 6e 20 78 20 6c 6f  ce-location x lo
18fa0 63 61 74 69 6f 6e 53 74 61 72 74 29 29 29 0a 0a  cationStart)))..
18fb0 20 20 20 20 28 64 65 66 69 6e 65 20 28 6d 61 6b      (define (mak
18fc0 65 45 4f 46 29 20 28 65 6f 66 2d 6f 62 6a 65 63  eEOF) (eof-objec
18fd0 74 29 29 0a 0a 20 20 20 20 28 64 65 66 69 6e 65  t))..    (define
18fe0 20 28 6d 61 6b 65 46 6c 61 67 29 0a 0a 20 20 20   (makeFlag)..   
18ff0 20 20 20 3b 20 54 68 65 20 64 72 61 66 74 20 52     ; The draft R
19000 36 52 53 20 61 6c 6c 6f 77 73 20 69 6d 70 6c 65  6RS allows imple
19010 6d 65 6e 74 61 74 69 6f 6e 2d 73 70 65 63 69 66  mentation-specif
19020 69 63 20 65 78 74 65 6e 73 69 6f 6e 73 0a 20 20  ic extensions.  
19030 20 20 20 20 3b 20 6f 66 20 74 68 65 20 66 6f 72      ; of the for
19040 6d 20 23 21 2e 2e 2e 2c 20 77 68 69 63 68 20 61  m #!..., which a
19050 72 65 20 70 72 6f 63 65 73 73 65 64 20 68 65 72  re processed her
19060 65 2e 0a 20 20 20 20 20 20 3b 20 4e 6f 74 65 20  e..      ; Note 
19070 74 68 61 74 20 74 68 65 20 23 21 72 36 72 73 20  that the #!r6rs 
19080 66 6c 61 67 20 69 73 20 61 20 63 6f 6d 6d 65 6e  flag is a commen
19090 74 2c 20 68 61 6e 64 6c 65 64 20 62 79 20 61 63  t, handled by ac
190a0 63 65 70 74 2c 0a 20 20 20 20 20 20 3b 20 73 6f  cept,.      ; so
190b0 20 74 68 61 74 20 66 6c 61 67 20 77 69 6c 6c 20   that flag will 
190c0 6e 65 76 65 72 20 62 65 20 73 65 65 6e 20 68 65  never be seen he
190d0 72 65 2e 0a 0a 20 20 20 20 20 20 28 61 63 63 65  re...      (acce
190e0 70 74 20 27 6d 69 73 63 66 6c 61 67 29 0a 20 20  pt 'miscflag).  
190f0 20 20 20 20 28 70 61 72 73 65 2d 65 72 72 6f 72      (parse-error
19100 20 27 3c 6d 69 73 63 66 6c 61 67 3e 20 27 28 6d   '<miscflag> '(m
19110 69 73 63 66 6c 61 67 29 29 29 0a 20 20 0a 20 20  iscflag))).  .  
19120 20 20 28 64 65 66 69 6e 65 20 28 6d 61 6b 65 4e    (define (makeN
19130 75 6d 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28  um).      (let (
19140 28 78 20 28 73 74 72 69 6e 67 2d 3e 6e 75 6d 62  (x (string->numb
19150 65 72 20 74 6f 6b 65 6e 56 61 6c 75 65 29 29 29  er tokenValue)))
19160 0a 20 20 20 20 20 20 20 20 28 69 66 20 78 0a 20  .        (if x. 
19170 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 6f             (reco
19180 72 64 2d 73 6f 75 72 63 65 2d 6c 6f 63 61 74 69  rd-source-locati
19190 6f 6e 20 78 20 6c 6f 63 61 74 69 6f 6e 53 74 61  on x locationSta
191a0 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  rt).            
191b0 28 62 65 67 69 6e 20 28 61 63 63 65 70 74 20 27  (begin (accept '
191c0 6e 75 6d 62 65 72 29 0a 20 20 20 20 20 20 20 20  number).        
191d0 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 73             (pars
191e0 65 2d 65 72 72 6f 72 20 27 3c 6e 75 6d 62 65 72  e-error '<number
191f0 3e 20 27 28 6e 75 6d 62 65 72 29 29 29 29 29 29  > '(number))))))
19200 0a 20 20 0a 20 20 20 20 28 64 65 66 69 6e 65 20  .  .    (define 
19210 28 6d 61 6b 65 4f 63 74 65 74 29 0a 20 20 20 20  (makeOctet).    
19220 20 20 28 6c 65 74 20 28 28 6e 20 28 73 74 72 69    (let ((n (stri
19230 6e 67 2d 3e 6e 75 6d 62 65 72 20 74 6f 6b 65 6e  ng->number token
19240 56 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20  Value))).       
19250 20 28 69 66 20 28 61 6e 64 20 28 65 78 61 63 74   (if (and (exact
19260 3f 20 6e 29 20 28 69 6e 74 65 67 65 72 3f 20 6e  ? n) (integer? n
19270 29 20 28 3c 3d 20 30 20 6e 20 32 35 35 29 29 0a  ) (<= 0 n 255)).
19280 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63              (rec
19290 6f 72 64 2d 73 6f 75 72 63 65 2d 6c 6f 63 61 74  ord-source-locat
192a0 69 6f 6e 20 6e 20 6c 6f 63 61 74 69 6f 6e 53 74  ion n locationSt
192b0 61 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  art).           
192c0 20 28 62 65 67 69 6e 20 28 61 63 63 65 70 74 20   (begin (accept 
192d0 27 6f 63 74 65 74 29 0a 20 20 20 20 20 20 20 20  'octet).        
192e0 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 73             (pars
192f0 65 2d 65 72 72 6f 72 20 27 3c 6f 63 74 65 74 3e  e-error '<octet>
19300 20 27 28 6f 63 74 65 74 29 29 29 29 29 29 0a 20   '(octet)))))). 
19310 20 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 6d   .    (define (m
19320 61 6b 65 53 74 72 69 6e 67 29 0a 0a 20 20 20 20  akeString)..    
19330 20 20 3b 20 4d 75 73 74 20 73 74 72 69 70 20 6f    ; Must strip o
19340 66 66 20 6f 75 74 65 72 20 64 6f 75 62 6c 65 20  ff outer double 
19350 71 75 6f 74 65 73 20 61 6e 64 20 64 65 61 6c 20  quotes and deal 
19360 77 69 74 68 20 65 73 63 61 70 65 73 2e 0a 20 20  with escapes..  
19370 20 20 20 20 3b 0a 20 20 20 20 20 20 3b 20 69 20      ;.      ; i 
19380 69 73 20 74 68 65 20 6e 65 78 74 20 69 6e 64 65  is the next inde
19390 78 20 69 6e 74 6f 20 74 6f 6b 65 6e 56 61 6c 75  x into tokenValu
193a0 65 0a 20 20 20 20 20 20 3b 20 6e 20 69 73 20 74  e.      ; n is t
193b0 68 65 20 65 78 63 6c 75 73 69 76 65 20 75 70 70  he exclusive upp
193c0 65 72 20 62 6f 75 6e 64 20 66 6f 72 20 69 0a 20  er bound for i. 
193d0 20 20 20 20 20 3b 20 6e 65 77 73 74 72 69 6e 67       ; newstring
193e0 20 69 73 20 61 20 73 74 72 69 6e 67 20 74 68 61   is a string tha
193f0 74 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 74  t might become t
19400 68 65 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20  he result.      
19410 3b 20 6a 20 69 73 20 74 68 65 20 6e 65 78 74 20  ; j is the next 
19420 69 6e 64 65 78 20 69 6e 74 6f 20 6e 65 77 73 74  index into newst
19430 72 69 6e 67 0a 0a 20 20 20 20 20 20 28 64 65 66  ring..      (def
19440 69 6e 65 20 28 6c 6f 6f 70 20 69 20 6e 20 6e 65  ine (loop i n ne
19450 77 73 74 72 69 6e 67 20 6a 29 0a 20 20 20 20 20  wstring j).     
19460 20 20 20 28 69 66 20 28 3e 3d 20 69 20 6e 29 0a     (if (>= i n).
19470 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
19480 28 3d 20 6a 20 28 73 74 72 69 6e 67 2d 6c 65 6e  (= j (string-len
19490 67 74 68 20 6e 65 77 73 74 72 69 6e 67 29 29 0a  gth newstring)).
194a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
194b0 6e 65 77 73 74 72 69 6e 67 0a 20 20 20 20 20 20  newstring.      
194c0 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74            (subst
194d0 72 69 6e 67 20 6e 65 77 73 74 72 69 6e 67 20 30  ring newstring 0
194e0 20 6a 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   j)).           
194f0 20 28 6c 65 74 20 28 28 63 20 28 73 74 72 69 6e   (let ((c (strin
19500 67 2d 72 65 66 20 74 6f 6b 65 6e 56 61 6c 75 65  g-ref tokenValue
19510 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20   i))).          
19520 20 20 20 20 28 63 6f 6e 64 20 28 28 6f 72 20 28      (cond ((or (
19530 63 68 61 72 3d 3f 20 63 20 23 5c 72 65 74 75 72  char=? c #\retur
19540 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n).             
19550 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
19560 72 3d 3f 20 63 20 23 5c 6c 69 6e 65 66 65 65 64  r=? c #\linefeed
19570 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
19580 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72             (char
19590 3d 3f 20 63 20 63 68 61 72 3a 6e 65 6c 29 0a 20  =? c char:nel). 
195a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
195b0 20 20 20 20 20 20 20 20 28 63 68 61 72 3d 3f 20          (char=? 
195c0 63 20 63 68 61 72 3a 6c 73 29 29 0a 20 20 20 20  c char:ls)).    
195d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
195e0 20 28 73 74 72 69 6e 67 2d 73 65 74 21 20 6e 65   (string-set! ne
195f0 77 73 74 72 69 6e 67 20 6a 20 23 5c 6c 69 6e 65  wstring j #\line
19600 66 65 65 64 29 0a 20 20 20 20 20 20 20 20 20 20  feed).          
19610 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a             (let*
19620 20 28 28 69 2b 31 20 28 2b 20 69 20 31 29 29 0a   ((i+1 (+ i 1)).
19630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19640 20 20 20 20 20 20 20 20 20 20 20 20 28 69 2b 31              (i+1
19650 20 28 69 66 20 28 61 6e 64 20 28 63 68 61 72 3d   (if (and (char=
19660 3f 20 63 20 23 5c 72 65 74 75 72 6e 29 0a 20 20  ? c #\return).  
19670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19690 20 20 20 20 20 20 20 20 28 3c 20 69 2b 31 20 6e          (< i+1 n
196a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
196b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
196c0 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63          (let ((c
196d0 32 20 28 73 74 72 69 6e 67 2d 72 65 66 20 74 6f  2 (string-ref to
196e0 6b 65 6e 56 61 6c 75 65 20 69 2b 31 29 29 29 0a  kenValue i+1))).
196f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19710 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 28         (if (or (
19720 63 68 61 72 3d 3f 20 63 32 20 23 5c 6c 69 6e 65  char=? c2 #\line
19730 66 65 65 64 29 0a 20 20 20 20 20 20 20 20 20 20  feed).          
19740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19760 20 20 20 20 20 28 63 68 61 72 3d 3f 20 63 32 20       (char=? c2 
19770 63 68 61 72 3a 6e 65 6c 29 29 0a 20 20 20 20 20  char:nel)).     
19780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
197a0 20 20 20 20 20 20 28 2b 20 69 20 32 29 0a 20 20        (+ i 2).  
197b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
197c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
197d0 20 20 20 20 20 20 20 20 20 69 2b 31 29 29 0a 20           i+1)). 
197e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
197f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19800 20 20 20 20 69 2b 31 29 29 29 0a 20 20 20 20 20      i+1))).     
19810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19820 20 20 28 6c 6f 6f 70 20 69 2b 31 20 6e 20 6e 65    (loop i+1 n ne
19830 77 73 74 72 69 6e 67 20 28 2b 20 6a 20 31 29 29  wstring (+ j 1))
19840 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
19850 20 20 20 20 20 20 20 28 28 63 68 61 72 3d 3f 20         ((char=? 
19860 63 20 23 5c 5c 29 0a 20 20 20 20 20 20 20 20 20  c #\\).         
19870 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
19880 28 3c 20 28 2b 20 69 20 31 29 20 6e 29 0a 20 20  (< (+ i 1) n).  
19890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
198a0 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 32         (let ((c2
198b0 20 28 73 74 72 69 6e 67 2d 72 65 66 20 74 6f 6b   (string-ref tok
198c0 65 6e 56 61 6c 75 65 20 28 2b 20 69 20 31 29 29  enValue (+ i 1))
198d0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
198e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
198f0 61 73 65 20 63 32 0a 20 20 20 20 20 20 20 20 20  ase c2.         
19900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19910 20 20 20 28 28 23 5c 61 29 0a 20 20 20 20 20 20     ((#\a).      
19920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19930 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 73         (string-s
19940 65 74 21 20 6e 65 77 73 74 72 69 6e 67 20 6a 20  et! newstring j 
19950 23 5c 61 6c 61 72 6d 29 0a 20 20 20 20 20 20 20  #\alarm).       
19960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19970 20 20 20 20 20 20 28 6c 6f 6f 70 20 28 2b 20 69        (loop (+ i
19980 20 32 29 20 6e 20 6e 65 77 73 74 72 69 6e 67 20   2) n newstring 
19990 28 2b 20 6a 20 31 29 29 29 0a 20 20 20 20 20 20  (+ j 1))).      
199a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
199b0 20 20 20 20 20 20 28 28 23 5c 62 29 0a 20 20 20        ((#\b).   
199c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
199d0 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e            (strin
199e0 67 2d 73 65 74 21 20 6e 65 77 73 74 72 69 6e 67  g-set! newstring
199f0 20 6a 20 23 5c 62 61 63 6b 73 70 61 63 65 29 0a   j #\backspace).
19a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a10 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f               (lo
19a20 6f 70 20 28 2b 20 69 20 32 29 20 6e 20 6e 65 77  op (+ i 2) n new
19a30 73 74 72 69 6e 67 20 28 2b 20 6a 20 31 29 29 29  string (+ j 1)))
19a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19a50 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23               ((#
19a60 5c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  \t).            
19a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a80 20 28 73 74 72 69 6e 67 2d 73 65 74 21 20 6e 65   (string-set! ne
19a90 77 73 74 72 69 6e 67 20 6a 20 23 5c 74 61 62 29  wstring j #\tab)
19aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
19ac0 6f 6f 70 20 28 2b 20 69 20 32 29 20 6e 20 6e 65  oop (+ i 2) n ne
19ad0 77 73 74 72 69 6e 67 20 28 2b 20 6a 20 31 29 29  wstring (+ j 1))
19ae0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
19af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28                ((
19b00 23 5c 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20  #\n).           
19b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b20 20 20 28 73 74 72 69 6e 67 2d 73 65 74 21 20 6e    (string-set! n
19b30 65 77 73 74 72 69 6e 67 20 6a 20 23 5c 6c 69 6e  ewstring j #\lin
19b40 65 66 65 65 64 29 0a 20 20 20 20 20 20 20 20 20  efeed).         
19b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b60 20 20 20 20 28 6c 6f 6f 70 20 28 2b 20 69 20 32      (loop (+ i 2
19b70 29 20 6e 20 6e 65 77 73 74 72 69 6e 67 20 28 2b  ) n newstring (+
19b80 20 6a 20 31 29 29 29 0a 20 20 20 20 20 20 20 20   j 1))).        
19b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ba0 20 20 20 20 28 28 23 5c 76 29 0a 20 20 20 20 20      ((#\v).     
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19bc0 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d          (string-
19bd0 73 65 74 21 20 6e 65 77 73 74 72 69 6e 67 20 6a  set! newstring j
19be0 20 23 5c 76 74 61 62 29 0a 20 20 20 20 20 20 20   #\vtab).       
19bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c00 20 20 20 20 20 20 28 6c 6f 6f 70 20 28 2b 20 69        (loop (+ i
19c10 20 32 29 20 6e 20 6e 65 77 73 74 72 69 6e 67 20   2) n newstring 
19c20 28 2b 20 6a 20 31 29 29 29 0a 20 20 20 20 20 20  (+ j 1))).      
19c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c40 20 20 20 20 20 20 28 28 23 5c 66 29 0a 20 20 20        ((#\f).   
19c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c60 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e            (strin
19c70 67 2d 73 65 74 21 20 6e 65 77 73 74 72 69 6e 67  g-set! newstring
19c80 20 6a 20 23 5c 70 61 67 65 29 0a 20 20 20 20 20   j #\page).     
19c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ca0 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 28 2b          (loop (+
19cb0 20 69 20 32 29 20 6e 20 6e 65 77 73 74 72 69 6e   i 2) n newstrin
19cc0 67 20 28 2b 20 6a 20 31 29 29 29 0a 20 20 20 20  g (+ j 1))).    
19cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ce0 20 20 20 20 20 20 20 20 28 28 23 5c 72 29 0a 20          ((#\r). 
19cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d00 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72              (str
19d10 69 6e 67 2d 73 65 74 21 20 6e 65 77 73 74 72 69  ing-set! newstri
19d20 6e 67 20 6a 20 23 5c 72 65 74 75 72 6e 29 0a 20  ng j #\return). 
19d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d40 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f              (loo
19d50 70 20 28 2b 20 69 20 32 29 20 6e 20 6e 65 77 73  p (+ i 2) n news
19d60 74 72 69 6e 67 20 28 2b 20 6a 20 31 29 29 29 0a  tring (+ j 1))).
19d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d80 20 20 20 20 20 20 20 20 20 20 20 20 28 28 23 5c              ((#\
19d90 22 20 23 5c 5c 29 0a 20 20 20 20 20 20 20 20 20  " #\\).         
19da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19db0 20 20 20 20 28 73 74 72 69 6e 67 2d 73 65 74 21      (string-set!
19dc0 20 6e 65 77 73 74 72 69 6e 67 20 6a 20 63 32 29   newstring j c2)
19dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
19df0 6f 6f 70 20 28 2b 20 69 20 32 29 20 6e 20 6e 65  oop (+ i 2) n ne
19e00 77 73 74 72 69 6e 67 20 28 2b 20 6a 20 31 29 29  wstring (+ j 1))
19e10 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
19e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28                ((
19e30 23 5c 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  #\x).           
19e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e50 20 20 28 63 61 6c 6c 2d 77 69 74 68 2d 76 61 6c    (call-with-val
19e60 75 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  ues.            
19e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e80 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 68 65    (lambda () (he
19e90 78 2d 65 73 63 61 70 65 20 74 6f 6b 65 6e 56 61  x-escape tokenVa
19ea0 6c 75 65 20 28 2b 20 69 20 32 29 29 29 0a 20 20  lue (+ i 2))).  
19eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ec0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d              (lam
19ed0 62 64 61 20 28 73 76 20 69 29 0a 20 20 20 20 20  bda (sv i).     
19ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ef0 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69             (stri
19f00 6e 67 2d 73 65 74 21 20 6e 65 77 73 74 72 69 6e  ng-set! newstrin
19f10 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g.              
19f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
19f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
19f70 68 65 63 6b 65 64 2d 69 6e 74 65 67 65 72 2d 3e  hecked-integer->
19f80 63 68 61 72 20 73 76 29 29 0a 20 20 20 20 20 20  char sv)).      
19f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fa0 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20            (loop 
19fb0 69 20 6e 20 6e 65 77 73 74 72 69 6e 67 20 28 2b  i n newstring (+
19fc0 20 6a 20 31 29 29 29 29 29 0a 20 20 20 20 20 20   j 1))))).      
19fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fe0 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20        (else.    
19ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a000 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65           (ignore
1a010 2d 65 73 63 61 70 65 64 2d 6c 69 6e 65 2d 65 6e  -escaped-line-en
1a020 64 69 6e 67 20 28 2b 20 69 20 31 29 0a 20 20 20  ding (+ i 1).   
1a030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a060 20 20 20 20 20 20 6e 20 6e 65 77 73 74 72 69 6e        n newstrin
1a070 67 20 6a 20 23 66 29 29 29 29 0a 20 20 20 20 20  g j #f)))).     
1a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a090 28 73 63 61 6e 6e 65 72 45 72 72 6f 72 20 65 72  (scannerError er
1a0a0 72 49 6c 6c 65 67 61 6c 53 74 72 69 6e 67 29 29  rIllegalString))
1a0b0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1a0c0 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20        (else.    
1a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0e0 20 28 73 74 72 69 6e 67 2d 73 65 74 21 20 6e 65   (string-set! ne
1a0f0 77 73 74 72 69 6e 67 20 6a 20 63 29 0a 20 20 20  wstring j c).   
1a100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a110 20 20 28 6c 6f 6f 70 20 28 2b 20 69 20 31 29 20    (loop (+ i 1) 
1a120 6e 20 6e 65 77 73 74 72 69 6e 67 20 28 2b 20 6a  n newstring (+ j
1a130 20 31 29 29 29 29 29 29 29 0a 0a 20 20 20 20 20   1)))))))..     
1a140 20 3b 20 49 67 6e 6f 72 65 73 20 3c 69 6e 74 72   ; Ignores <intr
1a150 61 6c 69 6e 65 20 77 68 69 74 65 73 70 61 63 65  aline whitespace
1a160 3e 2a 20 3c 6c 69 6e 65 20 65 6e 64 69 6e 67 3e  >* <line ending>
1a170 20 3c 69 6e 74 72 61 6c 69 6e 65 20 77 68 69 74   <intraline whit
1a180 65 73 70 61 63 65 3e 2a 0a 20 20 20 20 20 20 3b  espace>*.      ;
1a190 20 61 66 74 65 72 3f 20 69 73 20 74 72 75 65 20   after? is true 
1a1a0 69 66 66 20 74 68 65 20 3c 6c 69 6e 65 20 65 6e  iff the <line en
1a1b0 64 69 6e 67 3e 20 68 61 73 20 61 6c 72 65 61 64  ding> has alread
1a1c0 79 20 62 65 65 6e 20 69 67 6e 6f 72 65 64 2e 0a  y been ignored..
1a1d0 20 20 20 20 20 20 3b 20 54 68 65 20 6f 74 68 65        ; The othe
1a1e0 72 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  r arguments are 
1a1f0 74 68 65 20 73 61 6d 65 20 61 73 20 66 6f 72 20  the same as for 
1a200 6c 6f 6f 70 20 61 62 6f 76 65 2e 0a 0a 20 20 20  loop above...   
1a210 20 20 20 28 64 65 66 69 6e 65 20 28 69 67 6e 6f     (define (igno
1a220 72 65 2d 65 73 63 61 70 65 64 2d 6c 69 6e 65 2d  re-escaped-line-
1a230 65 6e 64 69 6e 67 20 69 20 6e 20 6e 65 77 73 74  ending i n newst
1a240 72 69 6e 67 20 6a 20 61 66 74 65 72 3f 29 0a 20  ring j after?). 
1a250 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 3c         (cond ((<
1a260 20 69 20 6e 29 0a 20 20 20 20 20 20 20 20 20 20   i n).          
1a270 20 20 20 20 20 28 6c 65 74 20 28 28 63 20 28 73       (let ((c (s
1a280 74 72 69 6e 67 2d 72 65 66 20 74 6f 6b 65 6e 56  tring-ref tokenV
1a290 61 6c 75 65 20 69 29 29 29 0a 20 20 20 20 20 20  alue i))).      
1a2a0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64             (cond
1a2b0 20 28 28 6f 72 20 28 63 68 61 72 3d 3f 20 63 20   ((or (char=? c 
1a2c0 23 5c 74 61 62 29 0a 20 20 20 20 20 20 20 20 20  #\tab).         
1a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2e0 20 20 20 28 65 71 3f 20 27 5a 73 20 28 63 68 61     (eq? 'Zs (cha
1a2f0 72 2d 67 65 6e 65 72 61 6c 2d 63 61 74 65 67 6f  r-general-catego
1a300 72 79 20 63 29 29 29 0a 20 20 20 20 20 20 20 20  ry c))).        
1a310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a320 28 69 67 6e 6f 72 65 2d 65 73 63 61 70 65 64 2d  (ignore-escaped-
1a330 6c 69 6e 65 2d 65 6e 64 69 6e 67 20 28 2b 20 69  line-ending (+ i
1a340 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   1).            
1a350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a370 20 20 20 20 20 20 20 20 6e 20 6e 65 77 73 74 72          n newstr
1a380 69 6e 67 20 6a 20 61 66 74 65 72 3f 29 29 0a 20  ing j after?)). 
1a390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3a0 20 20 20 20 20 20 28 61 66 74 65 72 3f 0a 20 20        (after?.  
1a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3c0 20 20 20 20 20 20 28 6c 6f 6f 70 20 69 20 6e 20        (loop i n 
1a3d0 6e 65 77 73 74 72 69 6e 67 20 6a 29 29 0a 20 20  newstring j)).  
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3f0 20 20 20 20 20 28 28 6f 72 20 28 63 68 61 72 3d       ((or (char=
1a400 3f 20 63 20 23 5c 72 65 74 75 72 6e 29 0a 20 20  ? c #\return).  
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a420 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72 3d            (char=
1a430 3f 20 63 20 23 5c 6c 69 6e 65 66 65 65 64 29 0a  ? c #\linefeed).
1a440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a450 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
1a460 72 3d 3f 20 63 20 63 68 61 72 3a 6e 65 6c 29 0a  r=? c char:nel).
1a470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a480 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
1a490 72 3d 3f 20 63 20 63 68 61 72 3a 6c 73 29 29 0a  r=? c char:ls)).
1a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4b0 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28          (let* ((
1a4c0 69 2b 31 20 28 2b 20 69 20 31 29 29 0a 20 20 20  i+1 (+ i 1)).   
1a4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4e0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 2b 31              (i+1
1a4f0 20 28 69 66 20 28 61 6e 64 20 28 63 68 61 72 3d   (if (and (char=
1a500 3f 20 63 20 23 5c 72 65 74 75 72 6e 29 0a 20 20  ? c #\return).  
1a510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a530 20 20 20 20 20 20 20 20 20 20 20 28 3c 20 69 2b             (< i+
1a540 31 20 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20  1 n)).          
1a550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
1a570 65 74 20 28 28 63 32 20 28 73 74 72 69 6e 67 2d  et ((c2 (string-
1a580 72 65 66 0a 20 20 20 20 20 20 20 20 20 20 20 20  ref.            
1a590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5b0 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c 75         tokenValu
1a5c0 65 20 69 2b 31 29 29 29 0a 20 20 20 20 20 20 20  e i+1))).       
1a5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5f0 20 20 20 28 69 66 20 28 6f 72 20 28 63 68 61 72     (if (or (char
1a600 3d 3f 20 63 32 20 23 5c 6c 69 6e 65 66 65 65 64  =? c2 #\linefeed
1a610 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a640 20 20 20 20 28 63 68 61 72 3d 3f 20 63 32 20 63      (char=? c2 c
1a650 68 61 72 3a 6e 65 6c 29 29 0a 20 20 20 20 20 20  har:nel)).      
1a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a680 20 20 20 20 20 20 20 20 28 2b 20 69 20 32 29 0a          (+ i 2).
1a690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 2b                i+
1a6c0 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  1)).            
1a6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6e0 20 20 20 20 20 20 20 20 20 20 20 20 69 2b 31 29              i+1)
1a6f0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
1a700 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67               (ig
1a710 6e 6f 72 65 2d 65 73 63 61 70 65 64 2d 6c 69 6e  nore-escaped-lin
1a720 65 2d 65 6e 64 69 6e 67 20 69 2b 31 20 6e 20 6e  e-ending i+1 n n
1a730 65 77 73 74 72 69 6e 67 20 6a 20 23 74 29 29 29  ewstring j #t)))
1a740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a750 20 20 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20          (else.  
1a760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a770 20 20 20 20 20 20 28 73 63 61 6e 6e 65 72 45 72        (scannerEr
1a780 72 6f 72 20 65 72 72 49 6c 6c 65 67 61 6c 53 74  ror errIllegalSt
1a790 72 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20  ring))))).      
1a7a0 20 20 20 20 20 20 20 20 28 61 66 74 65 72 3f 0a          (after?.
1a7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1a7c0 6c 6f 6f 70 20 69 20 6e 20 6e 65 77 73 74 72 69  loop i n newstri
1a7d0 6e 67 20 6a 29 29 0a 20 20 20 20 20 20 20 20 20  ng j)).         
1a7e0 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20       (else.     
1a7f0 20 20 20 20 20 20 20 20 20 20 28 73 63 61 6e 6e            (scann
1a800 65 72 45 72 72 6f 72 20 65 72 72 49 6c 6c 65 67  erError errIlleg
1a810 61 6c 53 74 72 69 6e 67 29 29 29 29 0a 0a 20 20  alString))))..  
1a820 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 20 28 73      (let* ((n (s
1a830 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20 74 6f 6b  tring-length tok
1a840 65 6e 56 61 6c 75 65 29 29 0a 20 20 20 20 20 20  enValue)).      
1a850 20 20 20 20 20 20 20 28 73 20 28 6c 6f 6f 70 20         (s (loop 
1a860 31 20 28 2d 20 6e 20 31 29 20 28 6d 61 6b 65 2d  1 (- n 1) (make-
1a870 73 74 72 69 6e 67 20 28 2d 20 6e 20 32 29 29 20  string (- n 2)) 
1a880 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 72 65  0))).        (re
1a890 63 6f 72 64 2d 73 6f 75 72 63 65 2d 6c 6f 63 61  cord-source-loca
1a8a0 74 69 6f 6e 20 73 20 6c 6f 63 61 74 69 6f 6e 53  tion s locationS
1a8b0 74 61 72 74 29 29 29 0a 0a 20 20 20 20 28 64 65  tart)))..    (de
1a8c0 66 69 6e 65 20 28 6d 61 6b 65 53 74 72 75 63 74  fine (makeStruct
1a8d0 75 72 65 64 20 6c 6f 63 30 20 78 29 0a 20 20 20  ured loc0 x).   
1a8e0 20 20 20 28 72 65 63 6f 72 64 2d 73 6f 75 72 63     (record-sourc
1a8f0 65 2d 6c 6f 63 61 74 69 6f 6e 20 78 20 6c 6f 63  e-location x loc
1a900 30 29 29 0a 0a 20 20 20 20 28 64 65 66 69 6e 65  0))..    (define
1a910 20 28 6d 61 6b 65 53 79 6d 29 0a 20 20 20 20 20   (makeSym).     
1a920 20 28 6c 65 74 20 28 28 6e 20 28 73 74 72 69 6e   (let ((n (strin
1a930 67 2d 6c 65 6e 67 74 68 20 74 6f 6b 65 6e 56 61  g-length tokenVa
1a940 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 28  lue))).        (
1a950 64 65 66 69 6e 65 20 28 72 65 74 75 72 6e 20 73  define (return s
1a960 79 6d 29 0a 20 20 20 20 20 20 20 20 20 20 73 79  ym).          sy
1a970 6d 29 0a 20 20 20 20 20 20 20 20 28 64 65 66 69  m).        (defi
1a980 6e 65 20 28 6c 6f 6f 70 20 69 29 0a 20 20 20 20  ne (loop i).    
1a990 20 20 20 20 20 20 28 69 66 20 28 3d 20 69 20 6e        (if (= i n
1a9a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1a9b0 28 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 2d  (return (string-
1a9c0 3e 73 79 6d 62 6f 6c 20 74 6f 6b 65 6e 56 61 6c  >symbol tokenVal
1a9d0 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  ue)).           
1a9e0 20 20 20 28 6c 65 74 20 28 28 63 20 28 73 74 72     (let ((c (str
1a9f0 69 6e 67 2d 72 65 66 20 74 6f 6b 65 6e 56 61 6c  ing-ref tokenVal
1aa00 75 65 20 69 29 29 29 0a 20 20 20 20 20 20 20 20  ue i))).        
1aa10 20 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28          (cond ((
1aa20 6f 72 20 28 63 68 61 72 3d 3f 20 63 20 23 5c 5c  or (char=? c #\\
1aa30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68               (ch
1aa50 61 72 3d 3f 20 63 20 23 5c 23 29 29 0a 20 20 20  ar=? c #\#)).   
1aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aa70 20 20 20 20 28 73 6c 6f 77 2d 6c 6f 6f 70 20 69      (slow-loop i
1aa80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aaa0 20 20 20 28 72 65 76 65 72 73 65 0a 20 20 20 20     (reverse.    
1aab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1aad0 73 74 72 69 6e 67 2d 3e 6c 69 73 74 20 28 73 75  string->list (su
1aae0 62 73 74 72 69 6e 67 20 74 6f 6b 65 6e 56 61 6c  bstring tokenVal
1aaf0 75 65 20 30 20 69 29 29 29 29 29 0a 20 20 20 20  ue 0 i))))).    
1ab00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ab10 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20    (else.        
1ab20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1ab30 6c 6f 6f 70 20 28 2b 20 69 20 31 29 29 29 29 29  loop (+ i 1)))))
1ab40 29 29 0a 20 20 20 20 20 20 20 20 28 64 65 66 69  )).        (defi
1ab50 6e 65 20 28 73 6c 6f 77 2d 6c 6f 6f 70 20 69 20  ne (slow-loop i 
1ab60 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20  chars).         
1ab70 20 28 69 66 20 28 3d 20 69 20 6e 29 0a 20 20 20   (if (= i n).   
1ab80 20 20 20 20 20 20 20 20 20 20 20 28 72 65 74 75             (retu
1ab90 72 6e 20 28 73 74 72 69 6e 67 2d 3e 73 79 6d 62  rn (string->symb
1aba0 6f 6c 20 28 6c 69 73 74 2d 3e 73 74 72 69 6e 67  ol (list->string
1abb0 20 28 72 65 76 65 72 73 65 20 63 68 61 72 73 29   (reverse chars)
1abc0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
1abd0 20 20 28 6c 65 74 20 28 28 63 20 28 73 74 72 69    (let ((c (stri
1abe0 6e 67 2d 72 65 66 20 74 6f 6b 65 6e 56 61 6c 75  ng-ref tokenValu
1abf0 65 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20  e i))).         
1ac00 20 20 20 20 20 20 20 28 63 6f 6e 64 20 28 28 63         (cond ((c
1ac10 68 61 72 3d 3f 20 63 20 23 5c 5c 29 0a 20 20 20  har=? c #\\).   
1ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac30 20 20 20 20 28 63 6f 6e 64 20 28 28 61 6e 64 20      (cond ((and 
1ac40 28 3c 20 28 2b 20 69 20 31 29 20 6e 29 0a 20 20  (< (+ i 1) n).  
1ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac70 20 28 63 68 61 72 3d 3f 20 28 73 74 72 69 6e 67   (char=? (string
1ac80 2d 72 65 66 20 74 6f 6b 65 6e 56 61 6c 75 65 20  -ref tokenValue 
1ac90 28 2b 20 69 20 31 29 29 0a 20 20 20 20 20 20 20  (+ i 1)).       
1aca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1acb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1acc0 20 20 20 20 23 5c 78 29 29 0a 20 20 20 20 20 20      #\x)).      
1acd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ace0 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 77 69          (call-wi
1acf0 74 68 2d 76 61 6c 75 65 73 0a 20 20 20 20 20 20  th-values.      
1ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad10 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61           (lambda
1ad20 20 28 29 20 28 68 65 78 2d 65 73 63 61 70 65 20   () (hex-escape 
1ad30 74 6f 6b 65 6e 56 61 6c 75 65 20 28 2b 20 69 20  tokenValue (+ i 
1ad40 32 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  2))).           
1ad50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad60 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 76 20      (lambda (sv 
1ad70 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  i).             
1ad80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad90 20 20 20 20 28 73 6c 6f 77 2d 6c 6f 6f 70 20 69      (slow-loop i
1ada0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f               (co
1add0 6e 73 20 28 63 68 65 63 6b 65 64 2d 69 6e 74 65  ns (checked-inte
1ade0 67 65 72 2d 3e 63 68 61 72 20 73 76 29 0a 20 20  ger->char sv).  
1adf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 20  chars))))).     
1ae30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae40 20 20 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20          (else.  
1ae50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae60 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 61              (sca
1ae70 6e 6e 65 72 45 72 72 6f 72 20 65 72 72 49 6c 6c  nnerError errIll
1ae80 65 67 61 6c 53 79 6d 62 6f 6c 29 29 29 29 0a 20  egalSymbol)))). 
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aea0 20 20 20 20 20 28 65 6c 73 65 20 28 73 6c 6f 77       (else (slow
1aeb0 2d 6c 6f 6f 70 20 28 2b 20 69 20 31 29 20 28 63  -loop (+ i 1) (c
1aec0 6f 6e 73 20 63 20 63 68 61 72 73 29 29 29 29 29  ons c chars)))))
1aed0 29 29 0a 20 20 20 20 20 20 20 20 28 6c 6f 6f 70  )).        (loop
1aee0 20 30 29 29 29 0a 0a 20 20 20 20 3b 20 4c 69 6b   0)))..    ; Lik
1aef0 65 20 61 70 70 65 6e 64 2c 20 62 75 74 20 61 6c  e append, but al
1af00 6c 6f 77 73 20 74 68 65 20 6c 61 73 74 20 61 72  lows the last ar
1af10 67 75 6d 65 6e 74 20 74 6f 20 62 65 20 61 20 6e  gument to be a n
1af20 6f 6e 2d 6c 69 73 74 2e 0a 20 20 0a 20 20 20 20  on-list..  .    
1af30 28 64 65 66 69 6e 65 20 28 70 73 65 75 64 6f 41  (define (pseudoA
1af40 70 70 65 6e 64 20 76 61 6c 73 20 74 65 72 6d 69  ppend vals termi
1af50 6e 75 73 29 0a 20 20 20 20 20 20 28 69 66 20 28  nus).      (if (
1af60 6e 75 6c 6c 3f 20 76 61 6c 73 29 0a 20 20 20 20  null? vals).    
1af70 20 20 20 20 20 20 74 65 72 6d 69 6e 75 73 0a 20        terminus. 
1af80 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28           (cons (
1af90 63 61 72 20 76 61 6c 73 29 0a 20 20 20 20 20 20  car vals).      
1afa0 20 20 20 20 20 20 20 20 20 20 28 70 73 65 75 64            (pseud
1afb0 6f 41 70 70 65 6e 64 20 28 63 64 72 20 76 61 6c  oAppend (cdr val
1afc0 73 29 20 74 65 72 6d 69 6e 75 73 29 29 29 29 0a  s) terminus)))).
1afd0 0a 20 20 20 20 3b 20 48 6f 6f 6b 20 66 6f 72 20  .    ; Hook for 
1afe0 61 73 73 6f 63 69 61 74 69 6e 67 20 73 6f 75 72  associating sour
1aff0 63 65 20 6c 6f 63 61 74 69 6f 6e 73 20 77 69 74  ce locations wit
1b000 68 20 74 6f 6b 65 6e 73 2e 0a 0a 20 20 20 20 28  h tokens...    (
1b010 64 65 66 69 6e 65 20 28 73 6f 75 72 63 65 4c 6f  define (sourceLo
1b020 63 61 74 69 6f 6e 29 20 30 29 0a 0a 20 20 20 20  cation) 0)..    
1b030 28 64 65 66 69 6e 65 20 28 73 79 6d 42 61 63 6b  (define (symBack
1b040 71 75 6f 74 65 29 20 27 71 75 61 73 69 71 75 6f  quote) 'quasiquo
1b050 74 65 29 0a 20 20 20 20 28 64 65 66 69 6e 65 20  te).    (define 
1b060 28 73 79 6d 51 75 61 73 69 73 79 6e 74 61 78 29  (symQuasisyntax)
1b070 20 27 71 75 61 73 69 73 79 6e 74 61 78 29 0a 20   'quasisyntax). 
1b080 20 20 20 28 64 65 66 69 6e 65 20 28 73 79 6d 51     (define (symQ
1b090 75 6f 74 65 29 20 27 71 75 6f 74 65 29 0a 20 20  uote) 'quote).  
1b0a0 20 20 28 64 65 66 69 6e 65 20 28 73 79 6d 53 70    (define (symSp
1b0b0 6c 69 63 69 6e 67 29 20 27 75 6e 71 75 6f 74 65  licing) 'unquote
1b0c0 2d 73 70 6c 69 63 69 6e 67 29 0a 20 20 20 20 28  -splicing).    (
1b0d0 64 65 66 69 6e 65 20 28 73 79 6d 53 79 6e 74 61  define (symSynta
1b0e0 78 29 20 27 73 79 6e 74 61 78 29 0a 20 20 20 20  x) 'syntax).    
1b0f0 28 64 65 66 69 6e 65 20 28 73 79 6d 55 6e 71 75  (define (symUnqu
1b100 6f 74 65 29 20 27 75 6e 71 75 6f 74 65 29 0a 20  ote) 'unquote). 
1b110 20 20 20 28 64 65 66 69 6e 65 20 28 73 79 6d 55     (define (symU
1b120 6e 73 79 6e 74 61 78 29 20 27 75 6e 73 79 6e 74  nsyntax) 'unsynt
1b130 61 78 29 0a 20 20 20 20 28 64 65 66 69 6e 65 20  ax).    (define 
1b140 28 73 79 6d 55 6e 73 79 6e 74 61 78 2d 73 70 6c  (symUnsyntax-spl
1b150 69 63 69 6e 67 29 20 27 75 6e 73 79 6e 74 61 78  icing) 'unsyntax
1b160 2d 73 70 6c 69 63 69 6e 67 29 0a 20 20 0a 20 20  -splicing).  .  
1b170 20 20 3b 20 41 63 74 69 6f 6e 20 72 6f 75 74 69    ; Action routi
1b180 6e 65 73 20 66 6f 72 20 53 52 46 49 20 33 38 2e  nes for SRFI 38.
1b190 0a 20 20 20 20 3b 0a 20 20 20 20 3b 20 54 68 65  .    ;.    ; The
1b1a0 20 73 68 61 72 65 64 2d 73 74 72 75 63 74 75 72   shared-structur
1b1b0 65 73 20 68 61 73 68 74 61 62 6c 65 20 64 65 66  es hashtable def
1b1c0 69 6e 65 73 20 61 20 6d 61 70 70 69 6e 67 20 66  ines a mapping f
1b1d0 72 6f 6d 0a 20 20 20 20 3b 20 69 6e 64 65 78 65  rom.    ; indexe
1b1e0 73 20 74 6f 20 66 69 78 75 70 20 6f 62 6a 65 63  s to fixup objec
1b1f0 74 73 2e 0a 20 20 20 20 3b 0a 20 20 20 20 3b 20  ts..    ;.    ; 
1b200 41 20 66 69 78 75 70 20 6f 62 6a 65 63 74 20 69  A fixup object i
1b210 73 20 61 20 72 65 63 6f 72 64 20 77 69 74 68 20  s a record with 
1b220 74 77 6f 20 6d 75 74 61 62 6c 65 20 66 69 65 6c  two mutable fiel
1b230 64 73 3a 0a 20 20 20 20 3b 20 20 20 20 20 72 65  ds:.    ;     re
1b240 61 64 79 3a 20 23 74 20 69 66 20 74 68 65 20 6f  ady: #t if the o
1b250 62 6a 65 63 74 20 66 69 65 6c 64 20 69 73 20 72  bject field is r
1b260 65 61 64 79 2c 20 65 6c 73 65 20 23 66 0a 20 20  eady, else #f.  
1b270 20 20 3b 20 20 20 20 20 76 61 6c 75 65 3a 20 69    ;     value: i
1b280 66 20 72 65 61 64 79 2c 20 74 68 65 20 6f 62 6a  f ready, the obj
1b290 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 72 65  ect that will re
1b2a0 70 6c 61 63 65 20 74 68 65 0a 20 20 20 20 3b 20  place the.    ; 
1b2b0 20 20 20 20 20 20 20 20 20 20 20 66 69 78 75 70             fixup
1b2c0 20 6f 62 6a 65 63 74 20 64 75 72 69 6e 67 20 61   object during a
1b2d0 20 70 6f 73 74 2d 70 61 73 73 0a 0a 20 20 20 20   post-pass..    
1b2e0 28 64 65 66 69 6e 65 20 28 73 68 61 72 69 6e 67  (define (sharing
1b2f0 44 65 66 29 0a 20 20 20 20 20 20 28 6c 65 74 2a  Def).      (let*
1b300 20 28 28 69 6e 64 65 78 0a 20 20 20 20 20 20 20   ((index.       
1b310 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 3e         (string->
1b320 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 20  number.         
1b330 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67        (substring
1b340 20 74 6f 6b 65 6e 56 61 6c 75 65 20 31 20 28 2d   tokenValue 1 (-
1b350 20 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20   (string-length 
1b360 74 6f 6b 65 6e 56 61 6c 75 65 29 20 31 29 29 29  tokenValue) 1)))
1b370 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  ).             (
1b380 66 69 78 75 70 20 28 6d 61 6b 65 2d 66 69 78 75  fixup (make-fixu
1b390 70 2d 6f 62 6a 65 63 74 20 69 6e 64 65 78 29 29  p-object index))
1b3a0 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 6e  ).        (if (n
1b3b0 6f 74 20 73 68 61 72 65 64 2d 73 74 72 75 63 74  ot shared-struct
1b3c0 75 72 65 73 29 0a 20 20 20 20 20 20 20 20 20 20  ures).          
1b3d0 20 20 28 73 65 74 21 20 73 68 61 72 65 64 2d 73    (set! shared-s
1b3e0 74 72 75 63 74 75 72 65 73 0a 20 20 20 20 20 20  tructures.      
1b3f0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b              (mak
1b400 65 2d 68 61 73 68 74 61 62 6c 65 20 76 61 6c 75  e-hashtable valu
1b410 65 73 20 3d 29 29 29 0a 20 20 20 20 20 20 20 20  es =))).        
1b420 28 68 61 73 68 74 61 62 6c 65 2d 73 65 74 21 20  (hashtable-set! 
1b430 73 68 61 72 65 64 2d 73 74 72 75 63 74 75 72 65  shared-structure
1b440 73 20 69 6e 64 65 78 20 66 69 78 75 70 29 0a 20  s index fixup). 
1b450 20 20 20 20 20 20 20 66 69 78 75 70 29 29 0a 0a         fixup))..
1b460 20 20 20 20 28 64 65 66 69 6e 65 20 28 73 68 61      (define (sha
1b470 72 69 6e 67 55 73 65 29 0a 20 20 20 20 20 20 28  ringUse).      (
1b480 6c 65 74 2a 20 28 28 69 6e 64 65 78 0a 20 20 20  let* ((index.   
1b490 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69             (stri
1b4a0 6e 67 2d 3e 6e 75 6d 62 65 72 0a 20 20 20 20 20  ng->number.     
1b4b0 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74            (subst
1b4c0 72 69 6e 67 20 74 6f 6b 65 6e 56 61 6c 75 65 20  ring tokenValue 
1b4d0 31 20 28 2d 20 28 73 74 72 69 6e 67 2d 6c 65 6e  1 (- (string-len
1b4e0 67 74 68 20 74 6f 6b 65 6e 56 61 6c 75 65 29 20  gth tokenValue) 
1b4f0 31 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28  1))))).        (
1b500 69 66 20 28 6e 6f 74 20 73 68 61 72 65 64 2d 73  if (not shared-s
1b510 74 72 75 63 74 75 72 65 73 29 0a 20 20 20 20 20  tructures).     
1b520 20 20 20 20 20 20 20 28 73 63 61 6e 6e 65 72 45         (scannerE
1b530 72 72 6f 72 20 65 72 72 53 52 46 49 33 38 29 29  rror errSRFI38))
1b540 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  .        (let ((
1b550 66 69 78 75 70 20 28 68 61 73 68 74 61 62 6c 65  fixup (hashtable
1b560 2d 72 65 66 20 73 68 61 72 65 64 2d 73 74 72 75  -ref shared-stru
1b570 63 74 75 72 65 73 20 69 6e 64 65 78 20 23 66 29  ctures index #f)
1b580 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66  )).          (if
1b590 20 28 6e 6f 74 20 66 69 78 75 70 29 0a 20 20 20   (not fixup).   
1b5a0 20 20 20 20 20 20 20 20 20 20 20 28 73 63 61 6e             (scan
1b5b0 6e 65 72 45 72 72 6f 72 20 65 72 72 53 52 46 49  nerError errSRFI
1b5c0 33 38 29 29 0a 20 20 20 20 20 20 20 20 20 20 66  38)).          f
1b5d0 69 78 75 70 29 29 29 0a 0a 20 20 20 20 28 64 65  ixup)))..    (de
1b5e0 66 69 6e 65 20 28 6d 61 6b 65 53 68 61 72 69 6e  fine (makeSharin
1b5f0 67 44 65 66 20 66 69 78 75 70 20 64 61 74 75 6d  gDef fixup datum
1b600 29 0a 20 20 20 20 20 20 28 66 69 78 75 70 2d 72  ).      (fixup-r
1b610 65 61 64 79 21 20 66 69 78 75 70 20 64 61 74 75  eady! fixup datu
1b620 6d 29 0a 20 20 20 20 20 20 64 61 74 75 6d 29 0a  m).      datum).
1b630 0a 20 20 20 20 28 64 65 66 69 6e 65 20 28 6d 61  .    (define (ma
1b640 6b 65 53 68 61 72 69 6e 67 55 73 65 20 66 69 78  keSharingUse fix
1b650 75 70 29 0a 20 20 20 20 20 20 66 69 78 75 70 29  up).      fixup)
1b660 0a 0a 20 20 20 20 3b 3b 20 41 66 74 65 72 20 65  ..    ;; After e
1b670 76 65 72 79 74 68 69 6e 67 20 68 61 73 20 62 65  verything has be
1b680 65 6e 20 72 65 61 64 2c 20 61 20 73 65 63 6f 6e  en read, a secon
1b690 64 20 70 61 73 73 20 70 72 65 70 61 72 65 73 0a  d pass prepares.
1b6a0 20 20 20 20 3b 3b 20 61 6e 64 20 74 68 65 6e 20      ;; and then 
1b6b0 65 78 65 63 75 74 65 73 20 74 68 65 20 73 69 64  executes the sid
1b6c0 65 20 65 66 66 65 63 74 73 20 6e 65 65 64 65 64  e effects needed
1b6d0 20 74 6f 20 72 65 63 72 65 61 74 65 0a 20 20 20   to recreate.   
1b6e0 20 3b 3b 20 74 68 65 20 73 68 61 72 65 64 20 73   ;; the shared s
1b6f0 74 72 75 63 74 75 72 65 2e 0a 0a 20 20 20 20 28  tructure...    (
1b700 64 65 66 69 6e 65 20 28 73 72 66 69 33 38 2d 70  define (srfi38-p
1b710 6f 73 74 70 61 73 73 20 78 29 0a 20 20 20 20 20  ostpass x).     
1b720 20 28 6c 65 74 20 28 28 66 69 78 75 70 73 20 27   (let ((fixups '
1b730 28 29 29 29 0a 0a 20 20 20 20 20 20 20 20 28 64  ()))..        (d
1b740 65 66 69 6e 65 20 28 61 64 64 2d 66 69 78 75 70  efine (add-fixup
1b750 21 20 66 69 78 75 70 2d 6f 62 6a 65 63 74 20 6b  ! fixup-object k
1b760 69 6e 64 20 2e 20 72 65 73 74 29 0a 20 20 20 20  ind . rest).    
1b770 20 20 20 20 20 20 28 69 66 20 28 66 69 78 75 70        (if (fixup
1b780 2d 72 65 61 64 79 3f 20 66 69 78 75 70 2d 6f 62  -ready? fixup-ob
1b790 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20  ject).          
1b7a0 20 20 20 20 28 73 65 74 21 20 66 69 78 75 70 73      (set! fixups
1b7b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b7c0 20 20 20 20 20 28 63 6f 6e 73 20 28 63 6f 6e 73       (cons (cons
1b7d0 20 28 66 69 78 75 70 2d 76 61 6c 75 65 20 66 69   (fixup-value fi
1b7e0 78 75 70 2d 6f 62 6a 65 63 74 29 0a 20 20 20 20  xup-object).    
1b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b800 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e              (con
1b810 73 20 6b 69 6e 64 20 72 65 73 74 29 29 0a 20 20  s kind rest)).  
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b830 20 20 20 20 20 20 20 20 66 69 78 75 70 73 29 29          fixups))
1b840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
1b850 61 73 73 65 72 74 69 6f 6e 2d 76 69 6f 6c 61 74  assertion-violat
1b860 69 6f 6e 20 27 72 65 61 64 2d 77 69 74 68 2d 73  ion 'read-with-s
1b870 68 61 72 65 64 2d 73 74 72 75 63 74 75 72 65 0a  hared-structure.
1b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8a0 20 20 20 22 75 6e 64 65 66 69 6e 65 64 20 69 6e     "undefined in
1b8b0 64 65 78 22 0a 20 20 20 20 20 20 20 20 20 20 20  dex".           
1b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8d0 20 20 20 20 20 20 20 20 28 66 69 78 75 70 2d 69          (fixup-i
1b8e0 6e 64 65 78 20 66 69 78 75 70 2d 6f 62 6a 65 63  ndex fixup-objec
1b8f0 74 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 28  t))))..        (
1b900 64 65 66 69 6e 65 20 28 70 6f 73 74 70 61 73 73  define (postpass
1b910 20 78 29 0a 20 20 20 20 20 20 20 20 20 20 28 63   x).          (c
1b920 6f 6e 64 20 28 28 70 61 69 72 3f 20 78 29 0a 20  ond ((pair? x). 
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b940 28 69 66 20 28 66 69 78 75 70 2d 6f 62 6a 65 63  (if (fixup-objec
1b950 74 3f 20 28 63 61 72 20 78 29 29 0a 20 20 20 20  t? (car x)).    
1b960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b970 20 28 61 64 64 2d 66 69 78 75 70 21 20 28 63 61   (add-fixup! (ca
1b980 72 20 78 29 20 27 73 65 74 2d 63 61 72 21 20 78  r x) 'set-car! x
1b990 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1b9a0 20 20 20 20 20 20 20 28 70 6f 73 74 70 61 73 73         (postpass
1b9b0 20 28 63 61 72 20 78 29 29 29 0a 20 20 20 20 20   (car x))).     
1b9c0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
1b9d0 28 66 69 78 75 70 2d 6f 62 6a 65 63 74 3f 20 28  (fixup-object? (
1b9e0 63 64 72 20 78 29 29 0a 20 20 20 20 20 20 20 20  cdr x)).        
1b9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64               (ad
1ba00 64 2d 66 69 78 75 70 21 20 28 63 64 72 20 78 29  d-fixup! (cdr x)
1ba10 20 27 73 65 74 2d 63 64 72 21 20 78 29 0a 20 20   'set-cdr! x).  
1ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba30 20 20 20 28 70 6f 73 74 70 61 73 73 20 28 63 64     (postpass (cd
1ba40 72 20 78 29 29 29 29 0a 20 20 20 20 20 20 20 20  r x)))).        
1ba50 20 20 20 20 20 20 20 20 28 28 76 65 63 74 6f 72          ((vector
1ba60 3f 20 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  ? x).           
1ba70 20 20 20 20 20 20 28 64 6f 20 28 28 6e 20 28 76        (do ((n (v
1ba80 65 63 74 6f 72 2d 6c 65 6e 67 74 68 20 78 29 29  ector-length x))
1ba90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1baa0 20 20 20 20 20 20 20 28 69 20 30 20 28 2b 20 69         (i 0 (+ i
1bab0 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20   1))).          
1bac0 20 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 69             ((= i
1bad0 20 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   n)).           
1bae0 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 79          (let ((y
1baf0 20 28 76 65 63 74 6f 72 2d 72 65 66 20 78 20 69   (vector-ref x i
1bb00 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
1bb10 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 69           (if (fi
1bb20 78 75 70 2d 6f 62 6a 65 63 74 3f 20 79 29 0a 20  xup-object? y). 
1bb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb40 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 78          (add-fix
1bb50 75 70 21 20 79 20 27 76 65 63 74 6f 72 2d 73 65  up! y 'vector-se
1bb60 74 21 20 78 20 69 29 0a 20 20 20 20 20 20 20 20  t! x i).        
1bb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb80 20 28 70 6f 73 74 70 61 73 73 20 79 29 29 29 29   (postpass y))))
1bb90 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1bba0 20 20 28 65 6c 73 65 20 23 66 29 29 29 0a 0a 20    (else #f))).. 
1bbb0 20 20 20 20 20 20 20 28 64 65 66 69 6e 65 20 28         (define (
1bbc0 66 69 78 75 70 21 20 66 69 78 75 70 29 0a 20 20  fixup! fixup).  
1bbd0 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76          (let ((v
1bbe0 61 6c 75 65 20 28 63 61 72 20 66 69 78 75 70 29  alue (car fixup)
1bbf0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1bc00 20 20 28 6b 69 6e 64 20 28 63 61 64 72 20 66 69    (kind (cadr fi
1bc10 78 75 70 29 29 0a 20 20 20 20 20 20 20 20 20 20  xup)).          
1bc20 20 20 20 20 20 20 28 63 6f 6e 74 61 69 6e 65 72        (container
1bc30 20 28 63 61 64 64 72 20 66 69 78 75 70 29 29 0a   (caddr fixup)).
1bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc50 28 72 65 73 74 20 28 63 64 64 64 72 20 66 69 78  (rest (cdddr fix
1bc60 75 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  up))).          
1bc70 20 20 28 63 61 73 65 20 6b 69 6e 64 0a 20 20 20    (case kind.   
1bc80 20 20 20 20 20 20 20 20 20 20 28 28 73 65 74 2d            ((set-
1bc90 63 61 72 21 29 0a 20 20 20 20 20 20 20 20 20 20  car!).          
1bca0 20 20 20 20 28 73 65 74 2d 63 61 72 21 20 63 6f      (set-car! co
1bcb0 6e 74 61 69 6e 65 72 20 76 61 6c 75 65 29 29 0a  ntainer value)).
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73               ((s
1bcd0 65 74 2d 63 64 72 21 29 0a 20 20 20 20 20 20 20  et-cdr!).       
1bce0 20 20 20 20 20 20 20 28 73 65 74 2d 63 64 72 21         (set-cdr!
1bcf0 20 63 6f 6e 74 61 69 6e 65 72 20 76 61 6c 75 65   container value
1bd00 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
1bd10 28 28 76 65 63 74 6f 72 2d 73 65 74 21 29 0a 20  ((vector-set!). 
1bd20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65               (ve
1bd30 63 74 6f 72 2d 73 65 74 21 20 63 6f 6e 74 61 69  ctor-set! contai
1bd40 6e 65 72 20 28 63 61 72 20 72 65 73 74 29 20 76  ner (car rest) v
1bd50 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20  alue)).         
1bd60 20 20 20 20 28 65 6c 73 65 0a 20 20 20 20 20 20      (else.      
1bd70 20 20 20 20 20 20 20 20 28 61 73 73 65 72 74 20          (assert 
1bd80 23 66 29 29 29 29 29 0a 0a 20 20 20 20 20 20 28  #f)))))..      (
1bd90 69 66 20 73 68 61 72 65 64 2d 73 74 72 75 63 74  if shared-struct
1bda0 75 72 65 73 0a 20 20 20 20 20 20 20 20 20 20 28  ures.          (
1bdb0 62 65 67 69 6e 20 28 70 6f 73 74 70 61 73 73 20  begin (postpass 
1bdc0 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  x).             
1bdd0 20 20 20 20 28 66 6f 72 2d 65 61 63 68 20 66 69      (for-each fi
1bde0 78 75 70 21 20 66 69 78 75 70 73 29 0a 20 20 20  xup! fixups).   
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69                (i
1be00 66 20 28 66 69 78 75 70 2d 6f 62 6a 65 63 74 3f  f (fixup-object?
1be10 20 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   x).            
1be20 20 20 20 20 20 20 20 20 20 28 66 69 78 75 70 2d           (fixup-
1be30 76 61 6c 75 65 20 78 29 0a 20 20 20 20 20 20 20  value x).       
1be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 29                x)
1be50 29 0a 20 20 20 20 20 20 20 20 20 20 78 29 29 29  ).          x)))
1be60 0a 0a 0a 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b  ...    ;;;;;;;;;
1be70 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1be80 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1be90 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1bea0 3b 3b 3b 3b 3b 3b 3b 0a 20 20 20 20 3b 0a 20 20  ;;;;;;;.    ;.  
1beb0 20 20 3b 20 45 72 72 6f 72 20 70 72 6f 63 65 64    ; Error proced
1bec0 75 72 65 20 63 61 6c 6c 65 64 20 62 79 20 74 68  ure called by th
1bed0 65 20 70 61 72 73 65 72 2e 0a 20 20 20 20 3b 0a  e parser..    ;.
1bee0 20 20 20 20 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b      ;;;;;;;;;;;;
1bef0 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1bf00 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1bf10 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
1bf20 3b 3b 3b 3b 0a 20 20 0a 20 20 20 20 28 64 65 66  ;;;;.  .    (def
1bf30 69 6e 65 20 28 70 61 72 73 65 2d 65 72 72 6f 72  ine (parse-error
1bf40 20 6e 6f 6e 74 65 72 6d 69 6e 61 6c 20 65 78 70   nonterminal exp
1bf50 65 63 74 65 64 2d 74 65 72 6d 69 6e 61 6c 73 29  ected-terminals)
1bf60 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63  .      (let* ((c
1bf70 75 6c 70 72 69 74 20 28 6e 65 78 74 2d 74 6f 6b  ulprit (next-tok
1bf80 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  en)).           
1bf90 20 20 28 63 75 6c 70 72 69 74 2d 61 73 2d 73 74    (culprit-as-st
1bfa0 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 3e 73 74  ring (symbol->st
1bfb0 72 69 6e 67 20 63 75 6c 70 72 69 74 29 29 0a 20  ring culprit)). 
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 6c              (cul
1bfd0 70 72 69 74 2d 61 73 2d 73 74 72 69 6e 67 0a 20  prit-as-string. 
1bfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66               (if
1bff0 20 28 6d 65 6d 71 20 63 75 6c 70 72 69 74 20 65   (memq culprit e
1c000 78 70 65 63 74 65 64 2d 74 65 72 6d 69 6e 61 6c  xpected-terminal
1c010 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s).             
1c020 20 20 20 20 20 28 73 74 72 69 6e 67 2d 61 70 70       (string-app
1c030 65 6e 64 20 22 69 6c 6c 65 67 61 6c 20 22 20 63  end "illegal " c
1c040 75 6c 70 72 69 74 2d 61 73 2d 73 74 72 69 6e 67  ulprit-as-string
1c050 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1c060 20 20 20 20 63 75 6c 70 72 69 74 2d 61 73 2d 73      culprit-as-s
1c070 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20  tring)).        
1c080 20 20 20 20 20 28 6d 73 67 20 28 73 74 72 69 6e       (msg (strin
1c090 67 2d 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20  g-append.       
1c0a0 20 20 20 20 20 20 20 20 20 20 20 20 22 53 79 6e              "Syn
1c0b0 74 61 78 20 65 72 72 6f 72 20 77 68 69 6c 65 20  tax error while 
1c0c0 70 61 72 73 69 6e 67 20 22 0a 20 20 20 20 20 20  parsing ".      
1c0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79               (sy
1c0e0 6d 62 6f 6c 2d 3e 73 74 72 69 6e 67 20 6e 6f 6e  mbol->string non
1c0f0 74 65 72 6d 69 6e 61 6c 29 0a 20 20 20 20 20 20  terminal).      
1c100 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74               (st
1c110 72 69 6e 67 20 23 5c 6e 65 77 6c 69 6e 65 29 0a  ring #\newline).
1c120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c130 20 20 20 22 20 20 45 6e 63 6f 75 6e 74 65 72 65     "  Encountere
1c140 64 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  d ".            
1c150 20 20 20 20 20 20 20 63 75 6c 70 72 69 74 2d 61         culprit-a
1c160 73 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20  s-string.       
1c170 20 20 20 20 20 20 20 20 20 20 20 20 22 20 77 68              " wh
1c180 69 6c 65 20 65 78 70 65 63 74 69 6e 67 20 22 0a  ile expecting ".
1c190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1a0 20 20 20 28 63 61 73 65 20 6e 6f 6e 74 65 72 6d     (case nonterm
1c1b0 69 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20  inal.           
1c1c0 20 20 20 20 20 20 20 20 20 28 28 3c 64 61 74 75           ((<datu
1c1d0 6d 3e 20 3c 6f 75 74 65 72 6d 6f 73 74 2d 64 61  m> <outermost-da
1c1e0 74 75 6d 3e 20 3c 64 61 74 61 3e 29 0a 20 20 20  tum> <data>).   
1c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c200 20 20 22 61 20 64 61 74 75 6d 22 29 0a 20 20 20    "a datum").   
1c210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c220 20 28 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20   (else.         
1c230 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72              (str
1c240 69 6e 67 2d 61 70 70 65 6e 64 0a 20 20 20 20 20  ing-append.     
1c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c260 20 28 73 74 72 69 6e 67 20 23 5c 6e 65 77 6c 69   (string #\newli
1c270 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ne).            
1c280 20 20 20 20 20 20 20 20 20 20 22 20 20 22 0a 20            "  ". 
1c290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2a0 20 20 20 20 20 28 61 70 70 6c 79 20 73 74 72 69       (apply stri
1c2b0 6e 67 2d 61 70 70 65 6e 64 0a 20 20 20 20 20 20  ng-append.      
1c2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2d0 20 20 20 20 20 20 20 28 6d 61 70 20 28 6c 61 6d         (map (lam
1c2e0 62 64 61 20 28 74 65 72 6d 69 6e 61 6c 29 0a 20  bda (terminal). 
1c2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c310 20 20 20 28 73 74 72 69 6e 67 2d 61 70 70 65 6e     (string-appen
1c320 64 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20  d " ".          
1c330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c350 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c           (symbol
1c360 2d 3e 73 74 72 69 6e 67 20 74 65 72 6d 69 6e 61  ->string termina
1c370 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  l))).           
1c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c390 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 2d         expected-
1c3a0 74 65 72 6d 69 6e 61 6c 73 29 29 29 29 29 0a 20  terminals))))). 
1c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3c0 20 20 28 73 74 72 69 6e 67 20 23 5c 6e 65 77 6c    (string #\newl
1c3d0 69 6e 65 29 29 29 29 0a 20 20 20 20 20 20 20 20  ine)))).        
1c3e0 28 65 72 72 6f 72 20 27 67 65 74 2d 64 61 74 75  (error 'get-datu
1c3f0 6d 20 6d 73 67 20 69 6e 70 75 74 2d 70 6f 72 74  m msg input-port
1c400 29 29 29 0a 0a 20 20 20 20 3b 20 54 68 65 20 6c  )))..    ; The l
1c410 69 73 74 20 6f 66 20 74 6f 6b 65 6e 73 20 74 68  ist of tokens th
1c420 61 74 20 63 61 6e 20 73 74 61 72 74 20 61 20 64  at can start a d
1c430 61 74 75 6d 20 69 6e 20 52 36 52 53 20 6d 6f 64  atum in R6RS mod
1c440 65 2e 0a 0a 20 20 20 20 28 64 65 66 69 6e 65 20  e...    (define 
1c450 64 61 74 75 6d 2d 73 74 61 72 74 65 72 73 0a 20  datum-starters. 
1c460 20 20 20 20 20 27 28 62 61 63 6b 71 75 6f 74 65       '(backquote
1c470 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 65 61 6e  .        boolean
1c480 0a 20 20 20 20 20 20 20 20 62 76 65 63 73 74 61  .        bvecsta
1c490 72 74 0a 20 20 20 20 20 20 20 20 63 68 61 72 61  rt.        chara
1c4a0 63 74 65 72 0a 20 20 20 20 20 20 20 20 63 6f 6d  cter.        com
1c4b0 6d 61 0a 20 20 20 20 20 20 20 20 69 64 0a 20 20  ma.        id.  
1c4c0 20 20 20 20 20 20 6c 62 72 61 63 6b 65 74 0a 20        lbracket. 
1c4d0 20 20 20 20 20 20 20 6c 70 61 72 65 6e 0a 20 20         lparen.  
1c4e0 20 20 20 20 20 20 6d 69 73 63 66 6c 61 67 0a 20        miscflag. 
1c4f0 20 20 20 20 20 20 20 6e 75 6d 62 65 72 0a 20 20         number.  
1c500 20 20 20 20 20 20 71 75 61 73 69 73 79 6e 74 61        quasisynta
1c510 78 0a 20 20 20 20 20 20 20 20 71 75 6f 74 65 0a  x.        quote.
1c520 20 20 20 20 20 20 20 20 73 70 6c 69 63 69 6e 67          splicing
1c530 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 0a  .        string.
1c540 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 0a 20          syntax. 
1c550 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78 0a         unsyntax.
1c560 20 20 20 20 20 20 20 20 75 6e 73 79 6e 74 61 78          unsyntax
1c570 73 70 6c 69 63 69 6e 67 0a 20 20 20 20 20 20 20  splicing.       
1c580 20 76 65 63 73 74 61 72 74 29 29 0a 20 20 0a 20   vecstart)).  . 
1c590 20 20 20 28 73 72 66 69 33 38 2d 70 6f 73 74 70     (srfi38-postp
1c5a0 61 73 73 20 28 70 61 72 73 65 2d 6f 75 74 65 72  ass (parse-outer
1c5b0 6d 6f 73 74 2d 64 61 74 75 6d 29 29 29 29 0a 0a  most-datum))))..
1c5c0 20 20 28 64 65 66 69 6e 65 20 77 72 69 74 65 2f    (define write/
1c5d0 73 73 20 77 72 69 74 65 2d 77 69 74 68 2d 73 68  ss write-with-sh
1c5e0 61 72 65 64 2d 73 74 72 75 63 74 75 72 65 29 0a  ared-structure).
1c5f0 20 20 28 64 65 66 69 6e 65 20 72 65 61 64 2f 73    (define read/s
1c600 73 20 72 65 61 64 2d 77 69 74 68 2d 73 68 61 72  s read-with-shar
1c610 65 64 2d 73 74 72 75 63 74 75 72 65 29 0a 29 0a  ed-structure).).