home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3952 < prev    next >
SHell self-extracting ARchive  |  1991-09-02  |  62.3 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: 3952

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news, ASCII text default
100% checkBytes Printable ASCII default
100% dexmagic PrintFox/Pagefox WEAK default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/news default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 77 75 | 70 6f 73 74 21 75 75 6e |Path: wu|post!uun|
|00000010| 65 74 21 6d 63 73 75 6e | 21 68 70 34 6e 6c 21 73 |et!mcsun|!hp4nl!s|
|00000020| 76 69 6e 30 32 21 77 7a | 76 21 77 69 65 74 73 65 |vin02!wz|v!wietse|
|00000030| 0a 46 72 6f 6d 3a 20 77 | 69 65 74 73 65 40 77 7a |.From: w|ietse@wz|
|00000040| 76 2e 77 69 6e 2e 74 75 | 65 2e 6e 6c 20 28 57 69 |v.win.tu|e.nl (Wi|
|00000050| 65 74 73 65 20 56 65 6e | 65 6d 61 29 0a 4e 65 77 |etse Ven|ema).New|
|00000060| 73 67 72 6f 75 70 73 3a | 20 61 6c 74 2e 73 6f 75 |sgroups:| alt.sou|
|00000070| 72 63 65 73 0a 53 75 62 | 6a 65 63 74 3a 20 75 6e |rces.Sub|ject: un|
|00000080| 70 72 6f 74 6f 20 2d 20 | 61 6e 73 69 20 74 6f 20 |proto - |ansi to |
|00000090| 6f 6c 64 20 63 20 63 6f | 6e 76 65 72 74 65 72 0a |old c co|nverter.|
|000000a0| 4d 65 73 73 61 67 65 2d | 49 44 3a 20 3c 32 35 36 |Message-|ID: <256|
|000000b0| 39 40 77 7a 76 2e 77 69 | 6e 2e 74 75 65 2e 6e 6c |9@wzv.wi|n.tue.nl|
|000000c0| 3e 0a 44 61 74 65 3a 20 | 31 20 53 65 70 20 39 31 |>.Date: |1 Sep 91|
|000000d0| 20 32 31 3a 31 39 3a 32 | 36 20 47 4d 54 0a 46 6f | 21:19:2|6 GMT.Fo|
|000000e0| 6c 6c 6f 77 75 70 2d 54 | 6f 3a 20 61 6c 74 2e 73 |llowup-T|o: alt.s|
|000000f0| 6f 75 72 63 65 73 2e 64 | 0a 44 69 73 74 72 69 62 |ources.d|.Distrib|
|00000100| 75 74 69 6f 6e 3a 20 61 | 6c 74 0a 4f 72 67 61 6e |ution: a|lt.Organ|
|00000110| 69 7a 61 74 69 6f 6e 3a | 20 45 69 6e 64 68 6f 76 |ization:| Eindhov|
|00000120| 65 6e 20 55 6e 69 76 65 | 72 73 69 74 79 20 6f 66 |en Unive|rsity of|
|00000130| 20 54 65 63 68 6e 6f 6c | 6f 67 79 2c 20 54 68 65 | Technol|ogy, The|
|00000140| 20 4e 65 74 68 65 72 6c | 61 6e 64 73 0a 4c 69 6e | Netherl|ands.Lin|
|00000150| 65 73 3a 20 32 34 36 36 | 0a 0a 54 68 69 73 20 69 |es: 2466|..This i|
|00000160| 73 20 61 20 66 69 6c 74 | 65 72 20 74 68 61 74 20 |s a filt|er that |
|00000170| 73 69 74 73 20 69 6e 20 | 62 65 74 77 65 65 6e 20 |sits in |between |
|00000180| 74 68 65 20 43 20 70 72 | 65 70 72 6f 63 65 73 73 |the C pr|eprocess|
|00000190| 6f 72 20 61 6e 64 20 74 | 68 65 20 6e 65 78 74 20 |or and t|he next |
|000001a0| 43 0a 63 6f 6d 70 69 6c | 65 72 20 73 74 61 67 65 |C.compil|er stage|
|000001b0| 2e 20 49 74 73 20 70 75 | 72 70 6f 73 65 20 69 73 |. Its pu|rpose is|
|000001c0| 20 74 6f 20 6c 65 61 76 | 65 20 6f 6c 64 2d 73 74 | to leav|e old-st|
|000001d0| 79 6c 65 20 43 20 61 6c | 6f 6e 65 2c 20 61 6e 64 |yle C al|one, and|
|000001e0| 20 74 6f 0a 64 65 2d 41 | 4e 53 49 2d 66 79 20 66 | to.de-A|NSI-fy f|
|000001f0| 75 6e 63 74 69 6f 6e 20 | 68 65 61 64 69 6e 67 73 |unction |headings|
|00000200| 2c 20 66 75 6e 63 74 69 | 6f 6e 20 70 6f 69 6e 74 |, functi|on point|
|00000210| 65 72 20 74 79 70 65 20 | 64 65 63 6c 61 72 61 74 |er type |declarat|
|00000220| 69 6f 6e 73 20 28 61 6e | 64 0a 63 61 73 74 73 29 |ions (an|d.casts)|
|00000230| 2c 20 66 75 6e 63 74 69 | 6f 6e 20 74 79 70 65 20 |, functi|on type |
|00000240| 64 65 63 6c 61 72 61 74 | 69 6f 6e 73 2c 20 61 6e |declarat|ions, an|
|00000250| 64 20 63 6f 6d 62 69 6e | 61 74 69 6f 6e 73 20 74 |d combin|ations t|
|00000260| 68 65 72 65 6f 66 2e 20 | 4d 61 6e 79 0a 66 72 65 |hereof. |Many.fre|
|00000270| 65 6c 79 2d 64 69 73 74 | 72 69 62 75 74 61 62 6c |ely-dist|ributabl|
|00000280| 65 20 75 6e 70 72 6f 74 | 6f 69 7a 65 72 73 20 68 |e unprot|oizers h|
|00000290| 61 76 65 20 70 72 6f 62 | 6c 65 6d 73 20 77 69 74 |ave prob|lems wit|
|000002a0| 68 20 74 68 65 20 6c 61 | 74 74 65 72 20 62 65 63 |h the la|tter bec|
|000002b0| 61 75 73 65 0a 74 68 65 | 79 20 61 72 65 20 62 61 |ause.the|y are ba|
|000002c0| 73 65 64 20 6f 6e 20 61 | 20 6e 6f 6e 2d 72 65 63 |sed on a| non-rec|
|000002d0| 75 72 73 69 76 65 20 61 | 6c 67 6f 72 69 74 68 6d |ursive a|lgorithm|
|000002e0| 20 6f 72 20 65 76 65 6e | 20 6d 61 6b 65 20 61 73 | or even| make as|
|000002f0| 73 75 6d 70 74 69 6f 6e | 73 0a 61 62 6f 75 74 20 |sumption|s.about |
|00000300| 63 6f 64 65 20 6c 61 79 | 6f 75 74 2e 0a 0a 54 68 |code lay|out...Th|
|00000310| 65 20 75 6e 70 72 6f 74 | 6f 74 79 70 65 72 20 68 |e unprot|otyper h|
|00000320| 61 73 20 73 75 70 70 6f | 72 74 20 66 6f 72 20 73 |as suppo|rt for s|
|00000330| 79 73 74 65 6d 73 20 74 | 68 61 74 20 72 65 71 75 |ystems t|hat requ|
|00000340| 69 72 65 20 73 70 65 63 | 69 61 6c 20 74 72 69 63 |ire spec|ial tric|
|00000350| 6b 73 0a 66 6f 72 20 76 | 61 72 69 61 64 69 63 20 |ks.for v|ariadic |
|00000360| 66 75 6e 63 74 69 6f 6e | 73 20 28 6d 61 6e 79 20 |function|s (many |
|00000370| 64 6f 6e 27 74 29 2e 20 | 41 20 73 61 6d 70 6c 65 |don't). |A sample|
|00000380| 20 60 73 74 64 61 72 67 | 2e 68 27 20 66 69 6c 65 | `stdarg|.h' file|
|00000390| 20 69 73 0a 70 72 6f 76 | 69 64 65 64 20 74 68 61 | is.prov|ided tha|
|000003a0| 74 20 77 6f 72 6b 73 20 | 77 69 74 68 20 73 70 61 |t works |with spa|
|000003b0| 72 63 2c 20 38 30 2a 38 | 36 20 61 6e 64 20 74 68 |rc, 80*8|6 and th|
|000003c0| 61 74 20 73 68 6f 75 6c | 64 20 61 6c 73 6f 20 77 |at shoul|d also w|
|000003d0| 6f 72 6b 20 77 69 74 68 | 0a 6d 63 36 38 78 78 78 |ork with|.mc68xxx|
|000003e0| 20 61 6e 64 20 76 61 78 | 2e 0a 0a 4f 74 68 65 72 | and vax|...Other|
|000003f0| 20 41 4e 53 49 2d 69 73 | 6d 73 20 61 72 65 20 6a | ANSI-is|ms are j|
|00000400| 75 73 74 20 70 61 73 73 | 65 64 20 6f 6e 20 77 69 |ust pass|ed on wi|
|00000410| 74 68 6f 75 74 20 6d 6f | 64 69 66 69 63 61 74 69 |thout mo|dificati|
|00000420| 6f 6e 2c 20 73 75 63 68 | 20 61 73 0a 74 72 69 67 |on, such| as.trig|
|00000430| 72 61 70 68 73 2c 20 74 | 6f 6b 65 6e 20 70 61 73 |raphs, t|oken pas|
|00000440| 74 69 6e 67 20 28 23 23 | 29 2c 20 23 70 72 61 67 |ting (##|), #prag|
|00000450| 6d 61 73 20 61 6e 64 20 | 73 74 72 69 6e 67 69 7a |mas and |stringiz|
|00000460| 69 6e 67 20 28 23 74 65 | 78 74 29 2e 0a 0a 54 68 |ing (#te|xt)...Th|
|00000470| 65 20 75 6e 70 72 6f 74 | 6f 74 79 70 65 72 20 64 |e unprot|otyper d|
|00000480| 6f 65 73 20 6e 6f 74 20 | 75 6e 64 65 72 73 74 61 |oes not |understa|
|00000490| 6e 64 20 64 65 63 6c 61 | 72 61 74 69 6f 6e 73 20 |nd decla|rations |
|000004a0| 6f 66 20 28 77 68 61 74 | 65 76 65 72 29 2e 20 54 |of (what|ever). T|
|000004b0| 68 65 0a 72 65 73 75 6c | 74 20 77 69 6c 6c 20 62 |he.resul|t will b|
|000004c0| 65 20 61 20 73 79 6e 74 | 61 78 20 65 72 72 6f 72 |e a synt|ax error|
|000004d0| 20 73 6f 20 74 68 69 73 | 20 73 68 6f 75 6c 64 20 | so this| should |
|000004e0| 6e 6f 74 20 67 6f 20 62 | 79 20 75 6e 6e 6f 74 69 |not go b|y unnoti|
|000004f0| 63 65 64 2e 0a 0a 49 20 | 73 75 63 63 65 73 73 66 |ced...I |successf|
|00000500| 75 6c 6c 79 20 75 73 65 | 64 20 74 68 69 73 20 75 |ully use|d this u|
|00000510| 6e 70 72 6f 74 6f 74 79 | 70 65 72 20 6f 6e 20 61 |nprototy|per on a|
|00000520| 20 66 65 77 20 6d 65 67 | 61 62 79 74 65 73 20 6f | few meg|abytes o|
|00000530| 66 20 73 6f 75 72 63 65 | 2e 0a 50 6c 65 61 73 65 |f source|..Please|
|00000540| 20 6c 65 74 20 6d 65 20 | 6b 6e 6f 77 20 69 66 20 | let me |know if |
|00000550| 74 68 65 20 70 72 6f 67 | 72 61 6d 20 68 61 73 20 |the prog|ram has |
|00000560| 73 6f 6d 65 20 73 65 76 | 65 72 65 20 70 72 6f 62 |some sev|ere prob|
|00000570| 6c 65 6d 73 20 74 68 61 | 74 20 49 0a 6f 76 65 72 |lems tha|t I.over|
|00000580| 6c 6f 6f 6b 65 64 2e 20 | 20 49 66 20 61 6c 6c 20 |looked. | If all |
|00000590| 67 6f 65 73 20 77 65 6c | 6c 2c 20 74 68 65 20 6e |goes wel|l, the n|
|000005a0| 65 78 74 20 76 65 72 73 | 69 6f 6e 20 6f 66 20 74 |ext vers|ion of t|
|000005b0| 68 69 73 20 70 72 6f 67 | 72 61 6d 20 77 69 6c 6c |his prog|ram will|
|000005c0| 20 62 65 0a 73 75 62 6d | 69 74 74 65 64 20 74 6f | be.subm|itted to|
|000005d0| 20 63 6f 6d 70 2e 73 6f | 75 72 63 65 73 2e 6d 69 | comp.so|urces.mi|
|000005e0| 73 63 2e 0a 0a 09 57 69 | 65 74 73 65 20 56 65 6e |sc....Wi|etse Ven|
|000005f0| 65 6d 61 0a 09 77 69 65 | 74 73 65 40 77 7a 76 2e |ema..wie|tse@wzv.|
|00000600| 77 69 6e 2e 74 75 65 2e | 6e 6c 0a 09 45 69 6e 64 |win.tue.|nl..Eind|
|00000610| 68 6f 76 65 6e 20 55 6e | 69 76 65 72 73 69 74 79 |hoven Un|iversity|
|00000620| 20 6f 66 20 54 65 63 68 | 6e 6f 6c 6f 67 79 0a 09 | of Tech|nology..|
|00000630| 54 68 65 20 4e 65 74 68 | 65 72 6c 61 6e 64 73 0a |The Neth|erlands.|
|00000640| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000650| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000660| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000670| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000680| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 75 |his line|, then u|
|00000690| 6e 70 61 63 6b 0a 23 20 | 69 74 20 62 79 20 73 61 |npack.# |it by sa|
|000006a0| 76 69 6e 67 20 69 74 20 | 69 6e 74 6f 20 61 20 66 |ving it |into a f|
|000006b0| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|000006c0| 73 68 20 66 69 6c 65 22 | 2e 20 20 54 6f 20 6f 76 |sh file"|. To ov|
|000006d0| 65 72 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |erwrite |existing|
|000006e0| 0a 23 20 66 69 6c 65 73 | 2c 20 74 79 70 65 20 22 |.# files|, type "|
|000006f0| 73 68 20 66 69 6c 65 20 | 2d 63 22 2e 20 20 59 6f |sh file |-c". Yo|
|00000700| 75 20 63 61 6e 20 61 6c | 73 6f 20 66 65 65 64 20 |u can al|so feed |
|00000710| 74 68 69 73 20 61 73 20 | 73 74 61 6e 64 61 72 64 |this as |standard|
|00000720| 20 69 6e 70 75 74 20 76 | 69 61 0a 23 20 75 6e 73 | input v|ia.# uns|
|00000730| 68 61 72 2c 20 6f 72 20 | 62 79 20 74 79 70 69 6e |har, or |by typin|
|00000740| 67 20 22 73 68 20 3c 66 | 69 6c 65 22 2c 20 65 2e |g "sh <f|ile", e.|
|00000750| 67 2e 2e 20 20 49 66 20 | 74 68 69 73 20 61 72 63 |g.. If |this arc|
|00000760| 68 69 76 65 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |hive is |complete|
|00000770| 2c 20 79 6f 75 0a 23 20 | 77 69 6c 6c 20 73 65 65 |, you.# |will see|
|00000780| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000790| 65 73 73 61 67 65 20 61 | 74 20 74 68 65 20 65 6e |essage a|t the en|
|000007a0| 64 3a 0a 23 09 09 22 45 | 6e 64 20 6f 66 20 73 68 |d:.#.."E|nd of sh|
|000007b0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2e 22 0a 23 20 |ell arch|ive.".# |
|000007c0| 43 6f 6e 74 65 6e 74 73 | 3a 20 20 52 45 41 44 4d |Contents|: READM|
|000007d0| 45 20 4d 61 6b 65 66 69 | 6c 65 20 74 6f 6b 5f 69 |E Makefi|le tok_i|
|000007e0| 6f 2e 63 20 74 6f 6b 5f | 63 6c 61 73 73 2e 63 20 |o.c tok_|class.c |
|000007f0| 74 6f 6b 5f 70 6f 6f 6c | 2e 63 20 75 6e 70 72 6f |tok_pool|.c unpro|
|00000800| 74 6f 2e 63 0a 23 20 20 | 20 76 73 74 72 69 6e 67 |to.c.# | vstring|
|00000810| 2e 63 20 70 61 72 73 65 | 2e 68 20 74 6f 6b 65 6e |.c parse|.h token|
|00000820| 2e 68 20 76 73 74 72 69 | 6e 67 2e 68 20 63 70 70 |.h vstri|ng.h cpp|
|00000830| 2e 73 68 20 73 74 64 61 | 72 67 2e 68 20 76 61 72 |.sh stda|rg.h var|
|00000840| 61 72 67 73 2e 63 0a 23 | 20 20 20 65 78 61 6d 70 |args.c.#| examp|
|00000850| 6c 65 2e 63 20 65 78 61 | 6d 70 6c 65 2e 6f 75 74 |le.c exa|mple.out|
|00000860| 20 75 6e 70 72 6f 74 6f | 2e 31 0a 23 20 57 72 61 | unproto|.1.# Wra|
|00000870| 70 70 65 64 20 62 79 20 | 77 69 65 74 73 65 40 77 |pped by |wietse@w|
|00000880| 7a 76 20 6f 6e 20 53 75 | 6e 20 53 65 70 20 20 31 |zv on Su|n Sep 1|
|00000890| 20 32 33 3a 31 30 3a 30 | 30 20 31 39 39 31 0a 50 | 23:10:0|0 1991.P|
|000008a0| 41 54 48 3d 2f 62 69 6e | 3a 2f 75 73 72 2f 62 69 |ATH=/bin|:/usr/bi|
|000008b0| 6e 3a 2f 75 73 72 2f 75 | 63 62 20 3b 20 65 78 70 |n:/usr/u|cb ; exp|
|000008c0| 6f 72 74 20 50 41 54 48 | 0a 69 66 20 74 65 73 74 |ort PATH|.if test|
|000008d0| 20 2d 66 20 52 45 41 44 | 4d 45 20 2d 61 20 22 24 | -f READ|ME -a "$|
|000008e0| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|000008f0| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|00000900| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 6f 76 65 72 2d |: Will n|ot over-|
|00000910| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 20 66 |write ex|isting f|
|00000920| 69 6c 65 20 5c 22 52 45 | 41 44 4d 45 5c 22 0a 65 |ile \"RE|ADME\".e|
|00000930| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|00000940| 78 74 72 61 63 74 69 6e | 67 20 5c 22 52 45 41 44 |xtractin|g \"READ|
|00000950| 4d 45 5c 22 20 5c 28 33 | 37 37 36 20 63 68 61 72 |ME\" \(3|776 char|
|00000960| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00000970| 5e 58 2f 2f 22 20 3e 52 | 45 41 44 4d 45 20 3c 3c |^X//" >R|EADME <<|
|00000980| 27 45 4e 44 5f 4f 46 5f | 52 45 41 44 4d 45 27 0a |'END_OF_|README'.|
|00000990| 58 40 28 23 29 20 52 45 | 41 44 4d 45 20 31 2e 31 |X@(#) RE|ADME 1.1|
|000009a0| 20 39 31 2f 30 39 2f 30 | 31 20 32 33 3a 30 38 3a | 91/09/0|1 23:08:|
|000009b0| 33 31 0a 58 0a 58 75 6e | 70 72 6f 74 6f 20 2d 20 |31.X.Xun|proto - |
|000009c0| 41 4e 53 49 20 43 20 74 | 6f 20 6f 6c 64 20 43 20 |ANSI C t|o old C |
|000009d0| 63 6f 6e 76 65 72 74 65 | 72 0a 58 0a 58 50 75 72 |converte|r.X.XPur|
|000009e0| 70 6f 73 65 3a 0a 58 0a | 58 54 68 69 73 20 69 73 |pose:.X.|XThis is|
|000009f0| 20 61 20 66 69 6c 74 65 | 72 20 74 68 61 74 20 73 | a filte|r that s|
|00000a00| 69 74 73 20 69 6e 20 62 | 65 74 77 65 65 6e 20 74 |its in b|etween t|
|00000a10| 68 65 20 43 20 70 72 65 | 70 72 6f 63 65 73 73 6f |he C pre|processo|
|00000a20| 72 20 61 6e 64 20 74 68 | 65 20 6e 65 78 74 20 43 |r and th|e next C|
|00000a30| 0a 58 63 6f 6d 70 69 6c | 65 72 20 73 74 61 67 65 |.Xcompil|er stage|
|00000a40| 2e 20 49 74 73 20 70 75 | 72 70 6f 73 65 20 69 73 |. Its pu|rpose is|
|00000a50| 20 74 6f 20 6c 65 61 76 | 65 20 6f 6c 64 2d 73 74 | to leav|e old-st|
|00000a60| 79 6c 65 20 43 20 61 6c | 6f 6e 65 2c 20 61 6e 64 |yle C al|one, and|
|00000a70| 20 74 6f 0a 58 64 65 2d | 41 4e 53 49 2d 66 79 20 | to.Xde-|ANSI-fy |
|00000a80| 66 75 6e 63 74 69 6f 6e | 20 68 65 61 64 69 6e 67 |function| heading|
|00000a90| 73 2c 20 66 75 6e 63 74 | 69 6f 6e 20 70 6f 69 6e |s, funct|ion poin|
|00000aa0| 74 65 72 20 74 79 70 65 | 20 64 65 63 6c 61 72 61 |ter type| declara|
|00000ab0| 74 69 6f 6e 73 20 28 61 | 6e 64 0a 58 63 61 73 74 |tions (a|nd.Xcast|
|00000ac0| 73 29 2c 20 66 75 6e 63 | 74 69 6f 6e 20 74 79 70 |s), func|tion typ|
|00000ad0| 65 20 64 65 63 6c 61 72 | 61 74 69 6f 6e 73 2c 20 |e declar|ations, |
|00000ae0| 61 6e 64 20 63 6f 6d 62 | 69 6e 61 74 69 6f 6e 73 |and comb|inations|
|00000af0| 20 74 68 65 72 65 6f 66 | 2e 20 4d 61 6e 79 0a 58 | thereof|. Many.X|
|00000b00| 66 72 65 65 6c 79 2d 64 | 69 73 74 72 69 62 75 74 |freely-d|istribut|
|00000b10| 61 62 6c 65 20 75 6e 70 | 72 6f 74 6f 69 7a 65 72 |able unp|rotoizer|
|00000b20| 73 20 68 61 76 65 20 70 | 72 6f 62 6c 65 6d 73 20 |s have p|roblems |
|00000b30| 77 69 74 68 20 74 68 65 | 20 6c 61 74 74 65 72 20 |with the| latter |
|00000b40| 62 65 63 61 75 73 65 0a | 58 74 68 65 79 20 61 72 |because.|Xthey ar|
|00000b50| 65 20 62 61 73 65 64 20 | 6f 6e 20 61 20 6e 6f 6e |e based |on a non|
|00000b60| 2d 72 65 63 75 72 73 69 | 76 65 20 61 6c 67 6f 72 |-recursi|ve algor|
|00000b70| 69 74 68 6d 20 6f 72 20 | 65 76 65 6e 20 6d 61 6b |ithm or |even mak|
|00000b80| 65 20 61 73 73 75 6d 70 | 74 69 6f 6e 73 0a 58 61 |e assump|tions.Xa|
|00000b90| 62 6f 75 74 20 63 6f 64 | 65 20 6c 61 79 6f 75 74 |bout cod|e layout|
|00000ba0| 2e 0a 58 0a 58 54 68 65 | 20 75 6e 70 72 6f 74 6f |..X.XThe| unproto|
|00000bb0| 74 79 70 65 72 20 68 61 | 73 20 73 75 70 70 6f 72 |typer ha|s suppor|
|00000bc0| 74 20 66 6f 72 20 73 79 | 73 74 65 6d 73 20 74 68 |t for sy|stems th|
|00000bd0| 61 74 20 72 65 71 75 69 | 72 65 20 73 70 65 63 69 |at requi|re speci|
|00000be0| 61 6c 20 74 72 69 63 6b | 73 0a 58 66 6f 72 20 76 |al trick|s.Xfor v|
|00000bf0| 61 72 69 61 64 69 63 20 | 66 75 6e 63 74 69 6f 6e |ariadic |function|
|00000c00| 73 20 28 6d 61 6e 79 20 | 64 6f 6e 27 74 29 2e 20 |s (many |don't). |
|00000c10| 41 20 73 61 6d 70 6c 65 | 20 60 73 74 64 61 72 67 |A sample| `stdarg|
|00000c20| 2e 68 27 20 66 69 6c 65 | 20 69 73 0a 58 70 72 6f |.h' file| is.Xpro|
|00000c30| 76 69 64 65 64 2e 0a 58 | 0a 58 52 65 73 74 72 69 |vided..X|.XRestri|
|00000c40| 63 74 69 6f 6e 73 3a 0a | 58 0a 58 4f 74 68 65 72 |ctions:.|X.XOther|
|00000c50| 20 41 4e 53 49 2d 69 73 | 6d 73 20 61 72 65 20 6a | ANSI-is|ms are j|
|00000c60| 75 73 74 20 70 61 73 73 | 65 64 20 6f 6e 20 77 69 |ust pass|ed on wi|
|00000c70| 74 68 6f 75 74 20 6d 6f | 64 69 66 69 63 61 74 69 |thout mo|dificati|
|00000c80| 6f 6e 2c 20 73 75 63 68 | 20 61 73 0a 58 74 72 69 |on, such| as.Xtri|
|00000c90| 67 72 61 70 68 73 2c 20 | 74 6f 6b 65 6e 20 70 61 |graphs, |token pa|
|00000ca0| 73 74 69 6e 67 20 28 23 | 23 29 2c 20 23 70 72 61 |sting (#|#), #pra|
|00000cb0| 67 6d 61 73 20 61 6e 64 | 20 73 74 72 69 6e 67 69 |gmas and| stringi|
|00000cc0| 7a 69 6e 67 20 28 23 74 | 65 78 74 29 2e 0a 58 0a |zing (#t|ext)..X.|
|00000cd0| 58 54 68 65 20 75 6e 70 | 72 6f 74 6f 74 79 70 65 |XThe unp|rototype|
|00000ce0| 72 20 64 6f 65 73 20 6e | 6f 74 20 75 6e 64 65 72 |r does n|ot under|
|00000cf0| 73 74 61 6e 64 20 64 65 | 63 6c 61 72 61 74 69 6f |stand de|claratio|
|00000d00| 6e 73 20 6f 66 20 28 77 | 68 61 74 65 76 65 72 29 |ns of (w|hatever)|
|00000d10| 2e 20 54 68 65 0a 58 72 | 65 73 75 6c 74 20 77 69 |. The.Xr|esult wi|
|00000d20| 6c 6c 20 62 65 20 61 20 | 73 79 6e 74 61 78 20 65 |ll be a |syntax e|
|00000d30| 72 72 6f 72 20 73 6f 20 | 74 68 69 73 20 73 68 6f |rror so |this sho|
|00000d40| 75 6c 64 20 6e 6f 74 20 | 67 6f 20 62 79 20 75 6e |uld not |go by un|
|00000d50| 6e 6f 74 69 63 65 64 2e | 0a 58 0a 58 4f 70 65 72 |noticed.|.X.XOper|
|00000d60| 61 74 69 6f 6e 3a 0a 58 | 0a 58 54 68 69 73 20 70 |ation:.X|.XThis p|
|00000d70| 61 63 6b 61 67 65 20 69 | 6d 70 6c 65 6d 65 6e 74 |ackage i|mplement|
|00000d80| 73 20 61 6e 20 6e 6f 6e | 2d 64 65 66 61 75 6c 74 |s an non|-default|
|00000d90| 20 43 20 70 72 65 70 72 | 6f 63 65 73 73 6f 72 20 | C prepr|ocessor |
|00000da0| 28 74 68 65 20 6f 75 74 | 70 75 74 20 66 72 6f 6d |(the out|put from|
|00000db0| 0a 58 74 68 65 20 64 65 | 66 61 75 6c 74 20 43 20 |.Xthe de|fault C |
|00000dc0| 70 72 65 70 72 6f 63 65 | 73 73 6f 72 20 62 65 69 |preproce|ssor bei|
|00000dd0| 6e 67 20 70 69 70 65 64 | 20 74 68 72 6f 75 67 68 |ng piped| through|
|00000de0| 20 74 68 65 20 75 6e 70 | 72 6f 74 6f 74 79 70 65 | the unp|rototype|
|00000df0| 72 29 2e 20 20 48 6f 77 | 0a 58 6f 6e 65 20 74 65 |r). How|.Xone te|
|00000e00| 6c 6c 73 20 74 68 65 20 | 43 20 63 6f 6d 70 69 6c |lls the |C compil|
|00000e10| 65 72 20 74 6f 20 75 73 | 65 20 61 6e 20 6e 6f 6e |er to us|e an non|
|00000e20| 2d 64 65 66 61 75 6c 74 | 20 70 72 65 70 72 6f 63 |-default| preproc|
|00000e30| 65 73 73 6f 72 20 70 72 | 6f 67 72 61 6d 20 69 73 |essor pr|ogram is|
|00000e40| 0a 58 73 6f 6d 65 77 68 | 61 74 20 63 6f 6d 70 69 |.Xsomewh|at compi|
|00000e50| 6c 65 72 2d 64 65 70 65 | 6e 64 65 6e 74 3a 0a 58 |ler-depe|ndent:.X|
|00000e60| 0a 58 20 20 20 20 53 75 | 6e 4f 53 20 34 2e 78 3a |.X Su|nOS 4.x:|
|00000e70| 20 20 63 63 20 2d 51 70 | 61 74 68 20 64 69 72 65 | cc -Qp|ath dire|
|00000e80| 63 74 6f 72 79 5f 77 69 | 74 68 5f 6e 6f 6e 2d 64 |ctory_wi|th_non-d|
|00000e90| 65 66 61 75 6c 74 5f 63 | 70 70 20 2e 2e 2e 0a 58 |efault_c|pp ....X|
|00000ea0| 0a 58 20 20 20 20 53 79 | 73 56 20 52 65 6c 32 3a |.X Sy|sV Rel2:|
|00000eb0| 20 20 63 63 20 2d 42 64 | 69 72 65 63 74 6f 72 79 | cc -Bd|irectory|
|00000ec0| 5f 77 69 74 68 5f 6e 6f | 6e 2d 64 65 66 61 75 6c |_with_no|n-defaul|
|00000ed0| 74 5f 63 70 70 2f 20 2d | 74 70 20 2e 2e 2e 0a 58 |t_cpp/ -|tp ....X|
|00000ee0| 0a 58 59 6f 75 72 20 43 | 20 63 6f 6d 70 69 6c 65 |.XYour C| compile|
|00000ef0| 72 20 6d 61 6e 75 61 6c | 20 73 68 6f 75 6c 64 20 |r manual| should |
|00000f00| 70 72 6f 76 69 64 65 20 | 74 68 65 20 6e 65 63 65 |provide |the nece|
|00000f10| 73 73 61 72 79 20 69 6e | 66 6f 72 6d 61 74 69 6f |ssary in|formatio|
|00000f20| 6e 2e 0a 58 0a 58 4f 6e | 20 73 6f 6d 65 20 73 79 |n..X.XOn| some sy|
|00000f30| 73 74 65 6d 73 20 74 68 | 65 20 6c 69 6e 74 28 31 |stems th|e lint(1|
|00000f40| 29 20 63 6f 6d 6d 61 6e | 64 20 69 73 20 6a 75 73 |) comman|d is jus|
|00000f50| 74 20 61 20 73 68 65 6c | 6c 20 73 63 72 69 70 74 |t a shel|l script|
|00000f60| 2c 20 61 6e 64 20 77 72 | 69 74 69 6e 67 0a 58 61 |, and wr|iting.Xa|
|00000f70| 20 76 65 72 73 69 6f 6e | 20 74 68 61 74 20 75 73 | version| that us|
|00000f80| 65 73 20 74 68 65 20 75 | 6e 70 72 6f 74 6f 74 79 |es the u|nprototy|
|00000f90| 70 65 72 20 73 68 6f 75 | 6c 64 20 6e 6f 74 20 62 |per shou|ld not b|
|00000fa0| 65 20 74 6f 6f 20 68 61 | 72 64 2e 20 57 69 74 68 |e too ha|rd. With|
|00000fb0| 20 53 75 6e 4f 53 0a 58 | 34 2e 78 2c 20 2f 75 73 | SunOS.X|4.x, /us|
|00000fc0| 72 2f 62 69 6e 2f 6c 69 | 6e 74 20 69 73 20 6e 6f |r/bin/li|nt is no|
|00000fd0| 74 20 61 20 73 68 65 6c | 6c 20 73 63 72 69 70 74 |t a shel|l script|
|00000fe0| 2c 20 62 75 74 20 69 74 | 20 61 63 63 65 70 74 73 |, but it| accepts|
|00000ff0| 20 74 68 65 20 73 61 6d | 65 0a 58 63 6f 6d 6d 61 | the sam|e.Xcomma|
|00001000| 6e 64 20 73 79 6e 74 61 | 78 20 61 73 20 74 68 65 |nd synta|x as the|
|00001010| 20 63 63 28 31 29 20 66 | 6f 72 20 74 68 65 20 73 | cc(1) f|or the s|
|00001020| 70 65 63 69 66 69 63 61 | 74 69 6f 6e 20 6f 66 20 |pecifica|tion of |
|00001030| 61 20 6e 6f 6e 2d 64 65 | 66 61 75 6c 74 0a 58 63 |a non-de|fault.Xc|
|00001040| 6f 6d 70 69 6c 65 72 20 | 70 61 73 73 2e 20 0a 58 |ompiler |pass. .X|
|00001050| 0a 58 59 6f 75 20 6d 61 | 79 20 68 61 76 65 20 74 |.XYou ma|y have t|
|00001060| 6f 20 64 6f 20 73 6f 6d | 65 20 72 65 73 65 61 72 |o do som|e resear|
|00001070| 63 68 20 6f 6e 20 74 68 | 65 20 6c 69 6e 74 20 63 |ch on th|e lint c|
|00001080| 6f 6d 6d 61 6e 64 20 70 | 72 6f 76 69 64 65 64 20 |ommand p|rovided |
|00001090| 77 69 74 68 20 79 6f 75 | 72 0a 58 6f 77 6e 20 6d |with you|r.Xown m|
|000010a0| 61 63 68 69 6e 65 2e 0a | 58 0a 58 43 6f 6e 66 69 |achine..|X.XConfi|
|000010b0| 67 75 72 61 74 69 6f 6e | 3a 0a 58 0a 58 43 68 65 |guration|:.X.XChe|
|000010c0| 63 6b 20 74 68 65 20 63 | 6f 6e 74 65 6e 74 73 20 |ck the c|ontents |
|000010d0| 6f 66 20 74 68 65 20 60 | 73 74 64 61 72 67 2e 68 |of the `|stdarg.h|
|000010e0| 27 20 66 69 6c 65 20 70 | 72 6f 76 69 64 65 64 20 |' file p|rovided |
|000010f0| 77 69 74 68 20 74 68 69 | 73 20 70 61 63 6b 61 67 |with thi|s packag|
|00001100| 65 2e 0a 58 54 68 69 73 | 20 66 69 6c 65 20 73 65 |e..XThis| file se|
|00001110| 72 76 65 73 20 61 20 64 | 75 61 6c 20 70 75 72 70 |rves a d|ual purp|
|00001120| 6f 73 65 2e 20 49 74 20 | 73 68 6f 75 6c 64 20 62 |ose. It |should b|
|00001130| 65 20 69 6e 63 6c 75 64 | 65 64 20 62 79 20 43 20 |e includ|ed by C |
|00001140| 73 6f 75 72 63 65 20 66 | 69 6c 65 0a 58 74 68 61 |source f|ile.Xtha|
|00001150| 74 20 69 6d 70 6c 65 6d | 65 6e 74 73 20 41 4e 53 |t implem|ents ANS|
|00001160| 49 2d 73 74 79 6c 65 20 | 76 61 72 69 61 64 69 63 |I-style |variadic|
|00001170| 20 66 75 6e 63 74 69 6f | 6e 73 2e 20 49 74 20 69 | functio|ns. It i|
|00001180| 73 20 61 6c 73 6f 20 75 | 73 65 64 20 74 6f 0a 58 |s also u|sed to.X|
|00001190| 63 6f 6e 66 69 67 75 72 | 65 20 74 68 65 20 60 75 |configur|e the `u|
|000011a0| 6e 70 72 6f 74 6f 27 20 | 70 72 6f 67 72 61 6d 20 |nproto' |program |
|000011b0| 73 6f 20 74 68 61 74 20 | 69 74 20 65 6d 69 74 73 |so that |it emits|
|000011c0| 20 74 68 65 20 70 72 6f | 70 65 72 20 6d 61 67 69 | the pro|per magi|
|000011d0| 63 20 66 6f 72 0a 58 74 | 68 65 20 60 2e 2e 2e 27 |c for.Xt|he `...'|
|000011e0| 20 63 6f 6e 73 74 72 75 | 63 74 2e 0a 58 0a 58 54 | constru|ct..X.XT|
|000011f0| 68 65 20 60 73 74 64 61 | 72 67 2e 68 27 20 66 69 |he `stda|rg.h' fi|
|00001200| 6c 65 20 63 6f 6e 74 61 | 69 6e 73 20 64 65 66 69 |le conta|ins defi|
|00001210| 6e 69 74 69 6f 6e 73 20 | 66 6f 72 20 74 68 65 20 |nitions |for the |
|00001220| 73 70 61 72 63 20 61 72 | 63 68 69 74 65 63 74 75 |sparc ar|chitectu|
|00001230| 72 65 20 61 6e 64 0a 58 | 66 6f 72 20 61 72 63 68 |re and.X|for arch|
|00001240| 69 74 65 63 74 75 72 65 | 73 20 74 68 61 74 20 70 |itecture|s that p|
|00001250| 61 73 73 20 61 72 67 75 | 6d 65 6e 74 73 20 76 69 |ass argu|ments vi|
|00001260| 61 20 74 68 65 20 73 74 | 61 63 6b 20 28 75 73 75 |a the st|ack (usu|
|00001270| 61 6c 6c 79 20 4f 4b 20 | 66 6f 72 0a 58 38 30 2a |ally OK |for.X80*|
|00001280| 38 36 2c 20 6d 63 36 38 | 6b 20 61 6e 64 20 76 61 |86, mc68|k and va|
|00001290| 78 20 43 20 63 6f 6d 70 | 69 6c 65 72 73 29 2e 20 |x C comp|ilers). |
|000012a0| 20 52 69 73 63 20 70 72 | 6f 63 65 73 73 6f 72 73 | Risc pr|ocessors|
|000012b0| 20 6f 66 74 65 6e 20 6e | 65 65 64 20 73 70 65 63 | often n|eed spec|
|000012c0| 69 61 6c 0a 58 74 72 69 | 63 6b 73 2e 20 20 54 68 |ial.Xtri|cks. Th|
|000012d0| 65 73 65 20 61 72 65 20 | 75 73 75 61 6c 6c 79 20 |ese are |usually |
|000012e0| 66 6f 75 6e 64 20 69 6e | 20 74 68 65 20 66 69 6c |found in| the fil|
|000012f0| 65 20 60 2f 75 73 72 2f | 69 6e 63 6c 75 64 65 2f |e `/usr/|include/|
|00001300| 76 61 72 61 72 67 73 2e | 68 27 2e 0a 58 0a 58 54 |varargs.|h'..X.XT|
|00001310| 68 65 20 66 69 6c 65 20 | 60 76 61 72 61 72 67 73 |he file |`varargs|
|00001320| 2e 63 27 20 70 72 6f 76 | 69 64 65 64 20 77 69 74 |.c' prov|ided wit|
|00001330| 68 20 74 68 69 73 20 70 | 61 63 6b 61 67 65 20 63 |h this p|ackage c|
|00001340| 61 6e 20 62 65 20 75 73 | 65 64 20 74 6f 20 76 65 |an be us|ed to ve|
|00001350| 72 69 66 79 0a 58 74 68 | 61 74 20 74 68 65 20 60 |rify.Xth|at the `|
|00001360| 73 74 64 61 72 67 2e 68 | 27 20 66 69 6c 65 20 68 |stdarg.h|' file h|
|00001370| 61 73 20 62 65 65 6e 20 | 73 65 74 20 75 70 20 63 |as been |set up c|
|00001380| 6f 72 72 65 63 74 6c 79 | 2e 0a 58 0a 58 46 6f 72 |orrectly|..X.XFor|
|00001390| 20 6d 61 78 69 6d 61 6c | 20 66 6c 65 78 69 62 69 | maximal| flexibi|
|000013a0| 6c 69 74 79 2c 20 79 6f | 75 20 63 61 6e 20 75 73 |lity, yo|u can us|
|000013b0| 65 20 74 68 65 20 60 63 | 70 70 27 20 73 68 65 6c |e the `c|pp' shel|
|000013c0| 6c 20 73 63 72 69 70 74 | 20 70 72 6f 76 69 64 65 |l script| provide|
|000013d0| 64 0a 58 77 69 74 68 20 | 74 68 69 73 20 70 61 63 |d.Xwith |this pac|
|000013e0| 6b 61 67 65 20 74 6f 20 | 73 65 74 20 75 70 20 74 |kage to |set up t|
|000013f0| 68 65 20 70 69 70 65 20 | 62 65 74 77 65 65 6e 20 |he pipe |between |
|00001400| 74 68 65 20 64 65 66 61 | 75 6c 74 20 43 20 70 72 |the defa|ult C pr|
|00001410| 65 70 72 6f 63 65 73 73 | 6f 72 0a 58 61 6e 64 20 |eprocess|or.Xand |
|00001420| 74 68 65 20 75 6e 70 72 | 6f 74 6f 74 79 70 65 72 |the unpr|ototyper|
|00001430| 20 63 6f 6d 6d 61 6e 64 | 2e 20 54 68 65 20 73 63 | command|. The sc|
|00001440| 72 69 70 74 20 61 73 73 | 75 6d 65 73 20 74 68 61 |ript ass|umes tha|
|00001450| 74 20 74 68 65 20 75 6e | 70 72 6f 74 6f 74 79 70 |t the un|prototyp|
|00001460| 65 72 0a 58 62 69 6e 61 | 72 79 20 69 73 20 63 61 |er.Xbina|ry is ca|
|00001470| 6c 6c 65 64 20 60 75 6e | 70 72 6f 74 6f 27 2e 20 |lled `un|proto'. |
|00001480| 53 65 65 20 74 68 65 20 | 4d 61 6b 65 66 69 6c 65 |See the |Makefile|
|00001490| 20 66 6f 72 20 64 65 74 | 61 69 6c 73 2e 0a 58 0a | for det|ails..X.|
|000014a0| 58 54 68 65 20 6f 76 65 | 72 68 65 61 64 20 6f 66 |XThe ove|rhead of|
|000014b0| 20 73 68 65 6c 6c 2d 73 | 63 72 69 70 74 20 69 6e | shell-s|cript in|
|000014c0| 74 65 72 70 72 65 74 61 | 74 69 6f 6e 20 63 61 6e |terpreta|tion can|
|000014d0| 20 62 65 20 61 76 6f 69 | 64 65 64 20 62 79 20 68 | be avoi|ded by h|
|000014e0| 61 76 69 6e 67 0a 58 74 | 68 65 20 75 6e 70 72 6f |aving.Xt|he unpro|
|000014f0| 74 6f 74 79 70 65 72 20 | 69 74 73 65 6c 66 20 6f |totyper |itself o|
|00001500| 70 65 6e 20 74 68 65 20 | 70 69 70 65 20 74 6f 20 |pen the |pipe to |
|00001510| 74 68 65 20 43 20 70 72 | 65 70 72 6f 63 65 73 73 |the C pr|eprocess|
|00001520| 6f 72 2e 20 20 49 6e 20 | 74 68 69 73 0a 58 63 61 |or. In |this.Xca|
|00001530| 73 65 2c 20 74 68 65 20 | 60 75 6e 70 72 6f 74 6f |se, the |`unproto|
|00001540| 2e 63 27 20 73 6f 75 72 | 63 65 20 66 69 6c 65 20 |.c' sour|ce file |
|00001550| 73 68 6f 75 6c 64 20 62 | 65 20 63 6f 6d 70 69 6c |should b|e compil|
|00001560| 65 64 20 77 69 74 68 20 | 74 68 65 0a 58 60 50 49 |ed with |the.X`PI|
|00001570| 50 45 5f 54 48 52 4f 55 | 47 48 5f 43 50 50 27 20 |PE_THROU|GH_CPP' |
|00001580| 6d 61 63 72 6f 20 64 65 | 66 69 6e 65 64 20 61 73 |macro de|fined as|
|00001590| 20 74 68 65 20 70 61 74 | 68 6e 61 6d 65 20 6f 66 | the pat|hname of|
|000015a0| 20 74 68 65 20 43 20 70 | 72 65 70 72 6f 63 65 73 | the C p|reproces|
|000015b0| 73 6f 72 0a 58 28 75 73 | 75 61 6c 6c 79 20 60 2f |sor.X(us|ually `/|
|000015c0| 6c 69 62 2f 63 70 70 27 | 29 2c 20 61 6e 64 20 74 |lib/cpp'|), and t|
|000015d0| 68 65 20 75 6e 70 72 6f | 74 6f 74 79 70 65 72 20 |he unpro|totyper |
|000015e0| 62 69 6e 61 72 79 20 73 | 68 6f 75 6c 64 20 62 65 |binary s|hould be|
|000015f0| 20 63 61 6c 6c 65 64 0a | 58 60 63 70 70 27 2e 20 | called.|X`cpp'. |
|00001600| 20 53 65 65 20 74 68 65 | 20 4d 61 6b 65 66 69 6c | See the| Makefil|
|00001610| 65 20 66 6f 72 20 64 65 | 74 61 69 6c 73 2e 0a 58 |e for de|tails..X|
|00001620| 0a 58 49 6e 73 74 61 6c | 6c 61 74 69 6f 6e 3a 0a |.XInstal|lation:.|
|00001630| 58 0a 58 49 6e 73 74 61 | 6c 6c 20 74 68 65 20 60 |X.XInsta|ll the `|
|00001640| 73 74 64 61 72 67 2e 68 | 27 20 69 6e 63 6c 75 64 |stdarg.h|' includ|
|00001650| 65 20 66 69 6c 65 20 61 | 6e 64 20 74 68 65 20 60 |e file a|nd the `|
|00001660| 75 6e 70 72 6f 74 6f 2e | 31 27 20 6d 61 6e 75 61 |unproto.|1' manua|
|00001670| 6c 20 70 61 67 65 20 69 | 6e 0a 58 73 75 69 74 61 |l page i|n.Xsuita|
|00001680| 62 6c 65 20 70 6c 61 63 | 65 73 2e 0a 58 0a 58 49 |ble plac|es..X.XI|
|00001690| 66 20 79 6f 75 20 75 73 | 65 20 74 68 65 20 60 63 |f you us|e the `c|
|000016a0| 70 70 27 20 73 68 65 6c | 6c 20 73 63 72 69 70 74 |pp' shel|l script|
|000016b0| 20 74 6f 20 70 69 70 65 | 20 74 68 65 20 70 72 65 | to pipe| the pre|
|000016c0| 70 72 6f 63 65 73 73 6f | 72 20 6f 75 74 70 75 74 |processo|r output|
|000016d0| 0a 58 74 68 72 6f 75 67 | 68 20 74 68 65 20 75 6e |.Xthroug|h the un|
|000016e0| 70 72 6f 74 6f 74 79 70 | 65 72 20 70 72 6f 67 72 |prototyp|er progr|
|000016f0| 61 6d 2c 20 69 6e 73 74 | 61 6c 6c 20 74 68 65 20 |am, inst|all the |
|00001700| 60 75 6e 70 72 6f 74 6f | 27 20 62 69 6e 61 72 79 |`unproto|' binary|
|00001710| 20 69 6e 20 61 0a 58 70 | 6c 61 63 65 20 77 68 65 | in a.Xp|lace whe|
|00001720| 72 65 20 74 68 65 20 60 | 63 70 70 27 20 73 68 65 |re the `|cpp' she|
|00001730| 6c 6c 20 73 63 72 69 70 | 74 20 63 61 6e 20 66 69 |ll scrip|t can fi|
|00001740| 6e 64 20 69 74 2c 20 61 | 6e 64 20 69 6e 73 74 61 |nd it, a|nd insta|
|00001750| 6c 6c 20 74 68 65 20 60 | 63 70 70 27 0a 58 73 68 |ll the `|cpp'.Xsh|
|00001760| 65 6c 6c 20 73 63 72 69 | 70 74 20 69 6e 20 61 20 |ell scri|pt in a |
|00001770| 73 75 69 74 61 62 6c 65 | 20 70 6c 61 63 65 2e 0a |suitable| place..|
|00001780| 58 0a 58 49 66 20 74 68 | 65 20 75 6e 70 72 6f 74 |X.XIf th|e unprot|
|00001790| 6f 74 79 70 65 72 20 69 | 74 73 65 6c 66 20 6f 70 |otyper i|tself op|
|000017a0| 65 6e 73 20 74 68 65 20 | 70 69 70 65 20 74 6f 20 |ens the |pipe to |
|000017b0| 74 68 65 20 43 20 70 72 | 65 70 72 6f 63 65 73 73 |the C pr|eprocess|
|000017c0| 6f 72 20 28 69 2e 65 2e | 0a 58 74 68 65 20 75 6e |or (i.e.|.Xthe un|
|000017d0| 70 72 6f 74 6f 74 79 70 | 65 72 20 77 61 73 20 62 |prototyp|er was b|
|000017e0| 75 69 6c 74 20 77 69 74 | 68 20 74 68 65 20 60 50 |uilt wit|h the `P|
|000017f0| 49 50 45 5f 54 48 52 4f | 55 47 48 5f 43 50 50 27 |IPE_THRO|UGH_CPP'|
|00001800| 20 6d 61 63 72 6f 20 64 | 65 66 69 6e 65 64 29 2c | macro d|efined),|
|00001810| 0a 58 69 6e 73 74 61 6c | 6c 20 74 68 65 20 60 63 |.Xinstal|l the `c|
|00001820| 70 70 27 20 75 6e 70 72 | 6f 74 6f 74 79 70 65 72 |pp' unpr|ototyper|
|00001830| 20 62 69 6e 61 72 79 20 | 69 6e 20 61 20 73 75 69 | binary |in a sui|
|00001840| 74 61 62 6c 65 20 70 6c | 61 63 65 2e 0a 58 0a 58 |table pl|ace..X.X|
|00001850| 09 57 69 65 74 73 65 20 | 56 65 6e 65 6d 61 0a 58 |.Wietse |Venema.X|
|00001860| 09 77 69 65 74 73 65 40 | 77 7a 76 2e 77 69 6e 2e |.wietse@|wzv.win.|
|00001870| 74 75 65 2e 6e 6c 0a 58 | 09 45 69 6e 64 68 6f 76 |tue.nl.X|.Eindhov|
|00001880| 65 6e 20 55 6e 69 76 65 | 72 73 69 74 79 20 6f 66 |en Unive|rsity of|
|00001890| 20 54 65 63 68 6e 6f 6c | 6f 67 79 0a 58 09 54 68 | Technol|ogy.X.Th|
|000018a0| 65 20 4e 65 74 68 65 72 | 6c 61 6e 64 73 0a 45 4e |e Nether|lands.EN|
|000018b0| 44 5f 4f 46 5f 52 45 41 | 44 4d 45 0a 69 66 20 74 |D_OF_REA|DME.if t|
|000018c0| 65 73 74 20 33 37 37 36 | 20 2d 6e 65 20 60 77 63 |est 3776| -ne `wc|
|000018d0| 20 2d 63 20 3c 52 45 41 | 44 4d 45 60 3b 20 74 68 | -c <REA|DME`; th|
|000018e0| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|000018f0| 3a 20 5c 22 52 45 41 44 | 4d 45 5c 22 20 75 6e 70 |: \"READ|ME\" unp|
|00001900| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|00001910| 20 73 69 7a 65 21 0a 66 | 69 0a 23 20 65 6e 64 20 | size!.f|i.# end |
|00001920| 6f 66 20 6f 76 65 72 77 | 72 69 74 69 6e 67 20 63 |of overw|riting c|
|00001930| 68 65 63 6b 0a 66 69 0a | 69 66 20 74 65 73 74 20 |heck.fi.|if test |
|00001940| 2d 66 20 4d 61 6b 65 66 | 69 6c 65 20 2d 61 20 22 |-f Makef|ile -a "|
|00001950| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00001960| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00001970| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: Will |not over|
|00001980| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|00001990| 66 69 6c 65 20 5c 22 4d | 61 6b 65 66 69 6c 65 5c |file \"M|akefile\|
|000019a0| 22 0a 65 6c 73 65 0a 65 | 63 68 6f 20 73 68 61 72 |".else.e|cho shar|
|000019b0| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 4d |: Extrac|ting \"M|
|000019c0| 61 6b 65 66 69 6c 65 5c | 22 20 5c 28 32 35 32 33 |akefile\|" \(2523|
|000019d0| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 73 65 | charact|ers\).se|
|000019e0| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 4d 61 6b 65 |d "s/^X/|/" >Make|
|000019f0| 66 69 6c 65 20 3c 3c 27 | 45 4e 44 5f 4f 46 5f 4d |file <<'|END_OF_M|
|00001a00| 61 6b 65 66 69 6c 65 27 | 0a 58 23 20 40 28 23 29 |akefile'|.X# @(#)|
|00001a10| 20 4d 61 6b 65 66 69 6c | 65 20 31 2e 31 20 39 31 | Makefil|e 1.1 91|
|00001a20| 2f 30 39 2f 30 31 20 32 | 33 3a 30 38 3a 33 32 0a |/09/01 2|3:08:32.|
|00001a30| 58 0a 58 23 23 20 42 45 | 47 49 4e 20 43 4f 4e 46 |X.X## BE|GIN CONF|
|00001a40| 49 47 55 52 41 54 49 4f | 4e 20 53 54 55 46 46 0a |IGURATIO|N STUFF.|
|00001a50| 58 0a 58 23 20 46 6f 72 | 20 6d 61 78 69 6d 61 6c |X.X# For| maximal|
|00001a60| 20 66 6c 65 78 69 62 69 | 6c 69 74 79 2c 20 74 68 | flexibi|lity, th|
|00001a70| 65 20 22 2f 6c 69 62 2f | 63 70 70 20 7c 20 75 6e |e "/lib/|cpp | un|
|00001a80| 70 72 6f 74 6f 22 20 70 | 69 70 65 6c 69 6e 65 20 |proto" p|ipeline |
|00001a90| 63 61 6e 20 62 65 0a 58 | 23 20 70 61 63 6b 61 67 |can be.X|# packag|
|00001aa0| 65 64 20 61 73 20 61 6e | 20 65 78 65 63 75 74 61 |ed as an| executa|
|00001ab0| 62 6c 65 20 73 68 65 6c | 6c 20 73 63 72 69 70 74 |ble shel|l script|
|00001ac0| 20 28 73 65 65 20 74 68 | 65 20 70 72 6f 76 69 64 | (see th|e provid|
|00001ad0| 65 64 20 66 69 6c 65 20 | 22 63 70 70 2e 73 68 22 |ed file |"cpp.sh"|
|00001ae0| 29 0a 58 23 20 74 68 61 | 74 20 73 68 6f 75 6c 64 |).X# tha|t should|
|00001af0| 20 62 65 20 69 6e 73 74 | 61 6c 6c 65 64 20 61 73 | be inst|alled as|
|00001b00| 20 22 2f 77 68 61 74 65 | 76 65 72 2f 63 70 70 22 | "/whate|ver/cpp"|
|00001b10| 2e 20 54 68 69 73 20 73 | 63 72 69 70 74 20 73 68 |. This s|cript sh|
|00001b20| 6f 75 6c 64 20 74 68 65 | 6e 20 62 65 0a 58 23 20 |ould the|n be.X# |
|00001b30| 73 70 65 63 69 66 69 65 | 64 20 74 6f 20 74 68 65 |specifie|d to the|
|00001b40| 20 43 20 63 6f 6d 70 69 | 6c 65 72 20 61 73 20 61 | C compi|ler as a|
|00001b50| 20 6e 6f 6e 2d 64 65 66 | 61 75 6c 74 20 70 72 65 | non-def|ault pre|
|00001b60| 70 72 6f 63 65 73 73 6f | 72 2e 0a 58 23 0a 58 23 |processo|r..X#.X#|
|00001b70| 20 50 52 4f 47 09 3d 20 | 75 6e 70 72 6f 74 6f 0a | PROG.= |unproto.|
|00001b80| 58 23 20 50 49 50 45 09 | 3d 20 0a 58 0a 58 23 20 |X# PIPE.|= .X.X# |
|00001b90| 46 6f 72 20 6d 61 78 69 | 6d 61 6c 20 70 65 72 66 |For maxi|mal perf|
|00001ba0| 6f 72 6d 61 6e 63 65 2c | 20 74 68 65 20 6f 76 65 |ormance,| the ove|
|00001bb0| 72 68 65 61 64 20 6f 66 | 20 73 68 65 6c 6c 20 73 |rhead of| shell s|
|00001bc0| 63 72 69 70 74 20 69 6e | 70 72 65 74 61 74 69 6f |cript in|pretatio|
|00001bd0| 6e 20 63 61 6e 0a 58 23 | 20 62 65 20 65 6c 69 6d |n can.X#| be elim|
|00001be0| 69 6e 61 74 65 64 20 62 | 79 20 68 61 76 69 6e 67 |inated b|y having|
|00001bf0| 20 74 68 65 20 75 6e 70 | 72 6f 74 6f 74 79 70 65 | the unp|rototype|
|00001c00| 72 20 70 72 6f 67 72 61 | 6d 20 69 74 73 65 6c 66 |r progra|m itself|
|00001c10| 20 6f 70 65 6e 20 74 68 | 65 20 70 69 70 65 0a 58 | open th|e pipe.X|
|00001c20| 23 20 74 6f 20 74 68 65 | 20 70 72 65 70 72 6f 63 |# to the| preproc|
|00001c30| 65 73 73 6f 72 2e 20 20 | 49 6e 20 74 68 61 74 20 |essor. |In that |
|00001c40| 63 61 73 65 2c 20 64 65 | 66 69 6e 65 20 74 68 65 |case, de|fine the|
|00001c50| 20 43 50 50 5f 50 52 4f | 47 20 6d 61 63 72 6f 20 | CPP_PRO|G macro |
|00001c60| 61 73 20 74 68 65 0a 58 | 23 20 70 61 74 68 20 6e |as the.X|# path n|
|00001c70| 61 6d 65 20 6f 66 20 74 | 68 65 20 64 65 66 61 75 |ame of t|he defau|
|00001c80| 6c 74 20 43 20 70 72 65 | 70 72 6f 63 65 73 73 6f |lt C pre|processo|
|00001c90| 72 20 28 75 73 75 61 6c | 6c 79 20 22 2f 6c 69 62 |r (usual|ly "/lib|
|00001ca0| 2f 63 70 70 22 29 2c 20 | 69 6e 73 74 61 6c 6c 0a |/cpp"), |install.|
|00001cb0| 58 23 20 74 68 65 20 75 | 6e 70 72 6f 74 6f 74 79 |X# the u|nprototy|
|00001cc0| 70 65 72 20 61 73 20 22 | 2f 77 68 61 74 65 76 65 |per as "|/whateve|
|00001cd0| 72 2f 63 70 70 22 20 61 | 6e 64 20 73 70 65 63 69 |r/cpp" a|nd speci|
|00001ce0| 66 79 20 69 74 20 74 6f | 20 74 68 65 20 43 20 63 |fy it to| the C c|
|00001cf0| 6f 6d 70 69 6c 65 72 20 | 61 73 0a 58 23 20 61 20 |ompiler |as.X# a |
|00001d00| 6e 6f 6e 2d 64 65 66 61 | 75 6c 74 20 70 72 65 70 |non-defa|ult prep|
|00001d10| 72 6f 63 65 73 73 6f 72 | 2e 0a 58 23 20 0a 58 50 |rocessor|..X# .XP|
|00001d20| 52 4f 47 09 3d 20 63 70 | 70 0a 58 50 49 50 45 09 |ROG.= cp|p.XPIPE.|
|00001d30| 3d 20 2d 44 50 49 50 45 | 5f 54 48 52 4f 55 47 48 |= -DPIPE|_THROUGH|
|00001d40| 5f 43 50 50 3d 5c 22 2f | 6c 69 62 2f 63 70 70 5c |_CPP=\"/|lib/cpp\|
|00001d50| 22 0a 58 0a 58 23 20 53 | 6f 6d 65 20 63 6f 6d 70 |".X.X# S|ome comp|
|00001d60| 69 6c 65 72 73 20 63 6f | 6d 70 6c 61 69 6e 20 61 |ilers co|mplain a|
|00001d70| 62 6f 75 74 20 73 6f 6d | 65 20 23 64 69 72 65 63 |bout som|e #direc|
|00001d80| 74 69 76 65 73 2e 20 41 | 6e 20 65 78 61 6d 70 6c |tives. A|n exampl|
|00001d90| 65 20 66 6f 6c 6c 6f 77 | 73 2e 0a 58 23 20 54 68 |e follow|s..X# Th|
|00001da0| 69 73 20 69 73 20 6f 6e | 6c 79 20 61 20 70 61 72 |is is on|ly a par|
|00001db0| 74 69 61 6c 20 73 6f 6c | 75 74 69 6f 6e 2c 20 62 |tial sol|ution, b|
|00001dc0| 65 63 61 75 73 65 20 74 | 68 65 20 64 69 72 65 63 |ecause t|he direc|
|00001dd0| 74 69 76 65 73 20 61 72 | 65 20 73 74 69 6c 6c 20 |tives ar|e still |
|00001de0| 73 65 65 6e 0a 58 23 20 | 62 79 20 2f 6c 69 62 2f |seen.X# |by /lib/|
|00001df0| 63 70 70 2e 0a 58 23 0a | 58 23 20 53 4b 49 50 09 |cpp..X#.|X# SKIP.|
|00001e00| 3d 20 2d 44 49 47 4e 4f | 52 45 5f 44 49 52 45 43 |= -DIGNO|RE_DIREC|
|00001e10| 54 49 56 45 53 3d 5c 22 | 66 6f 6f 5c 22 2c 5c 22 |TIVES=\"|foo\",\"|
|00001e20| 62 61 72 5c 22 0a 58 23 | 0a 58 53 4b 49 50 09 3d |bar\".X#|.XSKIP.=|
|00001e30| 20 2d 44 49 47 4e 4f 52 | 45 5f 44 49 52 45 43 54 | -DIGNOR|E_DIRECT|
|00001e40| 49 56 45 53 3d 5c 22 70 | 72 61 67 6d 61 5c 22 0a |IVES=\"p|ragma\".|
|00001e50| 58 0a 58 23 20 49 66 20 | 79 6f 75 20 6e 65 65 64 |X.X# If |you need|
|00001e60| 20 73 75 70 70 6f 72 74 | 20 66 6f 72 20 66 75 6e | support| for fun|
|00001e70| 63 74 69 6f 6e 73 20 74 | 68 61 74 20 69 6d 70 6c |ctions t|hat impl|
|00001e80| 65 6d 65 6e 74 20 41 4e | 53 49 2d 73 74 79 6c 65 |ement AN|SI-style|
|00001e90| 20 76 61 72 69 61 62 6c | 65 0a 58 23 20 6c 65 6e | variabl|e.X# len|
|00001ea0| 67 74 68 20 61 72 67 75 | 6d 65 6e 74 20 6c 69 73 |gth argu|ment lis|
|00001eb0| 74 73 2c 20 65 64 69 74 | 20 74 68 65 20 73 74 64 |ts, edit| the std|
|00001ec0| 61 72 67 2e 68 20 66 69 | 6c 65 20 70 72 6f 76 69 |arg.h fi|le provi|
|00001ed0| 64 65 64 20 77 69 74 68 | 20 74 68 69 73 0a 58 23 |ded with| this.X#|
|00001ee0| 20 70 61 63 6b 61 67 65 | 20 73 6f 20 74 68 61 74 | package| so that|
|00001ef0| 20 69 74 20 63 6f 6e 74 | 61 69 6e 73 20 74 68 65 | it cont|ains the|
|00001f00| 20 70 72 6f 70 65 72 20 | 64 65 66 69 6e 69 74 69 | proper |definiti|
|00001f10| 6f 6e 73 20 66 6f 72 20 | 79 6f 75 72 20 6d 61 63 |ons for |your mac|
|00001f20| 68 69 6e 65 2e 0a 58 0a | 58 23 23 20 45 4e 44 20 |hine..X.|X## END |
|00001f30| 43 4f 4e 46 49 47 55 52 | 41 54 49 4f 4e 20 53 54 |CONFIGUR|ATION ST|
|00001f40| 55 46 46 0a 58 0a 58 43 | 46 49 4c 45 53 09 3d 20 |UFF.X.XC|FILES.= |
|00001f50| 74 6f 6b 5f 69 6f 2e 63 | 20 74 6f 6b 5f 63 6c 61 |tok_io.c| tok_cla|
|00001f60| 73 73 2e 63 20 74 6f 6b | 5f 70 6f 6f 6c 2e 63 20 |ss.c tok|_pool.c |
|00001f70| 75 6e 70 72 6f 74 6f 2e | 63 20 76 73 74 72 69 6e |unproto.|c vstrin|
|00001f80| 67 2e 63 0a 58 48 46 49 | 4c 45 53 09 3d 20 70 61 |g.c.XHFI|LES.= pa|
|00001f90| 72 73 65 2e 68 20 74 6f | 6b 65 6e 2e 68 20 76 73 |rse.h to|ken.h vs|
|00001fa0| 74 72 69 6e 67 2e 68 0a | 58 53 43 52 49 50 54 53 |tring.h.|XSCRIPTS|
|00001fb0| 09 3d 20 63 70 70 2e 73 | 68 0a 58 53 41 4d 50 4c |.= cpp.s|h.XSAMPL|
|00001fc0| 45 53 09 3d 20 73 74 64 | 61 72 67 2e 68 20 76 61 |ES.= std|arg.h va|
|00001fd0| 72 61 72 67 73 2e 63 20 | 65 78 61 6d 70 6c 65 2e |rargs.c |example.|
|00001fe0| 63 20 65 78 61 6d 70 6c | 65 2e 6f 75 74 20 0a 58 |c exampl|e.out .X|
|00001ff0| 53 4f 55 52 43 45 53 09 | 3d 20 52 45 41 44 4d 45 |SOURCES.|= README|
|00002000| 20 4d 61 6b 65 66 69 6c | 65 20 24 28 43 46 49 4c | Makefil|e $(CFIL|
|00002010| 45 53 29 20 24 28 48 46 | 49 4c 45 53 29 20 24 28 |ES) $(HF|ILES) $(|
|00002020| 53 43 52 49 50 54 53 29 | 20 24 28 53 41 4d 50 4c |SCRIPTS)| $(SAMPL|
|00002030| 45 53 29 0a 58 46 49 4c | 45 53 09 3d 20 24 28 53 |ES).XFIL|ES.= $(S|
|00002040| 4f 55 52 43 45 53 29 20 | 75 6e 70 72 6f 74 6f 2e |OURCES) |unproto.|
|00002050| 31 0a 58 4f 42 4a 45 43 | 54 53 09 3d 20 74 6f 6b |1.XOBJEC|TS.= tok|
|00002060| 5f 69 6f 2e 6f 20 74 6f | 6b 5f 63 6c 61 73 73 2e |_io.o to|k_class.|
|00002070| 6f 20 74 6f 6b 5f 70 6f | 6f 6c 2e 6f 20 75 6e 70 |o tok_po|ol.o unp|
|00002080| 72 6f 74 6f 2e 6f 20 76 | 73 74 72 69 6e 67 2e 6f |roto.o v|string.o|
|00002090| 0a 58 0a 58 43 46 4c 41 | 47 53 09 3d 20 2d 4f 20 |.X.XCFLA|GS.= -O |
|000020a0| 24 28 50 49 50 45 29 20 | 24 28 53 4b 49 50 29 0a |$(PIPE) |$(SKIP).|
|000020b0| 58 23 43 46 4c 41 47 53 | 09 3d 20 2d 4f 20 2d 70 |X#CFLAGS|.= -O -p|
|000020c0| 67 20 2d 44 73 74 61 74 | 69 63 3d 20 24 28 50 49 |g -Dstat|ic= $(PI|
|000020d0| 50 45 29 20 24 28 53 4b | 49 50 29 0a 58 23 43 46 |PE) $(SK|IP).X#CF|
|000020e0| 4c 41 47 53 09 3d 20 2d | 67 20 24 28 50 49 50 45 |LAGS.= -|g $(PIPE|
|000020f0| 29 20 24 28 53 4b 49 50 | 29 20 2d 44 44 45 42 55 |) $(SKIP|) -DDEBU|
|00002100| 47 0a 58 0a 58 24 28 50 | 52 4f 47 29 3a 20 24 28 |G.X.X$(P|ROG): $(|
|00002110| 4f 42 4a 45 43 54 53 29 | 0a 58 09 63 63 20 24 28 |OBJECTS)|.X.cc $(|
|00002120| 43 46 4c 41 47 53 29 20 | 2d 6f 20 24 40 20 24 28 |CFLAGS) |-o $@ $(|
|00002130| 4f 42 4a 45 43 54 53 29 | 20 0a 58 0a 58 23 20 46 |OBJECTS)| .X.X# F|
|00002140| 6f 72 20 6c 69 6e 74 69 | 6e 67 2c 20 65 6e 61 62 |or linti|ng, enab|
|00002150| 6c 65 20 61 6c 6c 20 62 | 65 6c 6c 73 20 61 6e 64 |le all b|ells and|
|00002160| 20 77 68 69 73 74 6c 65 | 73 2e 0a 58 0a 58 6c 69 | whistle|s..X.Xli|
|00002170| 6e 74 3a 0a 58 09 6c 69 | 6e 74 20 2d 44 50 49 50 |nt:.X.li|nt -DPIP|
|00002180| 45 5f 54 48 52 4f 55 47 | 48 5f 43 50 50 3d 5c 22 |E_THROUG|H_CPP=\"|
|00002190| 66 6f 6f 5c 22 20 2d 44 | 49 47 4e 4f 52 45 5f 44 |foo\" -D|IGNORE_D|
|000021a0| 49 52 45 43 54 49 56 45 | 53 3d 5c 22 66 6f 6f 5c |IRECTIVE|S=\"foo\|
|000021b0| 22 2c 5c 22 62 61 72 5c | 22 20 5c 0a 58 09 24 28 |",\"bar\|" \.X.$(|
|000021c0| 43 46 49 4c 45 53 29 0a | 58 0a 58 23 20 54 65 73 |CFILES).|X.X# Tes|
|000021d0| 74 69 6e 67 20 72 65 71 | 75 69 72 65 73 20 74 68 |ting req|uires th|
|000021e0| 61 74 20 74 68 65 20 70 | 72 6f 67 72 61 6d 20 69 |at the p|rogram i|
|000021f0| 73 20 63 6f 6d 70 69 6c | 65 64 20 77 69 74 68 20 |s compil|ed with |
|00002200| 2d 44 44 45 42 55 47 0a | 58 0a 58 74 65 73 74 3a |-DDEBUG.|X.Xtest:|
|00002210| 09 24 28 50 52 4f 47 29 | 20 65 78 61 6d 70 6c 65 |.$(PROG)| example|
|00002220| 2e 63 20 65 78 61 6d 70 | 6c 65 2e 6f 75 74 0a 58 |.c examp|le.out.X|
|00002230| 09 2e 2f 63 70 70 20 65 | 78 61 6d 70 6c 65 2e 63 |../cpp e|xample.c|
|00002240| 20 3e 65 78 61 6d 70 6c | 65 2e 74 6d 70 0a 58 09 | >exampl|e.tmp.X.|
|00002250| 40 65 63 68 6f 20 74 68 | 65 20 66 6f 6c 6c 6f 77 |@echo th|e follow|
|00002260| 69 6e 67 20 64 69 66 66 | 20 63 6f 6d 6d 61 6e 64 |ing diff| command|
|00002270| 20 73 68 6f 75 6c 64 20 | 70 72 6f 64 75 63 65 20 | should |produce |
|00002280| 6e 6f 20 6f 75 74 70 75 | 74 0a 58 09 64 69 66 66 |no outpu|t.X.diff|
|00002290| 20 2d 62 20 65 78 61 6d | 70 6c 65 2e 6f 75 74 20 | -b exam|ple.out |
|000022a0| 65 78 61 6d 70 6c 65 2e | 74 6d 70 0a 58 09 72 6d |example.|tmp.X.rm|
|000022b0| 20 2d 66 20 65 78 61 6d | 70 6c 65 2e 74 6d 70 0a | -f exam|ple.tmp.|
|000022c0| 58 0a 58 73 68 61 72 3a | 09 24 28 46 49 4c 45 53 |X.Xshar:|.$(FILES|
|000022d0| 29 0a 58 09 40 73 68 61 | 72 20 24 28 46 49 4c 45 |).X.@sha|r $(FILE|
|000022e0| 53 29 0a 58 0a 58 61 72 | 63 68 69 76 65 3a 0a 58 |S).X.Xar|chive:.X|
|000022f0| 09 24 28 41 52 43 48 49 | 56 45 29 20 24 28 53 4f |.$(ARCHI|VE) $(SO|
|00002300| 55 52 43 45 53 29 0a 58 | 0a 58 63 6c 65 61 6e 3a |URCES).X|.Xclean:|
|00002310| 0a 58 09 72 6d 20 2d 66 | 20 2a 2e 6f 20 63 6f 72 |.X.rm -f| *.o cor|
|00002320| 65 20 63 70 70 20 75 6e | 70 72 6f 74 6f 20 6d 6f |e cpp un|proto mo|
|00002330| 6e 2e 6f 75 74 20 76 61 | 72 61 72 67 73 2e 6f 20 |n.out va|rargs.o |
|00002340| 76 61 72 61 72 67 73 20 | 65 78 61 6d 70 6c 65 2e |varargs |example.|
|00002350| 74 6d 70 0a 58 0a 58 74 | 6f 6b 5f 63 6c 61 73 73 |tmp.X.Xt|ok_class|
|00002360| 2e 6f 20 3a 20 74 6f 6b | 5f 63 6c 61 73 73 2e 63 |.o : tok|_class.c|
|00002370| 20 70 61 72 73 65 2e 68 | 20 74 6f 6b 65 6e 2e 68 | parse.h| token.h|
|00002380| 20 0a 58 74 6f 6b 5f 69 | 6f 2e 6f 20 3a 20 74 6f | .Xtok_i|o.o : to|
|00002390| 6b 5f 69 6f 2e 63 20 74 | 6f 6b 65 6e 2e 68 20 76 |k_io.c t|oken.h v|
|000023a0| 73 74 72 69 6e 67 2e 68 | 20 0a 58 74 6f 6b 5f 70 |string.h| .Xtok_p|
|000023b0| 6f 6f 6c 2e 6f 20 3a 20 | 74 6f 6b 5f 70 6f 6f 6c |ool.o : |tok_pool|
|000023c0| 2e 63 20 74 6f 6b 65 6e | 2e 68 20 76 73 74 72 69 |.c token|.h vstri|
|000023d0| 6e 67 2e 68 20 0a 58 75 | 6e 70 72 6f 74 6f 2e 6f |ng.h .Xu|nproto.o|
|000023e0| 20 3a 20 75 6e 70 72 6f | 74 6f 2e 63 20 76 73 74 | : unpro|to.c vst|
|000023f0| 72 69 6e 67 2e 68 20 73 | 74 64 61 72 67 2e 68 20 |ring.h s|tdarg.h |
|00002400| 70 61 72 73 65 2e 68 20 | 74 6f 6b 65 6e 2e 68 20 |parse.h |token.h |
|00002410| 0a 58 76 73 74 72 69 6e | 67 2e 6f 20 3a 20 76 73 |.Xvstrin|g.o : vs|
|00002420| 74 72 69 6e 67 2e 63 20 | 76 73 74 72 69 6e 67 2e |tring.c |vstring.|
|00002430| 68 20 0a 45 4e 44 5f 4f | 46 5f 4d 61 6b 65 66 69 |h .END_O|F_Makefi|
|00002440| 6c 65 0a 69 66 20 74 65 | 73 74 20 32 35 32 33 20 |le.if te|st 2523 |
|00002450| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 4d 61 6b 65 |-ne `wc |-c <Make|
|00002460| 66 69 6c 65 60 3b 20 74 | 68 65 6e 0a 20 20 20 20 |file`; t|hen. |
|00002470| 65 63 68 6f 20 73 68 61 | 72 3a 20 5c 22 4d 61 6b |echo sha|r: \"Mak|
|00002480| 65 66 69 6c 65 5c 22 20 | 75 6e 70 61 63 6b 65 64 |efile\" |unpacked|
|00002490| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|000024a0| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 6f 76 |!.fi.# e|nd of ov|
|000024b0| 65 72 77 72 69 74 69 6e | 67 20 63 68 65 63 6b 0a |erwritin|g check.|
|000024c0| 66 69 0a 69 66 20 74 65 | 73 74 20 2d 66 20 74 6f |fi.if te|st -f to|
|000024d0| 6b 5f 69 6f 2e 63 20 2d | 61 20 22 24 7b 31 7d 22 |k_io.c -|a "${1}"|
|000024e0| 20 21 3d 20 22 2d 63 22 | 20 3b 20 74 68 65 6e 20 | != "-c"| ; then |
|000024f0| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 57 69 |. echo |shar: Wi|
|00002500| 6c 6c 20 6e 6f 74 20 6f | 76 65 72 2d 77 72 69 74 |ll not o|ver-writ|
|00002510| 65 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |e existi|ng file |
|00002520| 5c 22 74 6f 6b 5f 69 6f | 2e 63 5c 22 0a 65 6c 73 |\"tok_io|.c\".els|
|00002530| 65 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 |e.echo s|har: Ext|
|00002540| 72 61 63 74 69 6e 67 20 | 5c 22 74 6f 6b 5f 69 6f |racting |\"tok_io|
|00002550| 2e 63 5c 22 20 5c 28 39 | 39 33 38 20 63 68 61 72 |.c\" \(9|938 char|
|00002560| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00002570| 5e 58 2f 2f 22 20 3e 74 | 6f 6b 5f 69 6f 2e 63 20 |^X//" >t|ok_io.c |
|00002580| 3c 3c 27 45 4e 44 5f 4f | 46 5f 74 6f 6b 5f 69 6f |<<'END_O|F_tok_io|
|00002590| 2e 63 27 0a 58 2f 2a 2b | 2b 0a 58 2f 2a 20 4e 41 |.c'.X/*+|+.X/* NA|
|000025a0| 4d 45 0a 58 2f 2a 09 74 | 6f 6b 5f 69 6f 20 33 0a |ME.X/*.t|ok_io 3.|
|000025b0| 58 2f 2a 20 53 55 4d 4d | 41 52 59 0a 58 2f 2a 09 |X/* SUMM|ARY.X/*.|
|000025c0| 74 6f 6b 65 6e 20 49 2f | 4f 0a 58 2f 2a 20 50 41 |token I/|O.X/* PA|
|000025d0| 43 4b 41 47 45 0a 58 2f | 2a 09 75 6e 70 72 6f 74 |CKAGE.X/|*.unprot|
|000025e0| 6f 0a 58 2f 2a 20 53 59 | 4e 4f 50 53 49 53 0a 58 |o.X/* SY|NOPSIS.X|
|000025f0| 2f 2a 09 23 69 6e 63 6c | 75 64 65 20 22 74 6f 6b |/*.#incl|ude "tok|
|00002600| 65 6e 2e 68 22 0a 58 2f | 2a 0a 58 2f 2a 09 73 74 |en.h".X/|*.X/*.st|
|00002610| 72 75 63 74 20 74 6f 6b | 65 6e 20 2a 74 6f 6b 5f |ruct tok|en *tok_|
|00002620| 67 65 74 28 73 6b 69 70 | 5f 66 6c 61 67 29 0a 58 |get(skip|_flag).X|
|00002630| 2f 2a 09 69 6e 74 20 73 | 6b 69 70 5f 66 6c 61 67 |/*.int s|kip_flag|
|00002640| 3b 0a 58 2f 2a 0a 58 2f | 2a 09 76 6f 69 64 20 74 |;.X/*.X/|*.void t|
|00002650| 6f 6b 5f 75 6e 67 65 74 | 28 74 29 0a 58 2f 2a 09 |ok_unget|(t).X/*.|
|00002660| 73 74 72 75 63 74 20 74 | 6f 6b 65 6e 20 2a 74 3b |struct t|oken *t;|
|00002670| 0a 58 2f 2a 0a 58 2f 2a | 09 76 6f 69 64 20 74 6f |.X/*.X/*|.void to|
|00002680| 6b 5f 66 6c 75 73 68 28 | 74 29 0a 58 2f 2a 09 73 |k_flush(|t).X/*.s|
|00002690| 74 72 75 63 74 20 74 6f | 6b 65 6e 20 2a 74 3b 0a |truct to|ken *t;.|
|000026a0| 58 2f 2a 0a 58 2f 2a 09 | 76 6f 69 64 20 74 6f 6b |X/*.X/*.|void tok|
|000026b0| 5f 73 68 6f 77 28 74 29 | 0a 58 2f 2a 09 73 74 72 |_show(t)|.X/*.str|
|000026c0| 75 63 74 20 74 6f 6b 65 | 6e 20 2a 74 3b 0a 58 2f |uct toke|n *t;.X/|
|000026d0| 2a 0a 58 2f 2a 09 76 6f | 69 64 20 70 75 74 5f 73 |*.X/*.vo|id put_s|
|000026e0| 74 72 28 73 29 0a 58 2f | 2a 09 63 68 61 72 20 2a |tr(s).X/|*.char *|
|000026f0| 73 3b 0a 58 2f 2a 0a 58 | 2f 2a 09 76 6f 69 64 20 |s;.X/*.X|/*.void |
|00002700| 70 75 74 5f 63 68 28 63 | 29 0a 58 2f 2a 09 69 6e |put_ch(c|).X/*.in|
|00002710| 74 20 63 3b 0a 58 2f 2a | 0a 58 2f 2a 09 76 6f 69 |t c;.X/*|.X/*.voi|
|00002720| 64 20 73 68 6f 77 5f 6c | 69 6e 65 5f 6e 75 6d 62 |d show_l|ine_numb|
|00002730| 65 72 28 29 0a 58 2f 2a | 20 44 45 53 43 52 49 50 |er().X/*| DESCRIP|
|00002740| 54 49 4f 4e 0a 58 2f 2a | 09 54 68 65 73 65 20 66 |TION.X/*|.These f|
|00002750| 75 6e 63 74 69 6f 6e 73 | 20 72 65 61 64 20 66 72 |unctions| read fr|
|00002760| 6f 6d 20 73 74 64 69 6e | 20 61 6e 64 20 77 72 69 |om stdin| and wri|
|00002770| 74 65 20 74 6f 20 73 74 | 64 6f 75 74 2e 20 54 68 |te to st|dout. Th|
|00002780| 65 0a 58 2f 2a 09 6f 75 | 74 70 75 74 20 66 75 6e |e.X/*.ou|tput fun|
|00002790| 63 74 69 6f 6e 73 20 6d | 61 69 6e 74 61 69 6e 20 |ctions m|aintain |
|000027a0| 73 6f 6d 65 20 6d 65 6d | 6f 72 79 20 73 6f 20 74 |some mem|ory so t|
|000027b0| 68 61 74 20 74 77 6f 20 | 73 75 63 63 65 73 73 69 |hat two |successi|
|000027c0| 76 65 0a 58 2f 2a 09 77 | 6f 72 64 73 20 77 69 6c |ve.X/*.w|ords wil|
|000027d0| 6c 20 61 6c 77 61 79 73 | 20 62 65 20 73 65 70 61 |l always| be sepa|
|000027e0| 72 61 74 65 64 20 62 79 | 20 77 68 69 74 65 20 73 |rated by| white s|
|000027f0| 70 61 63 65 2e 0a 58 2f | 2a 0a 58 2f 2a 09 54 68 |pace..X/|*.X/*.Th|
|00002800| 65 20 69 6e 70 75 74 20 | 72 6f 75 74 69 6e 65 73 |e input |routines|
|00002810| 20 65 6c 69 6d 69 6e 61 | 74 65 20 62 61 63 6b 73 | elimina|te backs|
|00002820| 6c 61 73 68 2d 6e 65 77 | 6c 69 6e 65 20 66 72 6f |lash-new|line fro|
|00002830| 6d 20 74 68 65 20 69 6e | 70 75 74 2e 0a 58 2f 2a |m the in|put..X/*|
|00002840| 0a 58 2f 2a 09 74 6f 6b | 5f 67 65 74 28 29 20 72 |.X/*.tok|_get() r|
|00002850| 65 61 64 73 20 74 68 65 | 20 6e 65 78 74 20 74 6f |eads the| next to|
|00002860| 6b 65 6e 20 66 72 6f 6d | 20 73 74 61 6e 64 61 72 |ken from| standar|
|00002870| 64 20 69 6e 70 75 74 2e | 20 49 74 20 72 65 74 75 |d input.| It retu|
|00002880| 72 6e 73 0a 58 2f 2a 09 | 61 20 6e 75 6c 6c 20 70 |rns.X/*.|a null p|
|00002890| 6f 69 6e 74 65 72 20 77 | 68 65 6e 20 74 68 65 20 |ointer w|hen the |
|000028a0| 65 6e 64 20 6f 66 20 69 | 6e 70 75 74 20 69 73 20 |end of i|nput is |
|000028b0| 72 65 61 63 68 65 64 2e | 20 49 66 20 74 68 65 20 |reached.| If the |
|000028c0| 73 6b 69 70 5f 66 6c 61 | 67 0a 58 2f 2a 09 61 72 |skip_fla|g.X/*.ar|
|000028d0| 67 75 6d 65 6e 74 20 69 | 73 20 6e 6f 6e 7a 65 72 |gument i|s nonzer|
|000028e0| 6f 2c 20 77 68 69 74 65 | 20 73 70 61 63 65 20 28 |o, white| space (|
|000028f0| 65 78 63 65 70 74 20 6e | 65 77 6c 69 6e 65 29 20 |except n|ewline) |
|00002900| 77 69 6c 6c 20 62 65 20 | 73 6b 69 70 70 65 64 2e |will be |skipped.|
|00002910| 0a 58 2f 2a 0a 58 2f 2a | 09 74 6f 6b 5f 75 6e 67 |.X/*.X/*|.tok_ung|
|00002920| 65 74 28 29 20 69 6d 70 | 6c 65 6d 65 6e 74 73 20 |et() imp|lements |
|00002930| 61 20 6c 69 6d 69 74 65 | 64 20 61 6d 6f 75 6e 74 |a limite|d amount|
|00002940| 20 6f 66 20 74 6f 6b 65 | 6e 20 70 75 73 68 20 62 | of toke|n push b|
|00002950| 61 63 6b 2e 0a 58 2f 2a | 0a 58 2f 2a 09 74 6f 6b |ack..X/*|.X/*.tok|
|00002960| 5f 73 68 6f 77 28 29 20 | 64 69 73 70 6c 61 79 73 |_show() |displays|
|00002970| 20 74 68 65 20 63 6f 6e | 74 65 6e 74 73 20 6f 66 | the con|tents of|
|00002980| 20 61 20 28 70 6f 73 73 | 69 62 6c 79 20 63 6f 6d | a (poss|ibly com|
|00002990| 70 6f 73 69 74 65 29 20 | 74 6f 6b 65 6e 0a 58 2f |posite) |token.X/|
|000029a0| 2a 09 6f 6e 20 74 68 65 | 20 73 74 61 6e 64 61 72 |*.on the| standar|
|000029b0| 64 20 6f 75 74 70 75 74 | 2e 0a 58 2f 2a 0a 58 2f |d output|..X/*.X/|
|000029c0| 2a 09 74 6f 6b 5f 66 6c | 75 73 68 28 29 20 64 69 |*.tok_fl|ush() di|
|000029d0| 73 70 6c 61 79 73 20 74 | 68 65 20 63 6f 6e 74 65 |splays t|he conte|
|000029e0| 6e 74 73 20 6f 66 20 61 | 20 28 70 6f 73 73 69 62 |nts of a| (possib|
|000029f0| 6c 79 20 63 6f 6d 70 6f | 73 69 74 65 29 20 74 6f |ly compo|site) to|
|00002a00| 6b 65 6e 0a 58 2f 2a 09 | 6f 6e 20 74 68 65 20 73 |ken.X/*.|on the s|
|00002a10| 74 61 6e 64 61 72 64 20 | 6f 75 74 70 75 74 20 61 |tandard |output a|
|00002a20| 6e 64 20 6d 61 6b 65 73 | 20 69 74 20 61 76 61 69 |nd makes| it avai|
|00002a30| 6c 61 62 6c 65 20 66 6f | 72 20 72 65 2d 75 73 65 |lable fo|r re-use|
|00002a40| 2e 0a 58 2f 2a 0a 58 2f | 2a 09 70 75 74 5f 73 74 |..X/*.X/|*.put_st|
|00002a50| 72 28 29 20 77 72 69 74 | 65 73 20 61 20 6e 75 6c |r() writ|es a nul|
|00002a60| 6c 2d 74 65 72 6d 69 6e | 61 74 65 64 20 73 74 72 |l-termin|ated str|
|00002a70| 69 6e 67 20 74 6f 20 73 | 74 61 6e 64 61 72 64 20 |ing to s|tandard |
|00002a80| 6f 75 74 70 75 74 2e 0a | 58 2f 2a 0a 58 2f 2a 09 |output..|X/*.X/*.|
|00002a90| 70 75 74 5f 63 68 28 29 | 20 77 72 69 74 65 73 20 |put_ch()| writes |
|00002aa0| 6f 6e 65 20 63 68 61 72 | 61 63 74 65 72 20 74 6f |one char|acter to|
|00002ab0| 20 73 74 61 6e 64 61 72 | 64 20 6f 75 74 70 75 74 | standar|d output|
|00002ac0| 2e 0a 58 2f 2a 0a 58 2f | 2a 09 73 68 6f 77 5f 6c |..X/*.X/|*.show_l|
|00002ad0| 69 6e 65 5f 6e 75 6d 62 | 65 72 28 29 20 64 69 73 |ine_numb|er() dis|
|00002ae0| 70 6c 61 79 73 20 74 68 | 65 20 6c 69 6e 65 20 6e |plays th|e line n|
|00002af0| 75 6d 62 65 72 20 6f 66 | 20 74 68 65 20 6e 65 78 |umber of| the nex|
|00002b00| 74 20 6c 69 6e 65 0a 58 | 2f 2a 09 74 6f 20 62 65 |t line.X|/*.to be|
|00002b10| 20 77 72 69 74 74 65 6e | 20 74 6f 20 73 74 61 6e | written| to stan|
|00002b20| 64 61 72 64 20 6f 75 74 | 70 75 74 2c 20 69 6e 20 |dard out|put, in |
|00002b30| 61 20 66 6f 72 6d 61 74 | 20 73 75 69 74 61 62 6c |a format| suitabl|
|00002b40| 65 20 66 6f 72 20 74 68 | 65 20 43 0a 58 2f 2a 09 |e for th|e C.X/*.|
|00002b50| 63 6f 6d 70 69 6c 65 72 | 20 70 61 72 73 65 72 20 |compiler| parser |
|00002b60| 70 68 61 73 65 2e 0a 58 | 2f 2a 20 42 55 47 53 0a |phase..X|/* BUGS.|
|00002b70| 58 2f 2a 09 54 68 65 20 | 74 6f 6b 65 6e 69 7a 65 |X/*.The |tokenize|
|00002b80| 72 20 69 73 20 6a 75 73 | 74 20 67 6f 6f 64 20 65 |r is jus|t good e|
|00002b90| 6e 6f 75 67 68 20 66 6f | 72 20 74 68 65 20 75 6e |nough fo|r the un|
|00002ba0| 70 72 6f 74 6f 20 66 69 | 6c 74 65 72 2e 0a 58 2f |proto fi|lter..X/|
|00002bb0| 2a 09 41 73 20 61 20 62 | 65 6e 65 66 69 74 2c 20 |*.As a b|enefit, |
|00002bc0| 69 74 20 69 73 20 71 75 | 69 74 65 20 66 61 73 74 |it is qu|ite fast|
|00002bd0| 2e 0a 58 2f 2a 20 41 55 | 54 48 4f 52 28 53 29 0a |..X/* AU|THOR(S).|
|00002be0| 58 2f 2a 09 57 69 65 74 | 73 65 20 56 65 6e 65 6d |X/*.Wiet|se Venem|
|00002bf0| 61 0a 58 2f 2a 09 45 69 | 6e 64 68 6f 76 65 6e 20 |a.X/*.Ei|ndhoven |
|00002c00| 55 6e 69 76 65 72 73 69 | 74 79 20 6f 66 20 54 65 |Universi|ty of Te|
|00002c10| 63 68 6e 6f 6c 6f 67 79 | 0a 58 2f 2a 09 44 65 70 |chnology|.X/*.Dep|
|00002c20| 61 72 74 6d 65 6e 74 20 | 6f 66 20 4d 61 74 68 65 |artment |of Mathe|
|00002c30| 6d 61 74 69 63 73 20 61 | 6e 64 20 43 6f 6d 70 75 |matics a|nd Compu|
|00002c40| 74 65 72 20 53 63 69 65 | 6e 63 65 0a 58 2f 2a 09 |ter Scie|nce.X/*.|
|00002c50| 44 65 6e 20 44 6f 6c 65 | 63 68 20 32 2c 20 50 2e |Den Dole|ch 2, P.|
|00002c60| 4f 2e 20 42 6f 78 20 35 | 31 33 2c 20 35 36 30 30 |O. Box 5|13, 5600|
|00002c70| 20 4d 42 20 45 69 6e 64 | 68 6f 76 65 6e 2c 20 54 | MB Eind|hoven, T|
|00002c80| 68 65 20 4e 65 74 68 65 | 72 6c 61 6e 64 73 0a 58 |he Nethe|rlands.X|
|00002c90| 2f 2a 20 4c 41 53 54 20 | 4d 4f 44 49 46 49 43 41 |/* LAST |MODIFICA|
|00002ca0| 54 49 4f 4e 0a 58 2f 2a | 09 39 31 2f 30 39 2f 30 |TION.X/*|.91/09/0|
|00002cb0| 31 20 32 33 3a 30 38 3a | 33 33 0a 58 2f 2a 20 56 |1 23:08:|33.X/* V|
|00002cc0| 45 52 53 49 4f 4e 2f 52 | 45 4c 45 41 53 45 0a 58 |ERSION/R|ELEASE.X|
|00002cd0| 2f 2a 09 31 2e 31 0a 58 | 2f 2a 2d 2d 2a 2f 0a 58 |/*.1.1.X|/*--*/.X|
|00002ce0| 0a 58 73 74 61 74 69 63 | 20 63 68 61 72 20 69 6f |.Xstatic| char io|
|00002cf0| 5f 73 63 63 73 69 64 5b | 5d 20 3d 20 22 40 28 23 |_sccsid[|] = "@(#|
|00002d00| 29 20 74 6f 6b 5f 69 6f | 2e 63 20 31 2e 31 20 39 |) tok_io|.c 1.1 9|
|00002d10| 31 2f 30 39 2f 30 31 20 | 32 33 3a 30 38 3a 33 33 |1/09/01 |23:08:33|
|00002d20| 22 3b 0a 58 0a 58 2f 2a | 20 43 20 6c 69 62 72 61 |";.X.X/*| C libra|
|00002d30| 72 79 20 2a 2f 0a 58 0a | 58 23 69 6e 63 6c 75 64 |ry */.X.|X#includ|
|00002d40| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00002d50| 63 6c 75 64 65 20 3c 63 | 74 79 70 65 2e 68 3e 0a |clude <c|type.h>.|
|00002d60| 58 0a 58 65 78 74 65 72 | 6e 20 63 68 61 72 20 2a |X.Xexter|n char *|
|00002d70| 73 74 72 63 68 72 28 29 | 3b 0a 58 65 78 74 65 72 |strchr()|;.Xexter|
|00002d80| 6e 20 63 68 61 72 20 2a | 6d 61 6c 6c 6f 63 28 29 |n char *|malloc()|
|00002d90| 3b 0a 58 65 78 74 65 72 | 6e 20 63 68 61 72 20 2a |;.Xexter|n char *|
|00002da0| 72 65 61 6c 6c 6f 63 28 | 29 3b 0a 58 65 78 74 65 |realloc(|);.Xexte|
|00002db0| 72 6e 20 63 68 61 72 20 | 2a 73 74 72 63 70 79 28 |rn char |*strcpy(|
|00002dc0| 29 3b 0a 58 0a 58 2f 2a | 20 41 70 70 6c 69 63 61 |);.X.X/*| Applica|
|00002dd0| 74 69 6f 6e 2d 73 70 65 | 63 69 66 69 63 20 73 74 |tion-spe|cific st|
|00002de0| 75 66 66 20 2a 2f 0a 58 | 0a 58 23 69 6e 63 6c 75 |uff */.X|.X#inclu|
|00002df0| 64 65 20 22 74 6f 6b 65 | 6e 2e 68 22 0a 58 23 69 |de "toke|n.h".X#i|
|00002e00| 6e 63 6c 75 64 65 20 22 | 76 73 74 72 69 6e 67 2e |nclude "|vstring.|
|00002e10| 68 22 0a 58 0a 58 65 78 | 74 65 72 6e 20 76 6f 69 |h".X.Xex|tern voi|
|00002e20| 64 20 65 72 72 6f 72 28 | 29 3b 09 09 09 2f 2a 20 |d error(|);.../* |
|00002e30| 58 58 58 20 2a 2f 0a 58 | 0a 58 2f 2a 20 53 74 75 |XXX */.X|.X/* Stu|
|00002e40| 66 66 20 74 6f 20 6b 65 | 65 70 20 74 72 61 63 6b |ff to ke|ep track|
|00002e50| 20 6f 66 20 6f 72 69 67 | 69 6e 61 6c 20 73 6f 75 | of orig|inal sou|
|00002e60| 72 63 65 20 66 69 6c 65 | 20 6e 61 6d 65 20 61 6e |rce file| name an|
|00002e70| 64 20 70 6f 73 69 74 69 | 6f 6e 20 2a 2f 0a 58 0a |d positi|on */.X.|
|00002e80| 58 73 74 61 74 69 63 20 | 63 68 61 72 20 70 61 74 |Xstatic |char pat|
|00002e90| 68 5b 42 55 46 53 49 5a | 5d 3b 09 09 2f 2a 20 63 |h[BUFSIZ|];../* c|
|00002ea0| 75 72 72 65 6e 74 20 66 | 69 6c 65 20 6e 61 6d 65 |urrent f|ile name|
|00002eb0| 20 2a 2f 0a 58 73 74 61 | 74 69 63 20 69 6e 74 20 | */.Xsta|tic int |
|00002ec0| 6c 69 6e 65 20 3d 20 30 | 3b 09 09 09 2f 2a 20 23 |line = 0|;.../* #|
|00002ed0| 20 6f 66 20 6c 61 73 74 | 20 72 65 61 64 20 6c 69 | of last| read li|
|00002ee0| 6e 65 20 2a 2f 0a 58 0a | 58 2f 2a 20 46 6f 72 77 |ne */.X.|X/* Forw|
|00002ef0| 61 72 64 20 64 65 63 6c | 61 72 61 74 69 6f 6e 73 |ard decl|arations|
|00002f00| 20 2a 2f 0a 58 0a 58 73 | 74 61 74 69 63 20 76 6f | */.X.Xs|tatic vo|
|00002f10| 69 64 20 72 65 61 64 5f | 71 75 6f 74 65 64 28 29 |id read_|quoted()|
|00002f20| 3b 0a 58 73 74 61 74 69 | 63 20 76 6f 69 64 20 72 |;.Xstati|c void r|
|00002f30| 65 61 64 5f 63 6f 6d 6d | 65 6e 74 28 29 3b 0a 58 |ead_comm|ent();.X|
|00002f40| 0a 58 2f 2a 20 42 75 66 | 66 65 72 65 64 20 69 2f |.X/* Buf|fered i/|
|00002f50| 6f 20 73 74 75 66 66 20 | 2a 2f 0a 58 0a 58 73 74 |o stuff |*/.X.Xst|
|00002f60| 61 74 69 63 20 73 74 72 | 75 63 74 20 76 73 74 72 |atic str|uct vstr|
|00002f70| 69 6e 67 20 2a 62 75 66 | 20 3d 20 30 3b 09 09 2f |ing *buf| = 0;../|
|00002f80| 2a 20 72 65 61 64 2d 61 | 68 65 61 64 20 62 75 66 |* read-a|head buf|
|00002f90| 66 65 72 20 2a 2f 0a 58 | 73 74 61 74 69 63 20 63 |fer */.X|static c|
|00002fa0| 68 61 72 20 2a 62 70 20 | 3d 20 22 22 3b 09 09 09 |har *bp |= "";...|
|00002fb0| 2f 2a 20 62 75 66 66 65 | 72 20 70 6f 73 69 74 69 |/* buffe|r positi|
|00002fc0| 6f 6e 20 2a 2f 0a 58 0a | 58 23 69 66 64 65 66 20 |on */.X.|X#ifdef |
|00002fd0| 44 45 42 55 47 0a 58 23 | 64 65 66 69 6e 65 09 49 |DEBUG.X#|define.I|
|00002fe0| 4e 49 54 42 55 46 09 31 | 09 09 09 2f 2a 20 73 6d |NITBUF.1|.../* sm|
|00002ff0| 61 6c 6c 20 69 6e 69 74 | 69 61 6c 20 62 75 66 66 |all init|ial buff|
|00003000| 65 72 20 73 69 7a 65 20 | 2a 2f 0a 58 23 65 6c 73 |er size |*/.X#els|
|00003010| 65 0a 58 23 64 65 66 69 | 6e 65 09 49 4e 49 54 42 |e.X#defi|ne.INITB|
|00003020| 55 46 20 42 55 46 53 49 | 5a 09 09 09 2f 2a 20 72 |UF BUFSI|Z.../* r|
|00003030| 65 61 73 6f 6e 61 62 6c | 65 20 69 6e 69 74 69 61 |easonabl|e initia|
|00003040| 6c 20 62 75 66 66 65 72 | 20 73 69 7a 65 20 2a 2f |l buffer| size */|
|00003050| 0a 58 23 65 6e 64 69 66 | 0a 58 0a 58 23 64 65 66 |.X#endif|.X.X#def|
|00003060| 69 6e 65 09 69 6e 70 75 | 74 28 29 09 09 28 2a 62 |ine.inpu|t()..(*b|
|00003070| 70 20 3f 20 2a 62 70 2b | 2b 20 3a 20 6e 65 78 74 |p ? *bp+|+ : next|
|00003080| 5f 6c 69 6e 65 28 29 29 | 0a 58 23 64 65 66 69 6e |_line())|.X#defin|
|00003090| 65 09 75 6e 70 75 74 28 | 63 29 09 28 2a 2d 2d 62 |e.unput(|c).(*--b|
|000030a0| 70 20 3d 20 28 63 29 29 | 0a 58 0a 58 23 64 65 66 |p = (c))|.X.X#def|
|000030b0| 69 6e 65 09 54 4f 4b 5f | 42 55 46 53 49 5a 45 09 |ine.TOK_|BUFSIZE.|
|000030c0| 35 09 09 2f 2a 20 74 6f | 6b 65 6e 20 70 75 73 68 |5../* to|ken push|
|000030d0| 2d 62 61 63 6b 20 62 75 | 66 66 65 72 20 73 69 7a |-back bu|ffer siz|
|000030e0| 65 20 2a 2f 0a 58 0a 58 | 73 74 61 74 69 63 20 73 |e */.X.X|static s|
|000030f0| 74 72 75 63 74 20 74 6f | 6b 65 6e 20 2a 74 6f 6b |truct to|ken *tok|
|00003100| 5f 62 75 66 5b 54 4f 4b | 5f 42 55 46 53 49 5a 45 |_buf[TOK|_BUFSIZE|
|00003110| 5d 3b 0a 58 73 74 61 74 | 69 63 20 69 6e 74 20 74 |];.Xstat|ic int t|
|00003120| 6f 6b 5f 62 75 66 70 6f | 73 20 3d 20 30 3b 0a 58 |ok_bufpo|s = 0;.X|
|00003130| 0a 58 2f 2a 20 54 79 70 | 65 20 6f 66 20 6c 61 73 |.X/* Typ|e of las|
|00003140| 74 20 74 6f 6b 65 6e 20 | 73 65 6e 74 20 74 6f 20 |t token |sent to |
|00003150| 6f 75 74 70 75 74 2c 20 | 66 6f 72 20 70 72 65 74 |output, |for pret|
|00003160| 74 79 20 70 72 69 6e 74 | 69 6e 67 20 2a 2f 0a 58 |ty print|ing */.X|
|00003170| 0a 58 73 74 61 74 69 63 | 20 69 6e 74 20 6c 61 73 |.Xstatic| int las|
|00003180| 74 5f 74 6f 6b 20 3d 20 | 30 3b 0a 58 0a 58 2f 2a |t_tok = |0;.X.X/*|
|00003190| 20 44 69 72 65 63 74 69 | 76 65 73 20 74 68 61 74 | Directi|ves that|
|000031a0| 20 73 68 6f 75 6c 64 20 | 62 65 20 69 67 6e 6f 72 | should |be ignor|
|000031b0| 65 64 2e 20 2a 2f 0a 58 | 0a 58 23 69 66 64 65 66 |ed. */.X|.X#ifdef|
|000031c0| 20 49 47 4e 4f 52 45 5f | 44 49 52 45 43 54 49 56 | IGNORE_|DIRECTIV|
|000031d0| 45 53 0a 58 0a 58 73 74 | 61 74 69 63 20 63 68 61 |ES.X.Xst|atic cha|
|000031e0| 72 20 2a 69 67 6e 6f 72 | 65 5f 64 69 72 65 63 74 |r *ignor|e_direct|
|000031f0| 69 76 65 73 5b 5d 20 3d | 20 7b 0a 58 20 20 20 20 |ives[] =| {.X |
|00003200| 49 47 4e 4f 52 45 5f 44 | 49 52 45 43 54 49 56 45 |IGNORE_D|IRECTIVE|
|00003210| 53 2c 0a 58 20 20 20 20 | 30 2c 0a 58 7d 3b 0a 58 |S,.X |0,.X};.X|
|00003220| 0a 58 23 65 6e 64 69 66 | 0a 58 0a 58 2f 2a 20 4d |.X#endif|.X.X/* M|
|00003230| 6f 64 69 66 69 65 64 20 | 73 74 72 69 6e 67 20 61 |odified |string a|
|00003240| 6e 64 20 63 74 79 70 65 | 20 73 74 75 66 66 2e 20 |nd ctype| stuff. |
|00003250| 2a 2f 0a 58 0a 58 23 64 | 65 66 69 6e 65 09 53 54 |*/.X.X#d|efine.ST|
|00003260| 52 45 51 55 41 4c 28 78 | 2c 79 29 09 28 2a 28 78 |REQUAL(x|,y).(*(x|
|00003270| 29 20 3d 3d 20 2a 28 79 | 29 20 26 26 20 73 74 72 |) == *(y|) && str|
|00003280| 63 6d 70 28 28 78 29 2c | 28 79 29 29 20 3d 3d 20 |cmp((x),|(y)) == |
|00003290| 30 29 0a 58 0a 58 23 64 | 65 66 69 6e 65 09 49 53 |0).X.X#d|efine.IS|
|000032a0| 41 4c 4e 55 4d 28 63 29 | 09 28 69 73 61 6c 6e 75 |ALNUM(c)|.(isalnu|
|000032b0| 6d 28 63 29 20 7c 7c 20 | 28 63 29 20 3d 3d 20 27 |m(c) || |(c) == '|
|000032c0| 5f 27 29 0a 58 23 64 65 | 66 69 6e 65 09 49 53 41 |_').X#de|fine.ISA|
|000032d0| 4c 50 48 41 28 63 29 09 | 28 69 73 61 6c 70 68 61 |LPHA(c).|(isalpha|
|000032e0| 28 63 29 20 7c 7c 20 28 | 63 29 20 3d 3d 20 27 5f |(c) || (|c) == '_|
|000032f0| 27 29 0a 58 23 64 65 66 | 69 6e 65 09 49 53 53 50 |').X#def|ine.ISSP|
|00003300| 41 43 45 28 63 29 09 28 | 69 73 73 70 61 63 65 28 |ACE(c).(|isspace(|
|00003310| 63 29 20 26 26 20 63 20 | 21 3d 20 27 5c 6e 27 29 |c) && c |!= '\n')|
|00003320| 0a 58 23 64 65 66 69 6e | 65 09 49 53 44 4f 54 28 |.X#defin|e.ISDOT(|
|00003330| 63 29 09 28 63 20 3d 3d | 20 27 2e 27 29 0a 58 0a |c).(c ==| '.').X.|
|00003340| 58 2f 2a 20 43 6f 6c 6c | 65 63 74 20 61 6c 6c 20 |X/* Coll|ect all |
|00003350| 63 68 61 72 61 63 74 65 | 72 73 20 74 68 61 74 20 |characte|rs that |
|00003360| 73 61 74 69 73 66 79 20 | 6f 6e 65 20 63 6f 6e 64 |satisfy |one cond|
|00003370| 69 74 69 6f 6e 20 2a 2f | 0a 58 0a 58 23 64 65 66 |ition */|.X.X#def|
|00003380| 69 6e 65 09 43 4f 4c 4c | 45 43 54 28 76 2c 63 2c |ine.COLL|ECT(v,c,|
|00003390| 63 6f 6e 64 29 20 7b 20 | 5c 0a 58 09 09 09 09 72 |cond) { |\.X....r|
|000033a0| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 76 |egister |struct v|
|000033b0| 73 74 72 69 6e 67 20 2a | 76 73 20 3d 20 76 3b 20 |string *|vs = v; |
|000033c0| 5c 0a 58 09 09 09 09 72 | 65 67 69 73 74 65 72 20 |\.X....r|egister |
|000033d0| 63 68 61 72 20 2a 63 70 | 20 3d 20 76 73 2d 3e 73 |char *cp| = vs->s|
|000033e0| 74 72 3b 20 5c 0a 58 09 | 09 09 09 2a 63 70 2b 2b |tr; \.X.|...*cp++|
|000033f0| 20 3d 20 63 3b 20 5c 0a | 58 09 09 09 09 66 6f 72 | = c; \.|X....for|
|00003400| 20 28 3b 3b 29 20 7b 20 | 5c 0a 58 09 09 09 09 20 | (;;) { |\.X.... |
|00003410| 20 20 20 69 66 20 28 28 | 63 20 3d 20 69 6e 70 75 | if ((|c = inpu|
|00003420| 74 28 29 29 20 3d 3d 20 | 30 29 20 7b 20 5c 0a 58 |t()) == |0) { \.X|
|00003430| 09 09 09 09 09 62 72 65 | 61 6b 3b 20 5c 0a 58 09 |.....bre|ak; \.X.|
|00003440| 09 09 09 20 20 20 20 7d | 20 65 6c 73 65 20 69 66 |... }| else if|
|00003450| 20 28 63 6f 6e 64 29 20 | 7b 20 5c 0a 58 09 09 09 | (cond) |{ \.X...|
|00003460| 09 09 69 66 20 28 56 53 | 5f 41 44 44 43 48 28 76 |..if (VS|_ADDCH(v|
|00003470| 73 2c 20 63 70 2c 20 63 | 29 20 3d 3d 20 30 29 20 |s, cp, c|) == 0) |
|00003480| 5c 0a 58 09 09 09 09 09 | 20 20 20 20 65 72 72 6f |\.X.....| erro|
|00003490| 72 28 31 2c 20 22 6f 75 | 74 20 6f 66 20 6d 65 6d |r(1, "ou|t of mem|
|000034a0| 6f 72 79 22 29 3b 20 5c | 0a 58 09 09 09 09 20 20 |ory"); \|.X.... |
|000034b0| 20 20 7d 20 65 6c 73 65 | 20 7b 20 5c 0a 58 09 09 | } else| { \.X..|
|000034c0| 09 09 09 75 6e 70 75 74 | 28 63 29 3b 20 5c 0a 58 |...unput|(c); \.X|
|000034d0| 09 09 09 09 09 62 72 65 | 61 6b 3b 20 5c 0a 58 09 |.....bre|ak; \.X.|
|000034e0| 09 09 09 20 20 20 20 7d | 20 5c 0a 58 09 09 09 09 |... }| \.X....|
|000034f0| 7d 20 5c 0a 58 09 09 09 | 09 2a 63 70 20 3d 20 30 |} \.X...|.*cp = 0|
|00003500| 3b 20 5c 0a 58 09 09 09 | 20 20 20 20 7d 0a 58 0a |; \.X...| }.X.|
|00003510| 58 2f 2a 20 73 68 6f 77 | 5f 6c 69 6e 65 5f 6e 75 |X/* show|_line_nu|
|00003520| 6d 62 65 72 20 2d 20 70 | 72 69 6e 74 20 63 70 70 |mber - p|rint cpp|
|00003530| 2d 73 74 79 6c 65 20 6c | 69 6e 65 20 6e 75 6d 62 |-style l|ine numb|
|00003540| 65 72 20 69 6e 66 6f 20 | 2a 2f 0a 58 0a 58 76 6f |er info |*/.X.Xvo|
|00003550| 69 64 20 20 20 20 73 68 | 6f 77 5f 6c 69 6e 65 5f |id sh|ow_line_|
|00003560| 6e 75 6d 62 65 72 28 29 | 0a 58 7b 0a 58 20 20 20 |number()|.X{.X |
|00003570| 20 2f 2a 20 55 73 65 20 | 74 68 65 20 6c 61 73 74 | /* Use |the last|
|00003580| 20 69 6e 70 75 74 20 6c | 69 6e 65 20 6e 75 6d 62 | input l|ine numb|
|00003590| 65 72 2e 20 2a 2f 0a 58 | 0a 58 20 20 20 20 70 72 |er. */.X|.X pr|
|000035a0| 69 6e 74 66 28 22 23 20 | 25 64 20 25 73 5c 6e 22 |intf("# |%d %s\n"|
|000035b0| 2c 20 6c 69 6e 65 2c 20 | 70 61 74 68 29 3b 0a 58 |, line, |path);.X|
|000035c0| 7d 0a 58 0a 58 2f 2a 20 | 64 6f 5f 63 6f 6e 74 72 |}.X.X/* |do_contr|
|000035d0| 6f 6c 20 2d 20 70 61 72 | 73 65 20 63 6f 6e 74 72 |ol - par|se contr|
|000035e0| 6f 6c 20 6c 69 6e 65 2c | 20 75 73 65 73 20 74 6f |ol line,| uses to|
|000035f0| 6b 5f 67 65 74 28 29 20 | 2a 2f 0a 58 0a 58 73 74 |k_get() |*/.X.Xst|
|00003600| 61 74 69 63 20 69 6e 74 | 20 64 6f 5f 63 6f 6e 74 |atic int| do_cont|
|00003610| 72 6f 6c 28 29 0a 58 7b | 0a 58 20 20 20 20 73 74 |rol().X{|.X st|
|00003620| 72 75 63 74 20 74 6f 6b | 65 6e 20 2a 74 31 3b 0a |ruct tok|en *t1;.|
|00003630| 58 20 20 20 20 73 74 72 | 75 63 74 20 74 6f 6b 65 |X str|uct toke|
|00003640| 6e 20 2a 74 32 3b 0a 58 | 20 20 20 20 69 6e 74 20 |n *t2;.X| int |
|00003650| 20 20 20 20 70 61 73 73 | 5f 74 68 72 75 20 3d 20 | pass|_thru = |
|00003660| 31 3b 09 09 2f 2a 20 30 | 20 3d 20 69 67 6e 6f 72 |1;../* 0| = ignor|
|00003670| 65 2c 20 31 20 3d 20 6f | 75 74 70 75 74 20 2a 2f |e, 1 = o|utput */|
|00003680| 0a 58 0a 58 20 20 20 20 | 28 76 6f 69 64 29 20 69 |.X.X |(void) i|
|00003690| 6e 70 75 74 28 29 3b 09 | 09 09 09 2f 2a 20 73 6b |nput();.|.../* sk|
|000036a0| 69 70 20 74 68 65 20 68 | 61 73 68 20 2a 2f 0a 58 |ip the h|ash */.X|
|000036b0| 0a 58 20 20 20 20 69 66 | 20 28 74 31 20 3d 20 74 |.X if| (t1 = t|
|000036c0| 6f 6b 5f 67 65 74 28 4e | 4f 5f 57 53 50 41 43 45 |ok_get(N|O_WSPACE|
|000036d0| 29 29 20 7b 0a 58 09 73 | 77 69 74 63 68 20 28 74 |)) {.X.s|witch (t|
|000036e0| 31 2d 3e 74 6f 6b 6e 6f | 29 20 7b 0a 58 0a 58 09 |1->tokno|) {.X.X.|
|000036f0| 20 20 20 20 2f 2a 0a 58 | 09 20 20 20 20 20 2a 20 | /*.X|. * |
|00003700| 49 6e 20 63 61 73 65 20 | 6f 66 20 6c 69 6e 65 20 |In case |of line |
|00003710| 6e 75 6d 62 65 72 20 63 | 6f 6e 74 72 6f 6c 2c 20 |number c|ontrol, |
|00003720| 74 68 65 20 72 65 6d 61 | 69 6e 64 65 72 20 6f 66 |the rema|inder of|
|00003730| 20 74 68 65 20 6c 69 6e | 65 20 68 61 73 0a 58 09 | the lin|e has.X.|
|00003740| 20 20 20 20 20 2a 20 74 | 68 65 20 66 6f 72 6d 61 | * t|he forma|
|00003750| 74 3a 20 6c 69 6e 65 6e | 75 6d 62 65 72 20 22 70 |t: linen|umber "p|
|00003760| 61 74 68 6e 61 6d 65 22 | 2e 0a 58 09 20 20 20 20 |athname"|..X. |
|00003770| 20 2a 2f 0a 58 09 63 61 | 73 65 20 54 4f 4b 5f 4e | */.X.ca|se TOK_N|
|00003780| 55 4d 42 45 52 3a 0a 58 | 09 20 20 20 20 69 66 20 |UMBER:.X|. if |
|00003790| 28 74 32 20 3d 20 74 6f | 6b 5f 67 65 74 28 4e 4f |(t2 = to|k_get(NO|
|000037a0| 5f 57 53 50 41 43 45 29 | 29 20 7b 0a 58 09 09 69 |_WSPACE)|) {.X..i|
|000037b0| 66 20 28 74 32 2d 3e 74 | 6f 6b 6e 6f 20 3d 3d 20 |f (t2->t|okno == |
|000037c0| 27 22 27 29 20 7b 0a 58 | 09 09 20 20 20 20 6c 69 |'"') {.X|.. li|
|000037d0| 6e 65 20 3d 20 61 74 6f | 69 28 74 31 2d 3e 76 73 |ne = ato|i(t1->vs|
|000037e0| 74 72 2d 3e 73 74 72 29 | 20 2d 20 31 3b 0a 58 09 |tr->str)| - 1;.X.|
|000037f0| 09 20 20 20 20 73 74 72 | 63 70 79 28 70 61 74 68 |. str|cpy(path|
|00003800| 2c 20 74 32 2d 3e 76 73 | 74 72 2d 3e 73 74 72 29 |, t2->vs|tr->str)|
|00003810| 3b 0a 58 09 09 7d 0a 58 | 09 09 74 6f 6b 5f 66 72 |;.X..}.X|..tok_fr|
|00003820| 65 65 28 74 32 29 3b 0a | 58 09 20 20 20 20 7d 0a |ee(t2);.|X. }.|
|00003830| 58 09 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 0a 58 |X. br|eak;.X.X|
|00003840| 23 69 66 64 65 66 20 49 | 47 4e 4f 52 45 5f 44 49 |#ifdef I|GNORE_DI|
|00003850| 52 45 43 54 49 56 45 53 | 0a 58 09 63 61 73 65 20 |RECTIVES|.X.case |
|00003860| 54 4f 4b 5f 57 4f 52 44 | 3a 0a 58 09 20 20 20 20 |TOK_WORD|:.X. |
|00003870| 2f 2a 20 4f 70 74 69 6f | 6e 61 6c 6c 79 20 69 67 |/* Optio|nally ig|
|00003880| 6e 6f 72 65 20 6f 74 68 | 65 72 20 23 64 69 72 65 |nore oth|er #dire|
|00003890| 63 74 69 76 65 73 2c 20 | 73 75 63 68 20 61 73 20 |ctives, |such as |
|000038a0| 23 70 72 61 67 6d 61 2e | 20 2a 2f 0a 58 09 20 20 |#pragma.| */.X. |
|000038b0| 20 20 7b 0a 58 09 09 63 | 68 61 72 20 20 2a 2a 63 | {.X..c|har **c|
|000038c0| 70 70 3b 0a 58 09 09 63 | 68 61 72 20 20 20 2a 63 |pp;.X..c|har *c|
|000038d0| 70 20 3d 20 74 31 2d 3e | 76 73 74 72 2d 3e 73 74 |p = t1->|vstr->st|
|000038e0| 72 3b 0a 58 0a 58 09 09 | 66 6f 72 20 28 63 70 70 |r;.X.X..|for (cpp|
|000038f0| 20 3d 20 69 67 6e 6f 72 | 65 5f 64 69 72 65 63 74 | = ignor|e_direct|
|00003900| 69 76 65 73 3b 20 2a 63 | 70 70 3b 20 63 70 70 2b |ives; *c|pp; cpp+|
|00003910| 2b 29 20 7b 0a 58 09 09 | 20 20 20 20 69 66 20 28 |+) {.X..| if (|
|00003920| 53 54 52 45 51 55 41 4c | 28 63 70 2c 20 2a 63 70 |STREQUAL|(cp, *cp|
|00003930| 70 29 29 20 7b 0a 58 09 | 09 09 70 61 73 73 5f 74 |p)) {.X.|..pass_t|
|00003940| 68 72 75 20 3d 20 30 3b | 0a 58 09 09 09 62 72 65 |hru = 0;|.X...bre|
|00003950| 61 6b 3b 0a 58 09 09 20 | 20 20 20 7d 0a 58 09 09 |ak;.X.. | }.X..|
|00003960| 7d 0a 58 09 20 20 20 20 | 7d 0a 58 09 20 20 20 20 |}.X. |}.X. |
|00003970| 62 72 65 61 6b 3b 0a 58 | 23 65 6e 64 69 66 0a 58 |break;.X|#endif.X|
|00003980| 09 7d 0a 58 09 74 6f 6b | 5f 66 72 65 65 28 74 31 |.}.X.tok|_free(t1|
|00003990| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 72 |);.X |}.X r|
|000039a0| 65 74 75 72 6e 20 28 70 | 61 73 73 5f 74 68 72 75 |eturn (p|ass_thru|
|000039b0| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 20 6e 65 78 74 |);.X}.X.|X/* next|
|000039c0| 5f 6c 69 6e 65 20 2d 20 | 72 65 61 64 20 6f 6e 65 |_line - |read one|
|000039d0| 20 6c 6f 67 69 63 61 6c | 20 6c 69 6e 65 2c 20 68 | logical| line, h|
|000039e0| 61 6e 64 6c 65 20 23 63 | 6f 6e 74 72 6f 6c 20 2a |andle #c|ontrol *|
|000039f0| 2f 0a 58 0a 58 73 74 61 | 74 69 63 20 69 6e 74 20 |/.X.Xsta|tic int |
|00003a00| 6e 65 78 74 5f 6c 69 6e | 65 28 29 0a 58 7b 0a 58 |next_lin|e().X{.X|
|00003a10| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 | regi|ster int|
|00003a20| 20 63 3b 0a 58 20 20 20 | 20 72 65 67 69 73 74 65 | c;.X | registe|
|00003a30| 72 20 63 68 61 72 20 2a | 63 70 3b 0a 58 0a 58 20 |r char *|cp;.X.X |
|00003a40| 20 20 20 2f 2a 20 41 6c | 6c 6f 63 61 74 65 20 62 | /* Al|locate b|
|00003a50| 75 66 66 65 72 20 75 70 | 6f 6e 20 66 69 72 73 74 |uffer up|on first|
|00003a60| 20 65 6e 74 72 79 20 2a | 2f 0a 58 0a 58 20 20 20 | entry *|/.X.X |
|00003a70| 20 69 66 20 28 62 75 66 | 20 3d 3d 20 30 29 0a 58 | if (buf| == 0).X|
|00003a80| 09 62 75 66 20 3d 20 76 | 73 5f 61 6c 6c 6f 63 28 |.buf = v|s_alloc(|
|00003a90| 49 4e 49 54 42 55 46 29 | 3b 0a 58 0a 58 20 20 20 |INITBUF)|;.X.X |
|00003aa0| 20 66 6f 72 20 28 3b 3b | 29 20 7b 0a 58 09 63 70 | for (;;|) {.X.cp|
|00003ab0| 20 3d 20 62 75 66 2d 3e | 73 74 72 3b 0a 58 0a 58 | = buf->|str;.X.X|
|00003ac0| 09 2f 2a 20 41 63 63 6f | 75 6e 74 20 66 6f 72 20 |./* Acco|unt for |
|00003ad0| 45 4f 46 20 61 6e 64 20 | 6c 69 6e 65 20 63 6f 6e |EOF and |line con|
|00003ae0| 74 69 6e 75 61 74 69 6f | 6e 73 20 2a 2f 0a 58 0a |tinuatio|ns */.X.|
|00003af0| 58 09 77 68 69 6c 65 20 | 28 28 63 20 3d 20 67 65 |X.while |((c = ge|
|00003b00| 74 63 68 61 72 28 29 29 | 20 21 3d 20 45 4f 46 29 |tchar())| != EOF)|
|00003b10| 20 7b 0a 58 09 20 20 20 | 20 69 66 20 28 56 53 5f | {.X. | if (VS_|
|00003b20| 41 44 44 43 48 28 62 75 | 66 2c 20 63 70 2c 20 63 |ADDCH(bu|f, cp, c|
|00003b30| 29 20 3d 3d 20 30 29 09 | 2f 2a 20 73 74 6f 72 65 |) == 0).|/* store|
|00003b40| 20 63 68 61 72 61 63 74 | 65 72 20 2a 2f 0a 58 09 | charact|er */.X.|
|00003b50| 09 65 72 72 6f 72 28 31 | 2c 20 22 6f 75 74 20 6f |.error(1|, "out o|
|00003b60| 66 20 6d 65 6d 6f 72 79 | 22 29 3b 0a 58 09 20 20 |f memory|");.X. |
|00003b70| 20 20 69 66 20 28 63 20 | 3d 3d 20 27 5c 6e 27 29 | if (c |== '\n')|
|00003b80| 20 7b 09 09 09 2f 2a 20 | 72 65 61 6c 20 65 6e 64 | {.../* |real end|
|00003b90| 20 6f 66 20 6c 69 6e 65 | 20 2a 2f 0a 58 09 09 6c | of line| */.X..l|
|00003ba0| 69 6e 65 2b 2b 3b 0a 58 | 09 09 62 72 65 61 6b 3b |ine++;.X|..break;|
|00003bb0| 0a 58 09 20 20 20 20 7d | 20 65 6c 73 65 20 69 66 |.X. }| else if|
|00003bc0| 20 28 63 20 3d 3d 20 27 | 5c 5c 27 29 20 7b 0a 58 | (c == '|\\') {.X|
|00003bd0| 09 09 69 66 20 28 28 63 | 20 3d 20 67 65 74 63 68 |..if ((c| = getch|
|00003be0| 61 72 28 29 29 20 3d 3d | 20 45 4f 46 29 20 7b 0a |ar()) ==| EOF) {.|
|00003bf0| 58 09 09 20 20 20 20 62 | 72 65 61 6b 3b 0a 58 09 |X.. b|reak;.X.|
|00003c00| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 63 20 3d 3d |.} else |if (c ==|
|00003c10| 20 27 5c 6e 27 29 20 7b | 09 09 2f 2a 20 62 61 63 | '\n') {|../* bac|
|00003c20| 6b 73 6c 61 73 68 2d 6e | 65 77 6c 69 6e 65 20 2a |kslash-n|ewline *|
|00003c30| 2f 0a 58 09 09 20 20 20 | 20 6c 69 6e 65 2b 2b 3b |/.X.. | line++;|
|00003c40| 0a 58 09 09 20 20 20 20 | 70 75 74 5f 63 68 28 27 |.X.. |put_ch('|
|00003c50| 5c 6e 27 29 3b 09 09 2f | 2a 20 70 72 65 73 65 72 |\n');../|* preser|
|00003c60| 76 65 20 6c 69 6e 65 20 | 63 6f 75 6e 74 20 2a 2f |ve line |count */|
|00003c70| 0a 58 09 09 20 20 20 20 | 63 70 2d 2d 3b 09 09 09 |.X.. |cp--;...|
|00003c80| 2f 2a 20 75 6e 2d 73 74 | 6f 72 65 20 62 61 63 6b |/* un-st|ore back|
|00003c90| 73 6c 61 73 68 20 2a 2f | 0a 58 09 09 7d 20 65 6c |slash */|.X..} el|
|00003ca0| 73 65 20 7b 0a 58 09 09 | 20 20 20 20 75 6e 67 65 |se {.X..| unge|
|00003cb0| 74 63 28 63 2c 20 73 74 | 64 69 6e 29 3b 09 09 2f |tc(c, st|din);../|
|00003cc0| 2a 20 62 61 63 6b 73 6c | 61 73 68 2d 6f 74 68 65 |* backsl|ash-othe|
|00003cd0| 72 20 2a 2f 0a 58 09 09 | 7d 0a 58 09 20 20 20 20 |r */.X..|}.X. |
|00003ce0| 7d 0a 58 09 7d 0a 58 09 | 2a 63 70 20 3d 20 30 3b |}.X.}.X.|*cp = 0;|
|00003cf0| 0a 58 09 62 70 20 3d 20 | 62 75 66 2d 3e 73 74 72 |.X.bp = |buf->str|
|00003d00| 3b 0a 58 0a 58 09 2f 2a | 20 41 63 63 6f 75 6e 74 |;.X.X./*| Account|
|00003d10| 20 66 6f 72 20 45 4f 46 | 20 61 6e 64 20 23 63 6f | for EOF| and #co|
|00003d20| 6e 74 72 6f 6c 20 2a 2f | 0a 58 0a 58 09 73 77 69 |ntrol */|.X.X.swi|
|00003d30| 74 63 68 20 28 62 70 5b | 30 5d 29 20 7b 0a 58 09 |tch (bp[|0]) {.X.|
|00003d40| 63 61 73 65 20 30 3a 09 | 09 09 09 2f 2a 20 45 4f |case 0:.|.../* EO|
|00003d50| 46 20 2a 2f 0a 58 09 20 | 20 20 20 72 65 74 75 72 |F */.X. | retur|
|00003d60| 6e 20 28 30 29 3b 0a 58 | 09 63 61 73 65 20 27 23 |n (0);.X|.case '#|
|00003d70| 27 3a 09 09 09 09 2f 2a | 20 63 6f 6e 74 72 6f 6c |':..../*| control|
|00003d80| 20 2a 2f 0a 58 09 20 20 | 20 20 69 66 20 28 64 6f | */.X. | if (do|
|00003d90| 5f 63 6f 6e 74 72 6f 6c | 28 29 29 0a 58 09 09 66 |_control|()).X..f|
|00003da0| 70 75 74 73 28 62 75 66 | 2d 3e 73 74 72 2c 20 73 |puts(buf|->str, s|
|00003db0| 74 64 6f 75 74 29 3b 09 | 2f 2a 20 70 61 73 73 20 |tdout);.|/* pass |
|00003dc0| 74 68 72 6f 75 67 68 20 | 2a 2f 0a 58 09 20 20 20 |through |*/.X. |
|00003dd0| 20 65 6c 73 65 0a 58 09 | 09 70 75 74 63 68 61 72 | else.X.|.putchar|
|00003de0| 28 27 5c 6e 27 29 3b 09 | 09 09 2f 2a 20 66 69 6c |('\n');.|../* fil|
|00003df0| 74 65 72 20 6f 75 74 20 | 2a 2f 0a 58 09 20 20 20 |ter out |*/.X. |
|00003e00| 20 62 72 65 61 6b 3b 0a | 58 09 64 65 66 61 75 6c | break;.|X.defaul|
|00003e10| 74 3a 09 09 09 09 2f 2a | 20 6e 6f 6e 2d 63 6f 6e |t:..../*| non-con|
|00003e20| 74 72 6f 6c 20 2a 2f 0a | 58 09 20 20 20 20 72 65 |trol */.|X. re|
|00003e30| 74 75 72 6e 20 28 69 6e | 70 75 74 28 29 29 3b 0a |turn (in|put());.|
|00003e40| 58 09 7d 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |X.}.X | }.X}.X.|
|00003e50| 58 2f 2a 20 74 6f 6b 5f | 75 6e 67 65 74 20 2d 20 |X/* tok_|unget - |
|00003e60| 70 75 73 68 20 62 61 63 | 6b 20 6f 6e 65 20 74 6f |push bac|k one to|
|00003e70| 6b 65 6e 20 2a 2f 0a 58 | 0a 58 76 6f 69 64 20 20 |ken */.X|.Xvoid |
|00003e80| 20 20 74 6f 6b 5f 75 6e | 67 65 74 28 74 29 0a 58 | tok_un|get(t).X|
|00003e90| 72 65 67 69 73 74 65 72 | 20 73 74 72 75 63 74 20 |register| struct |
|00003ea0| 74 6f 6b 65 6e 20 2a 74 | 3b 0a 58 7b 0a 58 20 20 |token *t|;.X{.X |
|00003eb0| 20 20 69 66 20 28 74 6f | 6b 5f 62 75 66 70 6f 73 | if (to|k_bufpos|
|00003ec0| 20 3e 3d 20 54 4f 4b 5f | 42 55 46 53 49 5a 45 29 | >= TOK_|BUFSIZE)|
|00003ed0| 0a 58 09 65 72 72 6f 72 | 28 31 2c 20 22 74 6f 6f |.X.error|(1, "too|
|00003ee0| 20 6d 75 63 68 20 70 75 | 73 68 62 61 63 6b 22 29 | much pu|shback")|
|00003ef0| 3b 0a 58 20 20 20 20 74 | 6f 6b 5f 62 75 66 5b 74 |;.X t|ok_buf[t|
|00003f00| 6f 6b 5f 62 75 66 70 6f | 73 2b 2b 5d 20 3d 20 74 |ok_bufpo|s++] = t|
|00003f10| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 74 6f 6b 5f 67 |;.X}.X.X|/* tok_g|
|00003f20| 65 74 20 2d 20 67 65 74 | 20 6e 65 78 74 20 74 6f |et - get| next to|
|00003f30| 6b 65 6e 20 2a 2f 0a 58 | 0a 58 73 74 72 75 63 74 |ken */.X|.Xstruct|
|00003f40| 20 74 6f 6b 65 6e 20 2a | 74 6f 6b 5f 67 65 74 28 | token *|tok_get(|
|00003f50| 73 6b 69 70 5f 66 6c 61 | 67 29 0a 58 69 6e 74 20 |skip_fla|g).Xint |
|00003f60| 20 20 20 20 73 6b 69 70 | 5f 66 6c 61 67 3b 0a 58 | skip|_flag;.X|
|00003f70| 7b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |{.X r|egister |
|00003f80| 73 74 72 75 63 74 20 74 | 6f 6b 65 6e 20 2a 74 3b |struct t|oken *t;|
|00003f90| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 69 |.X re|gister i|
|00003fa0| 6e 74 20 63 3b 0a 58 20 | 20 20 20 69 6e 74 20 20 |nt c;.X | int |
|00003fb0| 20 20 20 64 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 | d;.X.|X /* |
|00003fc0| 55 73 65 20 70 75 73 68 | 2d 62 61 63 6b 20 74 6f |Use push|-back to|
|00003fd0| 6b 65 6e 2c 20 69 66 20 | 61 6e 79 2e 20 2a 2f 0a |ken, if |any. */.|
|00003fe0| 58 0a 58 20 20 20 20 69 | 66 20 28 74 6f 6b 5f 62 |X.X i|f (tok_b|
|00003ff0| 75 66 70 6f 73 29 20 7b | 0a 58 09 74 20 3d 20 74 |ufpos) {|.X.t = t|
|00004000| 6f 6b 5f 62 75 66 5b 2d | 2d 74 6f 6b 5f 62 75 66 |ok_buf[-|-tok_buf|
|00004010| 70 6f 73 5d 3b 0a 58 09 | 72 65 74 75 72 6e 20 28 |pos];.X.|return (|
|00004020| 74 29 3b 0a 58 20 20 20 | 20 7d 0a 58 0a 58 20 20 |t);.X | }.X.X |
|00004030| 20 20 2f 2a 0a 58 20 20 | 20 20 20 2a 20 47 65 74 | /*.X | * Get|
|00004040| 20 6f 6e 65 20 66 72 6f | 6d 20 74 68 65 20 70 6f | one fro|m the po|
|00004050| 6f 6c 20 61 6e 64 20 66 | 69 6c 6c 20 69 74 20 69 |ol and f|ill it i|
|00004060| 6e 2e 20 54 68 65 20 6c | 6f 6f 70 20 69 73 20 68 |n. The l|oop is h|
|00004070| 65 72 65 20 69 6e 20 63 | 61 73 65 20 77 65 0a 58 |ere in c|ase we.X|
|00004080| 20 20 20 20 20 2a 20 73 | 68 6f 75 6c 64 20 73 6b | * s|hould sk|
|00004090| 69 70 20 77 68 69 74 65 | 2d 73 70 61 63 65 20 74 |ip white|-space t|
|000040a0| 6f 6b 65 6e 73 2c 20 77 | 68 69 63 68 20 68 61 70 |okens, w|hich hap|
|000040b0| 70 65 6e 73 20 69 6e 20 | 61 20 6d 69 6e 6f 72 69 |pens in |a minori|
|000040c0| 74 79 20 6f 66 20 61 6c | 6c 0a 58 20 20 20 20 20 |ty of al|l.X |
|000040d0| 2a 20 63 61 73 65 73 2e | 0a 58 20 20 20 20 20 2a |* cases.|.X *|
|000040e0| 2f 0a 58 0a 58 20 20 20 | 20 74 20 3d 20 74 6f 6b |/.X.X | t = tok|
|000040f0| 5f 61 6c 6c 6f 63 28 29 | 3b 0a 58 0a 58 20 20 20 |_alloc()|;.X.X |
|00004100| 20 66 6f 72 20 28 3b 3b | 29 20 7b 0a 58 09 69 66 | for (;;|) {.X.if|
|00004110| 20 28 28 63 20 3d 20 69 | 6e 70 75 74 28 29 29 20 | ((c = i|nput()) |
|00004120| 3d 3d 20 30 29 20 7b 0a | 58 09 20 20 20 20 74 6f |== 0) {.|X. to|
|00004130| 6b 5f 66 72 65 65 28 74 | 29 3b 0a 58 09 20 20 20 |k_free(t|);.X. |
|00004140| 20 72 65 74 75 72 6e 20 | 28 30 29 3b 0a 58 09 7d | return |(0);.X.}|
|00004150| 20 65 6c 73 65 20 69 66 | 20 28 21 69 73 61 73 63 | else if| (!isasc|
|00004160| 69 69 28 63 29 29 20 7b | 0a 58 09 20 20 20 20 74 |ii(c)) {|.X. t|
|00004170| 2d 3e 76 73 74 72 2d 3e | 73 74 72 5b 30 5d 20 3d |->vstr->|str[0] =|
|00004180| 20 63 3b 0a 58 09 20 20 | 20 20 74 2d 3e 76 73 74 | c;.X. | t->vst|
|00004190| 72 2d 3e 73 74 72 5b 31 | 5d 20 3d 20 30 3b 0a 58 |r->str[1|] = 0;.X|
|000041a0| 09 20 20 20 20 74 2d 3e | 74 6f 6b 6e 6f 20 3d 20 |. t->|tokno = |
|000041b0| 54 4f 4b 5f 4f 54 48 45 | 52 3b 0a 58 09 20 20 20 |TOK_OTHE|R;.X. |
|000041c0| 20 72 65 74 75 72 6e 20 | 28 74 29 3b 0a 58 09 7d | return |(t);.X.}|
|000041d0| 20 65 6c 73 65 20 69 66 | 20 28 63 20 3d 3d 20 27 | else if| (c == '|
|000041e0| 22 27 20 7c 7c 20 63 20 | 3d 3d 20 27 5c 27 27 29 |"' || c |== '\'')|
|000041f0| 20 7b 0a 58 09 20 20 20 | 20 72 65 61 64 5f 71 75 | {.X. | read_qu|
|00004200| 6f 74 65 64 28 74 2c 20 | 63 29 3b 0a 58 09 20 20 |oted(t, |c);.X. |
|00004210| 20 20 74 2d 3e 74 6f 6b | 6e 6f 20 3d 20 63 3b 0a | t->tok|no = c;.|
|00004220| 58 09 20 20 20 20 72 65 | 74 75 72 6e 20 28 74 29 |X. re|turn (t)|
|00004230| 3b 0a 58 09 7d 20 65 6c | 73 65 20 69 66 20 28 49 |;.X.} el|se if (I|
|00004240| 53 41 4c 50 48 41 28 63 | 29 29 20 7b 0a 58 09 20 |SALPHA(c|)) {.X. |
|00004250| 20 20 20 43 4f 4c 4c 45 | 43 54 28 74 2d 3e 76 73 | COLLE|CT(t->vs|
|00004260| 74 72 2c 20 63 2c 20 49 | 53 41 4c 4e 55 4d 28 63 |tr, c, I|SALNUM(c|
|00004270| 29 29 3b 0a 58 09 20 20 | 20 20 74 2d 3e 74 6f 6b |));.X. | t->tok|
|00004280| 6e 6f 20 3d 20 54 4f 4b | 5f 57 4f 52 44 3b 0a 58 |no = TOK|_WORD;.X|
|00004290| 09 20 20 20 20 72 65 74 | 75 72 6e 20 28 74 29 3b |. ret|urn (t);|
|000042a0| 0a 58 09 7d 20 65 6c 73 | 65 20 69 66 20 28 69 73 |.X.} els|e if (is|
|000042b0| 64 69 67 69 74 28 63 29 | 29 20 7b 0a 58 09 20 20 |digit(c)|) {.X. |
|000042c0| 20 20 43 4f 4c 4c 45 43 | 54 28 74 2d 3e 76 73 74 | COLLEC|T(t->vst|
|000042d0| 72 2c 20 63 2c 20 69 73 | 64 69 67 69 74 28 63 29 |r, c, is|digit(c)|
|000042e0| 29 3b 0a 58 09 20 20 20 | 20 74 2d 3e 74 6f 6b 6e |);.X. | t->tokn|
|000042f0| 6f 20 3d 20 54 4f 4b 5f | 4e 55 4d 42 45 52 3b 0a |o = TOK_|NUMBER;.|
|00004300| 58 09 20 20 20 20 72 65 | 74 75 72 6e 20 28 74 29 |X. re|turn (t)|
|00004310| 3b 0a 58 09 7d 20 65 6c | 73 65 20 69 66 20 28 49 |;.X.} el|se if (I|
|00004320| 53 53 50 41 43 45 28 63 | 29 29 20 7b 0a 58 09 20 |SSPACE(c|)) {.X. |
|00004330| 20 20 20 43 4f 4c 4c 45 | 43 54 28 74 2d 3e 76 73 | COLLE|CT(t->vs|
|00004340| 74 72 2c 20 63 2c 20 49 | 53 53 50 41 43 45 28 63 |tr, c, I|SSPACE(c|
|00004350| 29 29 3b 0a 58 09 20 20 | 20 20 69 66 20 28 73 6b |));.X. | if (sk|
|00004360| 69 70 5f 66 6c 61 67 29 | 0a 58 09 09 63 6f 6e 74 |ip_flag)|.X..cont|
|00004370| 69 6e 75 65 3b 0a 58 09 | 20 20 20 20 74 2d 3e 74 |inue;.X.| t->t|
|00004380| 6f 6b 6e 6f 20 3d 20 54 | 4f 4b 5f 57 53 50 41 43 |okno = T|OK_WSPAC|
|00004390| 45 3b 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 20 |E;.X. | return |
|000043a0| 28 74 29 3b 0a 58 09 7d | 20 65 6c 73 65 20 69 66 |(t);.X.}| else if|
|000043b0| 20 28 49 53 44 4f 54 28 | 63 29 29 20 7b 0a 58 09 | (ISDOT(|c)) {.X.|
|000043c0| 20 20 20 20 43 4f 4c 4c | 45 43 54 28 74 2d 3e 76 | COLL|ECT(t->v|
|000043d0| 73 74 72 2c 20 63 2c 20 | 49 53 44 4f 54 28 63 29 |str, c, |ISDOT(c)|
|000043e0| 29 3b 0a 58 09 20 20 20 | 20 74 2d 3e 74 6f 6b 6e |);.X. | t->tokn|
|000043f0| 6f 20 3d 20 54 4f 4b 5f | 4f 54 48 45 52 3b 0a 58 |o = TOK_|OTHER;.X|
|00004400| 09 20 20 20 20 72 65 74 | 75 72 6e 20 28 74 29 3b |. ret|urn (t);|
|00004410| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 0a 58 09 20 20 |.X.} els|e {.X. |
|00004420| 20 20 74 2d 3e 76 73 74 | 72 2d 3e 73 74 72 5b 30 | t->vst|r->str[0|
|00004430| 5d 20 3d 20 63 3b 0a 58 | 09 20 20 20 20 69 66 20 |] = c;.X|. if |
|00004440| 28 63 20 3d 3d 20 27 2f | 27 29 20 7b 0a 58 09 09 |(c == '/|') {.X..|
|00004450| 69 66 20 28 28 64 20 3d | 20 69 6e 70 75 74 28 29 |if ((d =| input()|
|00004460| 29 20 3d 3d 20 27 2a 27 | 29 20 7b 0a 58 09 09 20 |) == '*'|) {.X.. |
|00004470| 20 20 20 74 2d 3e 76 73 | 74 72 2d 3e 73 74 72 5b | t->vs|tr->str[|
|00004480| 31 5d 20 3d 20 64 3b 09 | 2f 2a 20 63 6f 6d 6d 65 |1] = d;.|/* comme|
|00004490| 6e 74 20 2a 2f 0a 58 09 | 09 20 20 20 20 72 65 61 |nt */.X.|. rea|
|000044a0| 64 5f 63 6f 6d 6d 65 6e | 74 28 74 2d 3e 76 73 74 |d_commen|t(t->vst|
|000044b0| 72 29 3b 0a 58 09 09 20 | 20 20 20 69 66 20 28 73 |r);.X.. | if (s|
|000044c0| 6b 69 70 5f 66 6c 61 67 | 29 0a 58 09 09 09 63 6f |kip_flag|).X...co|
|000044d0| 6e 74 69 6e 75 65 3b 0a | 58 09 09 20 20 20 20 74 |ntinue;.|X.. t|
|000044e0| 2d 3e 74 6f 6b 6e 6f 20 | 3d 20 54 4f 4b 5f 57 53 |->tokno |= TOK_WS|
|000044f0| 50 41 43 45 3b 0a 58 09 | 09 20 20 20 20 72 65 74 |PACE;.X.|. ret|
|00004500| 75 72 6e 20 28 74 29 3b | 0a 58 09 09 7d 20 65 6c |urn (t);|.X..} el|
|00004510| 73 65 20 7b 0a 58 09 09 | 20 20 20 20 75 6e 70 75 |se {.X..| unpu|
|00004520| 74 28 64 29 3b 0a 58 09 | 09 7d 0a 58 09 20 20 20 |t(d);.X.|.}.X. |
|00004530| 20 7d 0a 58 09 20 20 20 | 20 74 2d 3e 76 73 74 72 | }.X. | t->vstr|
|00004540| 2d 3e 73 74 72 5b 31 5d | 20 3d 20 30 3b 0a 58 09 |->str[1]| = 0;.X.|
|00004550| 20 20 20 20 74 2d 3e 74 | 6f 6b 6e 6f 20 3d 20 63 | t->t|okno = c|
|00004560| 3b 0a 58 09 20 20 20 20 | 72 65 74 75 72 6e 20 28 |;.X. |return (|
|00004570| 74 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 7d 0a 58 |t);.X.}.|X }.X|
|00004580| 7d 0a 58 0a 58 2f 2a 20 | 72 65 61 64 5f 71 6f 75 |}.X.X/* |read_qou|
|00004590| 74 65 64 20 2d 20 72 65 | 61 64 20 73 74 72 69 6e |ted - re|ad strin|
|000045a0| 67 20 6f 72 20 63 68 61 | 72 61 63 74 65 72 20 6c |g or cha|racter l|
|000045b0| 69 74 65 72 61 6c 20 2a | 2f 0a 58 0a 58 73 74 61 |iteral *|/.X.Xsta|
|000045c0| 74 69 63 20 76 6f 69 64 | 20 72 65 61 64 5f 71 75 |tic void| read_qu|
|000045d0| 6f 74 65 64 28 74 2c 20 | 63 68 29 0a 58 72 65 67 |oted(t, |ch).Xreg|
|000045e0| 69 73 74 65 72 20 73 74 | 72 75 63 74 20 74 6f 6b |ister st|ruct tok|
|000045f0| 65 6e 20 2a 74 3b 0a 58 | 69 6e 74 20 20 20 20 20 |en *t;.X|int |
|00004600| 63 68 3b 0a 58 7b 0a 58 | 20 20 20 20 72 65 67 69 |ch;.X{.X| regi|
|00004610| 73 74 65 72 20 63 68 61 | 72 20 2a 63 70 20 3d 20 |ster cha|r *cp = |
|00004620| 74 2d 3e 76 73 74 72 2d | 3e 73 74 72 3b 0a 58 20 |t->vstr-|>str;.X |
|00004630| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 20 | regis|ter int |
|00004640| 63 3b 0a 58 0a 58 20 20 | 20 20 2a 63 70 2b 2b 20 |c;.X.X | *cp++ |
|00004650| 3d 20 63 68 3b 0a 58 0a | 58 20 20 20 20 77 68 69 |= ch;.X.|X whi|
|00004660| 6c 65 20 28 63 20 3d 20 | 69 6e 70 75 74 28 29 29 |le (c = |input())|
|00004670| 20 7b 0a 58 09 69 66 20 | 28 63 20 3d 3d 20 27 5c | {.X.if |(c == '\|
|00004680| 6e 27 29 20 7b 09 09 09 | 2f 2a 20 6e 65 77 6c 69 |n') {...|/* newli|
|00004690| 6e 65 20 69 6e 20 73 74 | 72 69 6e 67 20 2a 2f 0a |ne in st|ring */.|
|000046a0| 58 09 20 20 20 20 75 6e | 70 75 74 28 63 29 3b 0a |X. un|put(c);.|
|000046b0| 58 09 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 09 7d |X. br|eak;.X.}|
|000046c0| 0a 58 09 69 66 20 28 56 | 53 5f 41 44 44 43 48 28 |.X.if (V|S_ADDCH(|
|000046d0| 74 2d 3e 76 73 74 72 2c | 20 63 70 2c 20 63 29 20 |t->vstr,| cp, c) |
|000046e0| 3d 3d 20 30 29 09 2f 2a | 20 73 74 6f 72 65 20 63 |== 0)./*| store c|
|000046f0| 68 61 72 61 63 74 65 72 | 20 2a 2f 0a 58 09 20 20 |haracter| */.X. |
|00004700| 20 20 65 72 72 6f 72 28 | 31 2c 20 22 6f 75 74 20 | error(|1, "out |
|00004710| 6f 66 20 6d 65 6d 6f 72 | 79 22 29 3b 0a 58 09 69 |of memor|y");.X.i|
|00004720| 66 20 28 63 20 3d 3d 20 | 63 68 29 09 09 09 09 2f |f (c == |ch)..../|
|00004730| 2a 20 65 6e 64 20 6f 66 | 20 73 74 72 69 6e 67 20 |* end of| string |
|00004740| 2a 2f 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |*/.X. | break;.|
|00004750| 58 09 69 66 20 28 63 20 | 3d 3d 20 27 5c 5c 27 29 |X.if (c |== '\\')|
|00004760| 09 09 09 09 2f 2a 20 65 | 61 74 20 6e 65 78 74 20 |..../* e|at next |
|00004770| 63 68 61 72 61 63 74 65 | 72 20 2a 2f 0a 58 09 20 |characte|r */.X. |
|00004780| 20 20 20 69 66 20 28 28 | 63 20 3d 20 69 6e 70 75 | if ((|c = inpu|
|00004790| 74 28 29 29 20 21 3d 20 | 30 20 26 26 20 56 53 5f |t()) != |0 && VS_|
|000047a0| 41 44 44 43 48 28 74 2d | 3e 76 73 74 72 2c 20 63 |ADDCH(t-|>vstr, c|
|000047b0| 70 2c 20 63 29 20 3d 3d | 20 30 29 0a 58 09 09 65 |p, c) ==| 0).X..e|
|000047c0| 72 72 6f 72 28 31 2c 20 | 22 6f 75 74 20 6f 66 20 |rror(1, |"out of |
|000047d0| 6d 65 6d 6f 72 79 22 29 | 3b 0a 58 20 20 20 20 7d |memory")|;.X }|
|000047e0| 0a 58 20 20 20 20 2a 63 | 70 20 3d 20 30 3b 0a 58 |.X *c|p = 0;.X|
|000047f0| 20 20 20 20 72 65 74 75 | 72 6e 3b 0a 58 7d 0a 58 | retu|rn;.X}.X|
|00004800| 0a 58 2f 2a 20 72 65 61 | 64 5f 63 6f 6d 6d 65 6e |.X/* rea|d_commen|
|00004810| 74 20 2d 20 73 74 75 66 | 66 20 61 20 77 68 6f 6c |t - stuf|f a whol|
|00004820| 65 20 63 6f 6d 6d 65 6e | 74 20 69 6e 74 6f 20 6f |e commen|t into o|
|00004830| 6e 65 20 68 75 67 65 20 | 74 6f 6b 65 6e 20 2a 2f |ne huge |token */|
|00004840| 0a 58 0a 58 73 74 61 74 | 69 63 20 76 6f 69 64 20 |.X.Xstat|ic void |
|00004850| 72 65 61 64 5f 63 6f 6d | 6d 65 6e 74 28 76 73 29 |read_com|ment(vs)|
|00004860| 0a 58 72 65 67 69 73 74 | 65 72 20 73 74 72 75 63 |.Xregist|er struc|
|00004870| 74 20 76 73 74 72 69 6e | 67 20 2a 76 73 3b 0a 58 |t vstrin|g *vs;.X|
|00004880| 7b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |{.X r|egister |
|00004890| 63 68 61 72 20 2a 63 70 | 20 3d 20 76 73 2d 3e 73 |char *cp| = vs->s|
|000048a0| 74 72 20 2b 20 32 3b 09 | 2f 2a 20 73 6b 69 70 20 |tr + 2;.|/* skip |
|000048b0| 73 6c 61 73 68 20 73 74 | 61 72 20 2a 2f 0a 58 20 |slash st|ar */.X |
|000048c0| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 20 | regis|ter int |
|000048d0| 63 3b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |c;.X |register|
|000048e0| 20 69 6e 74 20 64 3b 0a | 58 0a 58 20 20 20 20 77 | int d;.|X.X w|
|000048f0| 68 69 6c 65 20 28 63 20 | 3d 20 69 6e 70 75 74 28 |hile (c |= input(|
|00004900| 29 29 20 7b 0a 58 09 69 | 66 20 28 56 53 5f 41 44 |)) {.X.i|f (VS_AD|
|00004910| 44 43 48 28 76 73 2c 20 | 63 70 2c 20 63 29 20 3d |DCH(vs, |cp, c) =|
|00004920| 3d 20 30 29 0a 58 09 20 | 20 20 20 65 72 72 6f 72 |= 0).X. | error|
|00004930| 28 31 2c 20 22 6f 75 74 | 20 6f 66 20 6d 65 6d 6f |(1, "out| of memo|
|00004940| 72 79 22 29 3b 0a 58 09 | 69 66 20 28 63 20 3d 3d |ry");.X.|if (c ==|
|00004950| 20 27 2a 27 29 20 7b 0a | 58 09 20 20 20 20 69 66 | '*') {.|X. if|
|00004960| 20 28 28 64 20 3d 20 69 | 6e 70 75 74 28 29 29 20 | ((d = i|nput()) |
|00004970| 3d 3d 20 27 2f 27 29 20 | 7b 0a 58 09 09 69 66 20 |== '/') |{.X..if |
|00004980| 28 56 53 5f 41 44 44 43 | 48 28 76 73 2c 20 63 70 |(VS_ADDC|H(vs, cp|
|00004990| 2c 20 64 29 20 3d 3d 20 | 30 29 0a 58 09 09 20 20 |, d) == |0).X.. |
|000049a0| 20 20 65 72 72 6f 72 28 | 31 2c 20 22 6f 75 74 20 | error(|1, "out |
|000049b0| 6f 66 20 6d 65 6d 6f 72 | 79 22 29 3b 0a 58 09 09 |of memor|y");.X..|
|000049c0| 62 72 65 61 6b 3b 0a 58 | 09 20 20 20 20 7d 20 65 |break;.X|. } e|
|000049d0| 6c 73 65 20 7b 0a 58 09 | 09 75 6e 70 75 74 28 64 |lse {.X.|.unput(d|
|000049e0| 29 3b 0a 58 09 20 20 20 | 20 7d 0a 58 09 7d 0a 58 |);.X. | }.X.}.X|
|000049f0| 20 20 20 20 7d 0a 58 20 | 20 20 20 2a 63 70 20 3d | }.X | *cp =|
|00004a00| 20 30 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 70 75 74 | 0;.X}.X|.X/* put|
|00004a10| 5f 73 74 72 20 2d 20 6f | 75 74 70 75 74 20 61 20 |_str - o|utput a |
|00004a20| 73 74 72 69 6e 67 20 2a | 2f 0a 58 0a 58 76 6f 69 |string *|/.X.Xvoi|
|00004a30| 64 20 20 20 20 70 75 74 | 5f 73 74 72 28 73 29 0a |d put|_str(s).|
|00004a40| 58 63 68 61 72 20 20 20 | 2a 73 3b 0a 58 7b 0a 58 |Xchar |*s;.X{.X|
|00004a50| 20 20 20 20 66 70 75 74 | 73 28 73 2c 20 73 74 64 | fput|s(s, std|
|00004a60| 6f 75 74 29 3b 0a 58 20 | 20 20 20 6c 61 73 74 5f |out);.X | last_|
|00004a70| 74 6f 6b 20 3d 20 73 5b | 30 5d 3b 09 09 09 09 2f |tok = s[|0];..../|
|00004a80| 2a 20 58 58 58 20 2a 2f | 0a 58 23 69 66 64 65 66 |* XXX */|.X#ifdef|
|00004a90| 20 44 45 42 55 47 0a 58 | 20 20 20 20 66 66 6c 75 | DEBUG.X| fflu|
|00004aa0| 73 68 28 73 74 64 6f 75 | 74 29 3b 0a 58 23 65 6e |sh(stdou|t);.X#en|
|00004ab0| 64 69 66 0a 58 7d 0a 58 | 0a 58 2f 2a 20 70 75 74 |dif.X}.X|.X/* put|
|00004ac0| 5f 63 68 20 2d 20 70 75 | 74 20 63 68 61 72 61 63 |_ch - pu|t charac|
|00004ad0| 74 65 72 20 2a 2f 0a 58 | 0a 58 76 6f 69 64 20 20 |ter */.X|.Xvoid |
|00004ae0| 20 20 70 75 74 5f 63 68 | 28 63 29 0a 58 69 6e 74 | put_ch|(c).Xint|
|00004af0| 20 20 20 20 20 63 3b 0a | 58 7b 0a 58 20 20 20 20 | c;.|X{.X |
|00004b00| 6c 61 73 74 5f 74 6f 6b | 20 3d 20 70 75 74 63 68 |last_tok| = putch|
|00004b10| 61 72 28 63 29 3b 0a 58 | 23 69 66 64 65 66 20 44 |ar(c);.X|#ifdef D|
|00004b20| 45 42 55 47 0a 58 20 20 | 20 20 66 66 6c 75 73 68 |EBUG.X | fflush|
|00004b30| 28 73 74 64 6f 75 74 29 | 3b 0a 58 23 65 6e 64 69 |(stdout)|;.X#endi|
|00004b40| 66 0a 58 7d 0a 58 0a 58 | 2f 2a 20 74 6f 6b 5f 73 |f.X}.X.X|/* tok_s|
|00004b50| 68 6f 77 20 2d 20 6f 75 | 74 70 75 74 20 28 70 6f |how - ou|tput (po|
|00004b60| 73 73 69 62 6c 79 20 63 | 6f 6d 70 6f 73 69 74 65 |ssibly c|omposite|
|00004b70| 29 20 74 6f 6b 65 6e 20 | 2a 2f 0a 58 0a 58 76 6f |) token |*/.X.Xvo|
|00004b80| 69 64 20 20 20 20 74 6f | 6b 5f 73 68 6f 77 28 74 |id to|k_show(t|
|00004b90| 29 0a 58 73 74 72 75 63 | 74 20 74 6f 6b 65 6e 20 |).Xstruc|t token |
|00004ba0| 2a 74 3b 0a 58 7b 0a 58 | 20 20 20 20 72 65 67 69 |*t;.X{.X| regi|
|00004bb0| 73 74 65 72 20 73 74 72 | 75 63 74 20 74 6f 6b 65 |ster str|uct toke|
|00004bc0| 6e 20 2a 70 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |n *p;.X | regis|
|00004bd0| 74 65 72 20 73 74 72 75 | 63 74 20 74 6f 6b 65 6e |ter stru|ct token|
|00004be0| 20 2a 73 3b 0a 58 0a 58 | 20 20 20 20 73 77 69 74 | *s;.X.X| swit|
|00004bf0| 63 68 20 28 74 2d 3e 74 | 6f 6b 6e 6f 29 20 7b 0a |ch (t->t|okno) {.|
|00004c00| 58 20 20 20 20 63 61 73 | 65 20 54 4f 4b 5f 4c 49 |X cas|e TOK_LI|
|00004c10| 53 54 3a 0a 58 09 66 6f | 72 20 28 73 20 3d 20 74 |ST:.X.fo|r (s = t|
|00004c20| 2d 3e 68 65 61 64 3b 20 | 73 3b 20 73 20 3d 20 73 |->head; |s; s = s|
|00004c30| 2d 3e 6e 65 78 74 29 20 | 7b 0a 58 09 20 20 20 20 |->next) |{.X. |
|00004c40| 70 75 74 5f 63 68 28 73 | 2d 3e 74 6f 6b 6e 6f 29 |put_ch(s|->tokno)|
|00004c50| 3b 09 09 09 2f 2a 20 6f | 70 65 6e 69 6e 67 20 70 |;.../* o|pening p|
|00004c60| 61 72 65 6e 20 6f 72 20 | 27 2c 27 20 2a 2f 0a 58 |aren or |',' */.X|
|00004c70| 09 20 20 20 20 66 6f 72 | 20 28 70 20 3d 20 73 2d |. for| (p = s-|
|00004c80| 3e 68 65 61 64 3b 20 70 | 3b 20 70 20 3d 20 70 2d |>head; p|; p = p-|
|00004c90| 3e 6e 65 78 74 29 0a 58 | 09 09 74 6f 6b 5f 73 68 |>next).X|..tok_sh|
|00004ca0| 6f 77 28 70 29 3b 0a 58 | 09 7d 0a 58 09 70 75 74 |ow(p);.X|.}.X.put|
|00004cb0| 5f 63 68 28 27 29 27 29 | 3b 09 09 09 09 2f 2a 20 |_ch(')')|;..../* |
|00004cc0| 63 6c 6f 73 69 6e 67 20 | 70 61 72 65 6e 20 2a 2f |closing |paren */|
|00004cd0| 0a 58 09 62 72 65 61 6b | 3b 0a 58 20 20 20 20 63 |.X.break|;.X c|
|00004ce0| 61 73 65 20 54 4f 4b 5f | 57 4f 52 44 3a 0a 58 09 |ase TOK_|WORD:.X.|
|00004cf0| 69 66 20 28 49 53 41 4c | 50 48 41 28 6c 61 73 74 |if (ISAL|PHA(last|
|00004d00| 5f 74 6f 6b 29 29 0a 58 | 09 20 20 20 20 70 75 74 |_tok)).X|. put|
|00004d10| 63 68 61 72 28 27 20 27 | 29 3b 0a 58 09 2f 2a 20 |char(' '|);.X./* |
|00004d20| 46 41 4c 4c 54 52 48 4f | 55 47 48 20 2a 2f 0a 58 |FALLTRHO|UGH */.X|
|00004d30| 20 20 20 20 64 65 66 61 | 75 6c 74 3a 0a 58 09 66 | defa|ult:.X.f|
|00004d40| 70 75 74 73 28 74 2d 3e | 76 73 74 72 2d 3e 73 74 |puts(t->|vstr->st|
|00004d50| 72 2c 20 73 74 64 6f 75 | 74 29 3b 09 09 2f 2a 20 |r, stdou|t);../* |
|00004d60| 74 6f 6b 65 6e 20 63 6f | 6e 74 65 6e 74 73 20 2a |token co|ntents *|
|00004d70| 2f 0a 58 09 6c 61 73 74 | 5f 74 6f 6b 20 3d 20 74 |/.X.last|_tok = t|
|00004d80| 2d 3e 76 73 74 72 2d 3e | 73 74 72 5b 30 5d 3b 0a |->vstr->|str[0];.|
|00004d90| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 0a 58 20 |X#ifdef |DEBUG.X |
|00004da0| 20 20 20 66 66 6c 75 73 | 68 28 73 74 64 6f 75 74 | fflus|h(stdout|
|00004db0| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 09 69 66 20 |);.X#end|if.X.if |
|00004dc0| 28 74 2d 3e 68 65 61 64 | 29 09 09 09 09 2f 2a 20 |(t->head|)..../* |
|00004dd0| 74 72 61 69 6c 69 6e 67 | 20 62 6c 61 6e 6b 73 20 |trailing| blanks |
|00004de0| 2a 2f 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |*/.X | |
|00004df0| 66 6f 72 20 28 70 20 3d | 20 74 2d 3e 68 65 61 64 |for (p =| t->head|
|00004e00| 3b 20 70 3b 20 70 20 3d | 20 70 2d 3e 6e 65 78 74 |; p; p =| p->next|
|00004e10| 29 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |).X | |
|00004e20| 20 20 20 74 6f 6b 5f 73 | 68 6f 77 28 70 29 3b 0a | tok_s|how(p);.|
|00004e30| 58 20 20 20 20 7d 0a 58 | 7d 0a 45 4e 44 5f 4f 46 |X }.X|}.END_OF|
|00004e40| 5f 74 6f 6b 5f 69 6f 2e | 63 0a 69 66 20 74 65 73 |_tok_io.|c.if tes|
|00004e50| 74 20 39 39 33 38 20 2d | 6e 65 20 60 77 63 20 2d |t 9938 -|ne `wc -|
|00004e60| 63 20 3c 74 6f 6b 5f 69 | 6f 2e 63 60 3b 20 74 68 |c <tok_i|o.c`; th|
|00004e70| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|00004e80| 3a 20 5c 22 74 6f 6b 5f | 69 6f 2e 63 5c 22 20 75 |: \"tok_|io.c\" u|
|00004e90| 6e 70 61 63 6b 65 64 20 | 77 69 74 68 20 77 72 6f |npacked |with wro|
|00004ea0| 6e 67 20 73 69 7a 65 21 | 0a 66 69 0a 23 20 65 6e |ng size!|.fi.# en|
|00004eb0| 64 20 6f 66 20 6f 76 65 | 72 77 72 69 74 69 6e 67 |d of ove|rwriting|
|00004ec0| 20 63 68 65 63 6b 0a 66 | 69 0a 69 66 20 74 65 73 | check.f|i.if tes|
|00004ed0| 74 20 2d 66 20 74 6f 6b | 5f 63 6c 61 73 73 2e 63 |t -f tok|_class.c|
|00004ee0| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00004ef0| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00004f00| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00004f10| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00004f20| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 74 6f 6b 5f |ting fil|e \"tok_|
|00004f30| 63 6c 61 73 73 2e 63 5c | 22 0a 65 6c 73 65 0a 65 |class.c\|".else.e|
|00004f40| 63 68 6f 20 73 68 61 72 | 3a 20 45 78 74 72 61 63 |cho shar|: Extrac|
|00004f50| 74 69 6e 67 20 5c 22 74 | 6f 6b 5f 63 6c 61 73 73 |ting \"t|ok_class|
|00004f60| 2e 63 5c 22 20 5c 28 33 | 36 32 35 20 63 68 61 72 |.c\" \(3|625 char|
|00004f70| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00004f80| 5e 58 2f 2f 22 20 3e 74 | 6f 6b 5f 63 6c 61 73 73 |^X//" >t|ok_class|
|00004f90| 2e 63 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 74 6f 6b |.c <<'EN|D_OF_tok|
|00004fa0| 5f 63 6c 61 73 73 2e 63 | 27 0a 58 2f 2a 2b 2b 0a |_class.c|'.X/*++.|
|00004fb0| 58 2f 2a 20 4e 41 4d 45 | 0a 58 2f 2a 09 74 6f 6b |X/* NAME|.X/*.tok|
|00004fc0| 5f 63 6c 61 73 73 20 33 | 0a 58 2f 2a 20 53 55 4d |_class 3|.X/* SUM|
|00004fd0| 4d 41 52 59 0a 58 2f 2a | 09 63 6f 6c 6c 65 63 74 |MARY.X/*|.collect|
|00004fe0| 20 63 6f 6d 70 6f 73 69 | 74 65 20 74 6f 6b 65 6e | composi|te token|
|00004ff0| 73 0a 58 2f 2a 20 50 41 | 43 4b 41 47 45 0a 58 2f |s.X/* PA|CKAGE.X/|
|00005000| 2a 09 75 6e 70 72 6f 74 | 6f 0a 58 2f 2a 20 53 59 |*.unprot|o.X/* SY|
|00005010| 4e 4f 50 53 49 53 0a 58 | 2f 2a 09 23 69 6e 63 6c |NOPSIS.X|/*.#incl|
|00005020| 75 64 65 20 22 70 61 72 | 73 65 2e 68 22 0a 58 2f |ude "par|se.h".X/|
|00005030| 2a 0a 58 2f 2a 09 73 74 | 72 75 63 74 20 74 6f 6b |*.X/*.st|ruct tok|
|00005040| 65 6e 20 2a 74 6f 6b 5f | 63 6c 61 73 73 28 73 6b |en *tok_|class(sk|
|00005050| 69 70 29 0a 58 2f 2a 09 | 69 6e 74 20 73 6b 69 70 |ip).X/*.|int skip|
|00005060| 3b 0a 58 2f 2a 20 44 45 | 53 43 52 49 50 54 49 4f |;.X/* DE|SCRIPTIO|
|00005070| 4e 0a 58 2f 2a 09 74 6f | 6b 5f 63 6c 61 73 73 28 |N.X/*.to|k_class(|
|00005080| 29 20 63 6f 6c 6c 65 63 | 74 73 20 61 20 73 69 6e |) collec|ts a sin|
|00005090| 67 6c 65 20 61 6e 64 20 | 63 6f 6d 70 6f 73 69 74 |gle and |composit|
|000050a0| 65 20 74 6f 6b 65 6e 73 | 2e 0a 58 2f 2a 09 41 74 |e tokens|..X/*.At|
|000050b0| 20 70 72 65 73 65 6e 74 | 2c 20 74 68 65 20 6f 6e | present|, the on|
|000050c0| 6c 79 20 63 6f 6d 70 6f | 73 69 74 65 20 74 6f 6b |ly compo|site tok|
|000050d0| 65 6e 73 20 61 72 65 20 | 28 29 2d 64 65 6c 69 6d |ens are |()-delim|
|000050e0| 69 74 65 64 2c 0a 58 2f | 2a 09 63 6f 6d 6d 61 2d |ited,.X/|*.comma-|
|000050f0| 73 65 70 61 72 61 74 65 | 64 20 6c 69 73 74 73 2e |separate|d lists.|
|00005100| 0a 58 2f 2a 0a 58 2f 2a | 09 54 68 65 20 73 6b 69 |.X/*.X/*|.The ski|
|00005110| 70 20 61 72 67 75 6d 65 | 6e 74 20 68 61 73 20 74 |p argume|nt has t|
|00005120| 68 65 20 73 61 6d 65 20 | 6d 65 61 6e 69 6e 67 20 |he same |meaning |
|00005130| 61 73 20 77 69 74 68 20 | 74 68 65 20 74 6f 6b 5f |as with |the tok_|
|00005140| 67 65 74 28 29 0a 58 2f | 2a 09 66 75 6e 63 74 69 |get().X/|*.functi|
|00005150| 6f 6e 2e 0a 58 2f 2a 20 | 44 49 41 47 4e 4f 53 54 |on..X/* |DIAGNOST|
|00005160| 49 43 53 0a 58 2f 2a 09 | 54 68 65 20 63 6f 64 65 |ICS.X/*.|The code|
|00005170| 20 63 6f 6d 70 6c 61 69 | 6e 73 20 69 66 20 69 6e | complai|ns if in|
|00005180| 70 75 74 20 74 65 72 6d | 69 6e 61 74 65 73 20 69 |put term|inates i|
|00005190| 6e 20 74 68 65 20 6d 69 | 64 64 6c 65 20 6f 66 20 |n the mi|ddle of |
|000051a0| 61 20 6c 69 73 74 2e 0a | 58 2f 2a 20 42 55 47 53 |a list..|X/* BUGS|
|000051b0| 0a 58 2f 2a 09 44 6f 65 | 73 20 6e 6f 74 20 70 72 |.X/*.Doe|s not pr|
|000051c0| 65 73 65 72 76 65 20 77 | 68 69 74 65 20 73 70 61 |eserve w|hite spa|
|000051d0| 63 65 20 61 74 20 74 68 | 65 20 62 65 67 69 6e 6e |ce at th|e beginn|
|000051e0| 69 6e 67 20 6f 66 20 61 | 20 6c 69 73 74 20 65 6c |ing of a| list el|
|000051f0| 65 6d 65 6e 74 0a 58 2f | 2a 09 6f 72 20 61 66 74 |ement.X/|*.or aft|
|00005200| 65 72 20 74 68 65 20 65 | 6e 64 20 6f 66 20 61 20 |er the e|nd of a |
|00005210| 6c 69 73 74 2e 0a 58 2f | 2a 20 41 55 54 48 4f 52 |list..X/|* AUTHOR|
|00005220| 28 53 29 0a 58 2f 2a 09 | 57 69 65 74 73 65 20 56 |(S).X/*.|Wietse V|
|00005230| 65 6e 65 6d 61 0a 58 2f | 2a 09 45 69 6e 64 68 6f |enema.X/|*.Eindho|
|00005240| 76 65 6e 20 55 6e 69 76 | 65 72 73 69 74 79 20 6f |ven Univ|ersity o|
|00005250| 66 20 54 65 63 68 6e 6f | 6c 6f 67 79 0a 58 2f 2a |f Techno|logy.X/*|
|00005260| 09 44 65 70 61 72 74 6d | 65 6e 74 20 6f 66 20 4d |.Departm|ent of M|
|00005270| 61 74 68 65 6d 61 74 69 | 63 73 20 61 6e 64 20 43 |athemati|cs and C|
|00005280| 6f 6d 70 75 74 65 72 20 | 53 63 69 65 6e 63 65 0a |omputer |Science.|
|00005290| 58 2f 2a 09 44 65 6e 20 | 44 6f 6c 65 63 68 20 32 |X/*.Den |Dolech 2|
|000052a0| 2c 20 50 2e 4f 2e 20 42 | 6f 78 20 35 31 33 2c 20 |, P.O. B|ox 513, |
|000052b0| 35 36 30 30 20 4d 42 20 | 45 69 6e 64 68 6f 76 65 |5600 MB |Eindhove|
|000052c0| 6e 2c 20 54 68 65 20 4e | 65 74 68 65 72 6c 61 6e |n, The N|etherlan|
|000052d0| 64 73 0a 58 2f 2a 20 4c | 41 53 54 20 4d 4f 44 49 |ds.X/* L|AST MODI|
|000052e0| 46 49 43 41 54 49 4f 4e | 0a 58 2f 2a 09 39 31 2f |FICATION|.X/*.91/|
|000052f0| 30 39 2f 30 31 20 32 33 | 3a 30 38 3a 33 34 0a 58 |09/01 23|:08:34.X|
|00005300| 2f 2a 20 56 45 52 53 49 | 4f 4e 2f 52 45 4c 45 41 |/* VERSI|ON/RELEA|
|00005310| 53 45 0a 58 2f 2a 09 31 | 2e 31 0a 58 2f 2a 2d 2d |SE.X/*.1|.1.X/*--|
|00005320| 2a 2f 0a 58 0a 58 73 74 | 61 74 69 63 20 63 68 61 |*/.X.Xst|atic cha|
|00005330| 72 20 63 6c 61 73 73 5f | 73 63 63 73 69 64 5b 5d |r class_|sccsid[]|
|00005340| 20 3d 20 22 40 28 23 29 | 20 74 6f 6b 5f 63 6c 61 | = "@(#)| tok_cla|
|00005350| 73 73 2e 63 20 31 2e 31 | 20 39 31 2f 30 39 2f 30 |ss.c 1.1| 91/09/0|
|00005360| 31 20 32 33 3a 30 38 3a | 33 34 22 3b 0a 58 0a 58 |1 23:08:|34";.X.X|
|00005370| 2f 2a 20 41 70 70 6c 69 | 63 61 74 69 6f 6e 2d 73 |/* Appli|cation-s|
|00005380| 70 65 63 69 66 69 63 20 | 73 74 75 66 66 20 2a 2f |pecific |stuff */|
|00005390| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 70 61 |.X.X#inc|lude "pa|
|000053a0| 72 73 65 2e 68 22 0a 58 | 23 69 6e 63 6c 75 64 65 |rse.h".X|#include|
|000053b0| 20 22 76 73 74 72 69 6e | 67 2e 68 22 0a 58 23 69 | "vstrin|g.h".X#i|
|000053c0| 6e 63 6c 75 64 65 20 22 | 74 6f 6b 65 6e 2e 68 22 |nclude "|token.h"|
|000053d0| 0a 58 0a 58 73 74 61 74 | 69 63 20 73 74 72 75 63 |.X.Xstat|ic struc|
|000053e0| 74 20 74 6f 6b 65 6e 20 | 2a 74 6f 6b 5f 6c 69 73 |t token |*tok_lis|
|000053f0| 74 28 29 3b 0a 58 73 74 | 61 74 69 63 20 76 6f 69 |t();.Xst|atic voi|
|00005400| 64 20 74 6f 6b 5f 6c 69 | 73 74 5f 73 74 72 75 63 |d tok_li|st_struc|
|00005410| 74 28 29 3b 0a 58 73 74 | 61 74 69 63 20 76 6f 69 |t();.Xst|atic voi|
|00005420| 64 20 74 6f 6b 5f 6c 69 | 73 74 5f 61 70 70 65 6e |d tok_li|st_appen|
|00005430| 64 28 29 3b 0a 58 0a 58 | 2f 2a 20 74 6f 6b 5f 73 |d();.X.X|/* tok_s|
|00005440| 70 61 63 65 5f 61 70 70 | 65 6e 64 20 2d 20 61 70 |pace_app|end - ap|
|00005450| 70 65 6e 64 20 74 72 61 | 69 6c 69 6e 67 20 73 70 |pend tra|iling sp|
|00005460| 61 63 65 20 65 78 63 65 | 70 74 20 61 66 74 65 72 |ace exce|pt after|
|00005470| 20 6c 69 73 74 20 2a 2f | 0a 58 0a 58 23 64 65 66 | list */|.X.X#def|
|00005480| 69 6e 65 09 74 6f 6b 5f | 73 70 61 63 65 5f 61 70 |ine.tok_|space_ap|
|00005490| 70 65 6e 64 28 6c 69 73 | 74 2c 74 29 20 7b 20 5c |pend(lis|t,t) { \|
|000054a0| 0a 58 09 09 09 09 20 20 | 20 20 69 66 20 28 6c 69 |.X.... | if (li|
|000054b0| 73 74 20 3d 3d 20 30 20 | 09 2f 2a 20 6c 65 61 64 |st == 0 |./* lead|
|000054c0| 69 6e 67 20 73 70 61 63 | 65 2a 2f 20 5c 0a 58 09 |ing spac|e*/ \.X.|
|000054d0| 09 09 09 09 7c 7c 20 6c | 69 73 74 2d 3e 74 6f 6b |....|| l|ist->tok|
|000054e0| 6e 6f 20 3d 3d 20 54 4f | 4b 5f 4c 49 53 54 29 20 |no == TO|K_LIST) |
|000054f0| 5c 0a 58 09 09 09 09 09 | 74 6f 6b 5f 66 72 65 65 |\.X.....|tok_free|
|00005500| 28 74 29 3b 20 5c 0a 58 | 09 09 09 09 20 20 20 20 |(t); \.X|.... |
|00005510| 65 6c 73 65 20 5c 0a 58 | 09 09 09 09 09 74 6f 6b |else \.X|.....tok|
|00005520| 5f 6c 69 73 74 5f 61 70 | 70 65 6e 64 28 6c 69 73 |_list_ap|pend(lis|
|00005530| 74 2c 20 74 29 3b 20 5c | 0a 58 09 09 09 09 7d 0a |t, t); \|.X....}.|
|00005540| 58 0a 58 2f 2a 20 74 6f | 6b 5f 63 6c 61 73 73 20 |X.X/* to|k_class |
|00005550| 2d 20 64 69 73 74 69 6e | 67 75 69 73 68 20 62 65 |- distin|guish be|
|00005560| 74 77 65 65 6e 20 73 69 | 6e 67 6c 65 20 74 6f 6b |tween si|ngle tok|
|00005570| 65 6e 73 20 61 6e 64 20 | 63 6f 6d 70 6f 73 69 74 |ens and |composit|
|00005580| 65 20 74 6f 6b 65 6e 73 | 20 2a 2f 0a 58 0a 58 73 |e tokens| */.X.Xs|
|00005590| 74 72 75 63 74 20 74 6f | 6b 65 6e 20 2a 74 6f 6b |truct to|ken *tok|
|000055a0| 5f 63 6c 61 73 73 28 73 | 6b 69 70 29 0a 58 69 6e |_class(s|kip).Xin|
|000055b0| 74 20 20 20 20 20 73 6b | 69 70 3b 0a 58 7b 0a 58 |t sk|ip;.X{.X|
|000055c0| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 73 74 72 | regi|ster str|
|000055d0| 75 63 74 20 74 6f 6b 65 | 6e 20 2a 74 3b 0a 58 0a |uct toke|n *t;.X.|
|000055e0| 58 20 20 20 20 69 66 20 | 28 28 74 20 3d 20 74 6f |X if |((t = to|
|000055f0| 6b 5f 67 65 74 28 73 6b | 69 70 29 29 20 26 26 20 |k_get(sk|ip)) && |
|00005600| 74 2d 3e 74 6f 6b 6e 6f | 20 3d 3d 20 27 28 27 29 |t->tokno| == '(')|
|00005610| 20 7b 0a 58 09 72 65 74 | 75 72 6e 20 28 74 6f 6b | {.X.ret|urn (tok|
|00005620| 5f 6c 69 73 74 28 74 29 | 29 3b 0a 58 20 20 20 20 |_list(t)|);.X |
|00005630| 7d 20 65 6c 73 65 20 7b | 0a 58 09 72 65 74 75 72 |} else {|.X.retur|
|00005640| 6e 20 28 74 29 3b 0a 58 | 20 20 20 20 7d 0a 58 7d |n (t);.X| }.X}|
|00005650| 0a 58 0a 58 2f 2a 20 74 | 6f 6b 5f 6c 69 73 74 20 |.X.X/* t|ok_list |
|00005660| 2d 20 63 6f 6c 6c 65 63 | 74 20 28 29 2d 64 65 6c |- collec|t ()-del|
|00005670| 69 6d 69 74 65 64 2c 20 | 63 6f 6d 6d 61 2d 73 65 |imited, |comma-se|
|00005680| 70 61 72 61 74 65 64 20 | 6c 69 73 74 20 6f 66 20 |parated |list of |
|00005690| 74 6f 6b 65 6e 73 20 2a | 2f 0a 58 0a 58 73 74 61 |tokens *|/.X.Xsta|
|000056a0| 74 69 63 20 73 74 72 75 | 63 74 20 74 6f 6b 65 6e |tic stru|ct token|
|000056b0| 20 2a 74 6f 6b 5f 6c 69 | 73 74 28 74 29 0a 58 73 | *tok_li|st(t).Xs|
|000056c0| 74 72 75 63 74 20 74 6f | 6b 65 6e 20 2a 74 3b 0a |truct to|ken *t;.|
|000056d0| 58 7b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |X{.X |register|
|000056e0| 20 73 74 72 75 63 74 20 | 74 6f 6b 65 6e 20 2a 6c | struct |token *l|
|000056f0| 69 73 74 20 3d 20 74 6f | 6b 5f 61 6c 6c 6f 63 28 |ist = to|k_alloc(|
|00005700| 29 3b 0a 58 0a 58 20 20 | 20 20 6c 69 73 74 2d 3e |);.X.X | list->|
|00005710| 74 6f 6b 6e 6f 20 3d 20 | 54 4f 4b 5f 4c 49 53 54 |tokno = |TOK_LIST|
|00005720| 3b 0a 58 20 20 20 20 6c | 69 73 74 2d 3e 68 65 61 |;.X l|ist->hea|
|00005730| 64 20 3d 20 6c 69 73 74 | 2d 3e 74 61 69 6c 20 3d |d = list|->tail =|
|00005740| 20 74 3b 0a 58 23 69 66 | 64 65 66 20 44 45 42 55 | t;.X#if|def DEBU|
|00005750| 47 0a 58 20 20 20 20 73 | 74 72 63 70 79 28 6c 69 |G.X s|trcpy(li|
|00005760| 73 74 2d 3e 76 73 74 72 | 2d 3e 73 74 72 2c 20 22 |st->vstr|->str, "|
|00005770| 4c 49 53 54 22 29 3b 0a | 58 23 65 6e 64 69 66 0a |LIST");.|X#endif.|
|00005780| 58 0a 58 20 20 20 20 66 | 6f 72 20 28 3b 3b 29 20 |X.X f|or (;;) |
|00005790| 7b 0a 58 09 69 66 20 28 | 28 74 20 3d 20 74 6f 6b |{.X.if (|(t = tok|
|000057a0| 5f 67 65 74 28 44 4f 5f | 57 53 50 41 43 45 29 29 |_get(DO_|WSPACE))|
|000057b0| 20 3d 3d 20 30 29 20 7b | 09 2f 2a 20 73 6b 69 70 | == 0) {|./* skip|
|000057c0| 20 62 6c 61 6e 6b 73 20 | 2a 2f 0a 58 09 20 20 20 | blanks |*/.X. |
|000057d0| 20 65 72 72 6f 72 28 30 | 2c 20 22 70 72 65 6d 61 | error(0|, "prema|
|000057e0| 74 75 72 65 20 45 4f 46 | 20 69 6e 20 6c 69 73 74 |ture EOF| in list|
|000057f0| 22 29 3b 0a 58 09 20 20 | 20 20 72 65 74 75 72 6e |");.X. | return|
|00005800| 20 28 6c 69 73 74 29 3b | 09 09 09 2f 2a 20 64 6f | (list);|.../* do|
|00005810| 20 6e 6f 74 20 77 61 73 | 74 65 20 61 6e 79 20 64 | not was|te any d|
|00005820| 61 74 61 20 2a 2f 0a 58 | 09 7d 0a 58 09 73 77 69 |ata */.X|.}.X.swi|
|00005830| 74 63 68 20 28 74 2d 3e | 74 6f 6b 6e 6f 29 20 7b |tch (t->|tokno) {|
|00005840| 0a 58 09 63 61 73 65 20 | 27 29 27 3a 09 09 09 09 |.X.case |')':....|
|00005850| 2f 2a 20 65 6e 64 20 6f | 66 20 6c 69 73 74 20 2a |/* end o|f list *|
|00005860| 2f 0a 58 09 20 20 20 20 | 74 6f 6b 5f 66 72 65 65 |/.X. |tok_free|
|00005870| 28 74 29 3b 0a 58 09 20 | 20 20 20 72 65 74 75 72 |(t);.X. | retur|
|00005880| 6e 20 28 6c 69 73 74 29 | 3b 0a 58 09 63 61 73 65 |n (list)|;.X.case|
|00005890| 20 27 7b 27 3a 09 09 09 | 09 2f 2a 20 73 74 72 75 | '{':...|./* stru|
|000058a0| 63 74 2f 75 6e 69 6f 6e | 20 74 79 70 65 20 2a 2f |ct/union| type */|
|000058b0| 0a 58 09 20 20 20 20 74 | 6f 6b 5f 6c 69 73 74 5f |.X. t|ok_list_|
|000058c0| 73 74 72 75 63 74 28 6c | 69 73 74 2d 3e 74 61 69 |struct(l|ist->tai|
|000058d0| 6c 2c 20 74 29 3b 0a 58 | 09 20 20 20 20 62 72 65 |l, t);.X|. bre|
|000058e0| 61 6b 3b 0a 58 09 63 61 | 73 65 20 54 4f 4b 5f 57 |ak;.X.ca|se TOK_W|
|000058f0| 53 50 41 43 45 3a 09 09 | 09 2f 2a 20 70 72 65 73 |SPACE:..|./* pres|
|00005900| 65 72 76 65 20 74 72 61 | 69 6c 69 6e 67 20 62 6c |erve tra|iling bl|
|00005910| 61 6e 6b 73 20 2a 2f 0a | 58 09 20 20 20 20 74 6f |anks */.|X. to|
|00005920| 6b 5f 73 70 61 63 65 5f | 61 70 70 65 6e 64 28 6c |k_space_|append(l|
|00005930| 69 73 74 2d 3e 74 61 69 | 6c 2d 3e 74 61 69 6c 2c |ist->tai|l->tail,|
|00005940| 20 74 29 3b 09 2f 2a 20 | 65 78 63 65 70 74 20 61 | t);./* |except a|
|00005950| 66 74 65 72 20 6c 69 73 | 74 20 2a 2f 0a 58 09 20 |fter lis|t */.X. |
|00005960| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 63 61 73 65 | break|;.X.case|
|00005970| 20 27 5c 6e 27 3a 09 09 | 09 09 2f 2a 20 70 72 65 | '\n':..|../* pre|
|00005980| 73 65 72 76 65 20 6c 69 | 6e 65 20 63 6f 75 6e 74 |serve li|ne count|
|00005990| 20 2a 2f 0a 58 09 20 20 | 20 20 74 6f 6b 5f 66 6c | */.X. | tok_fl|
|000059a0| 75 73 68 28 74 29 3b 0a | 58 09 20 20 20 20 62 72 |ush(t);.|X. br|
|000059b0| 65 61 6b 3b 0a 58 09 63 | 61 73 65 20 27 2c 27 3a |eak;.X.c|ase ',':|
|000059c0| 09 09 09 09 2f 2a 20 6c | 69 73 74 20 73 65 70 61 |..../* l|ist sepa|
|000059d0| 72 61 74 6f 72 20 2a 2f | 0a 58 09 20 20 20 20 74 |rator */|.X. t|
|000059e0| 6f 6b 5f 6c 69 73 74 5f | 61 70 70 65 6e 64 28 6c |ok_list_|append(l|
|000059f0| 69 73 74 2c 20 74 29 3b | 0a 58 09 20 20 20 20 62 |ist, t);|.X. b|
|00005a00| 72 65 61 6b 3b 0a 58 09 | 63 61 73 65 20 27 28 27 |reak;.X.|case '('|
|00005a10| 3a 09 09 09 09 2f 2a 20 | 62 65 67 69 6e 6e 69 6e |:..../* |beginnin|
|00005a20| 67 20 6f 66 20 6c 69 73 | 74 20 2a 2f 0a 58 09 20 |g of lis|t */.X. |
|00005a30| 20 20 20 74 6f 6b 5f 6c | 69 73 74 5f 61 70 70 65 | tok_l|ist_appe|
|00005a40| 6e 64 28 6c 69 73 74 2d | 3e 74 61 69 6c 2c 20 74 |nd(list-|>tail, t|
|00005a50| 6f 6b 5f 6c 69 73 74 28 | 74 29 29 3b 0a 58 09 20 |ok_list(|t));.X. |
|00005a60| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 64 65 66 61 | break|;.X.defa|
|00005a70| 75 6c 74 3a 09 09 09 09 | 2f 2a 20 6f 72 64 69 6e |ult:....|/* ordin|
|00005a80| 61 72 79 20 74 6f 6b 65 | 6e 20 2a 2f 0a 58 09 20 |ary toke|n */.X. |
|00005a90| 20 20 20 74 6f 6b 5f 6c | 69 73 74 5f 61 70 70 65 | tok_l|ist_appe|
|00005aa0| 6e 64 28 6c 69 73 74 2d | 3e 74 61 69 6c 2c 20 74 |nd(list-|>tail, t|
|00005ab0| 29 3b 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |);.X. | break;.|
|00005ac0| 58 09 7d 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |X.}.X | }.X}.X.|
|00005ad0| 58 2f 2a 20 74 6f 6b 5f | 6c 69 73 74 5f 73 74 72 |X/* tok_|list_str|
|00005ae0| 75 63 74 20 2d 20 63 6f | 6c 6c 65 63 74 20 73 74 |uct - co|llect st|
|00005af0| 72 75 63 74 75 72 65 64 | 20 74 79 70 65 20 69 6e |ructured| type in|
|00005b00| 66 6f 20 77 69 74 68 69 | 6e 20 6c 69 73 74 20 2a |fo withi|n list *|
|00005b10| 2f 0a 58 0a 58 73 74 61 | 74 69 63 20 76 6f 69 64 |/.X.Xsta|tic void|
|00005b20| 20 74 6f 6b 5f 6c 69 73 | 74 5f 73 74 72 75 63 74 | tok_lis|t_struct|
|00005b30| 28 6c 69 73 74 2c 20 74 | 29 0a 58 72 65 67 69 73 |(list, t|).Xregis|
|00005b40| 74 65 72 20 73 74 72 75 | 63 74 20 74 6f 6b 65 6e |ter stru|ct token|
|00005b50| 20 2a 6c 69 73 74 3b 0a | 58 72 65 67 69 73 74 65 | *list;.|Xregiste|
|00005b60| 72 20 73 74 72 75 63 74 | 20 74 6f 6b 65 6e 20 2a |r struct| token *|
|00005b70| 74 3b 0a 58 7b 0a 58 20 | 20 20 20 74 6f 6b 5f 6c |t;.X{.X | tok_l|
|00005b80| 69 73 74 5f 61 70 70 65 | 6e 64 28 6c 69 73 74 2c |ist_appe|nd(list,|
|00005b90| 20 74 29 3b 0a 58 0a 58 | 20 20 20 20 77 68 69 6c | t);.X.X| whil|
|00005ba0| 65 20 28 74 20 3d 20 74 | 6f 6b 5f 63 6c 61 73 73 |e (t = t|ok_class|
|00005bb0| 28 44 4f 5f 57 53 50 41 | 43 45 29 29 20 7b 0a 58 |(DO_WSPA|CE)) {.X|
|00005bc0| 09 73 77 69 74 63 68 20 | 28 74 2d 3e 74 6f 6b 6e |.switch |(t->tokn|
|00005bd0| 6f 29 20 7b 0a 58 09 63 | 61 73 65 20 27 5c 6e 27 |o) {.X.c|ase '\n'|
|00005be0| 3a 09 09 09 09 2f 2a 20 | 70 72 65 73 65 72 76 65 |:..../* |preserve|
|00005bf0| 20 6c 69 6e 65 20 63 6f | 75 6e 74 20 2a 2f 0a 58 | line co|unt */.X|
|00005c00| 09 20 20 20 20 74 6f 6b | 5f 66 6c 75 73 68 28 74 |. tok|_flush(t|
|00005c10| 29 3b 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |);.X. | break;.|
|00005c20| 58 09 63 61 73 65 20 54 | 4f 4b 5f 57 53 50 41 43 |X.case T|OK_WSPAC|
|00005c30| 45 3a 09 09 09 2f 2a 20 | 70 72 65 73 65 72 76 65 |E:.../* |preserve|
|00005c40| 20 74 72 61 69 6c 69 6e | 67 20 62 6c 61 6e 6b 73 | trailin|g blanks|
|00005c50| 20 2a 2f 0a 58 09 20 20 | 20 20 74 6f 6b 5f 73 70 | */.X. | tok_sp|
|00005c60| 61 63 65 5f 61 70 70 65 | 6e 64 28 6c 69 73 74 2d |ace_appe|nd(list-|
|00005c70| 3e 74 61 69 6c 2c 20 74 | 29 3b 09 2f 2a 20 65 78 |>tail, t|);./* ex|
|00005c80| 63 65 70 74 20 61 66 74 | 65 72 20 6c 69 73 74 20 |cept aft|er list |
|00005c90| 2a 2f 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |*/.X. | break;.|
|00005ca0| 58 09 63 61 73 65 20 27 | 7b 27 3a 09 09 09 09 2f |X.case '|{':..../|
|00005cb0| 2a 20 72 65 63 75 72 73 | 65 20 2a 2f 0a 58 09 20 |* recurs|e */.X. |
|00005cc0| 20 20 20 74 6f 6b 5f 6c | 69 73 74 5f 73 74 72 75 | tok_l|ist_stru|
|00005cd0| 63 74 28 6c 69 73 74 2c | 20 74 29 3b 0a 58 09 20 |ct(list,| t);.X. |
|00005ce0| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 63 61 73 65 | break|;.X.case|
|00005cf0| 20 27 7d 27 3a 09 09 09 | 09 2f 2a 20 64 6f 6e 65 | '}':...|./* done|
|00005d00| 20 2a 2f 0a 58 09 20 20 | 20 20 74 6f 6b 5f 6c 69 | */.X. | tok_li|
|00005d10| 73 74 5f 61 70 70 65 6e | 64 28 6c 69 73 74 2c 20 |st_appen|d(list, |
|00005d20| 74 29 3b 0a 58 09 20 20 | 20 20 72 65 74 75 72 6e |t);.X. | return|
|00005d30| 3b 0a 58 09 64 65 66 61 | 75 6c 74 3a 09 09 09 09 |;.X.defa|ult:....|
|00005d40| 2f 2a 20 6f 74 68 65 72 | 20 2a 2f 0a 58 09 20 20 |/* other| */.X. |
|00005d50| 20 20 74 6f 6b 5f 6c 69 | 73 74 5f 61 70 70 65 6e | tok_li|st_appen|
|00005d60| 64 28 6c 69 73 74 2c 20 | 74 29 3b 0a 58 09 20 20 |d(list, |t);.X. |
|00005d70| 20 20 62 72 65 61 6b 3b | 0a 58 09 7d 0a 58 20 20 | break;|.X.}.X |
|00005d80| 20 20 7d 0a 58 7d 0a 58 | 0a 58 2f 2a 20 74 6f 6b | }.X}.X|.X/* tok|
|00005d90| 5f 6c 69 73 74 5f 61 70 | 70 65 6e 64 20 2d 20 61 |_list_ap|pend - a|
|00005da0| 70 70 65 6e 64 20 64 61 | 74 61 20 74 6f 20 6c 69 |ppend da|ta to li|
|00005db0| 73 74 20 2a 2f 0a 58 0a | 58 73 74 61 74 69 63 20 |st */.X.|Xstatic |
|00005dc0| 76 6f 69 64 20 74 6f 6b | 5f 6c 69 73 74 5f 61 70 |void tok|_list_ap|
|00005dd0| 70 65 6e 64 28 68 2c 20 | 74 29 0a 58 73 74 72 75 |pend(h, |t).Xstru|
|00005de0| 63 74 20 74 6f 6b 65 6e | 20 2a 68 3b 0a 58 73 74 |ct token| *h;.Xst|
|00005df0| 72 75 63 74 20 74 6f 6b | 65 6e 20 2a 74 3b 0a 58 |ruct tok|en *t;.X|
|00005e00| 7b 0a 58 20 20 20 20 69 | 66 20 28 68 2d 3e 68 65 |{.X i|f (h->he|
|00005e10| 61 64 20 3d 3d 20 30 29 | 20 7b 0a 58 09 68 2d 3e |ad == 0)| {.X.h->|
|00005e20| 68 65 61 64 20 3d 20 68 | 2d 3e 74 61 69 6c 20 3d |head = h|->tail =|
|00005e30| 20 74 3b 0a 58 20 20 20 | 20 7d 20 65 6c 73 65 20 | t;.X | } else |
|00005e40| 7b 0a 58 09 68 2d 3e 74 | 61 69 6c 2d 3e 6e 65 78 |{.X.h->t|ail->nex|
|00005e50| 74 20 3d 20 74 3b 0a 58 | 09 68 2d 3e 74 61 69 6c |t = t;.X|.h->tail|
|00005e60| 20 3d 20 74 3b 0a 58 20 | 20 20 20 7d 0a 58 7d 0a | = t;.X | }.X}.|
|00005e70| 45 4e 44 5f 4f 46 5f 74 | 6f 6b 5f 63 6c 61 73 73 |END_OF_t|ok_class|
|00005e80| 2e 63 0a 69 66 20 74 65 | 73 74 20 33 36 32 35 20 |.c.if te|st 3625 |
|00005e90| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 74 6f 6b 5f |-ne `wc |-c <tok_|
|00005ea0| 63 6c 61 73 73 2e 63 60 | 3b 20 74 68 65 6e 0a 20 |class.c`|; then. |
|00005eb0| 20 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 5c 22 | echo |shar: \"|
|00005ec0| 74 6f 6b 5f 63 6c 61 73 | 73 2e 63 5c 22 20 75 6e |tok_clas|s.c\" un|
|00005ed0| 70 61 63 6b 65 64 20 77 | 69 74 68 20 77 72 6f 6e |packed w|ith wron|
|00005ee0| 67 20 73 69 7a 65 21 0a | 66 69 0a 23 20 65 6e 64 |g size!.|fi.# end|
|00005ef0| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00005f00| 63 68 65 63 6b 0a 66 69 | 0a 69 66 20 74 65 73 74 |check.fi|.if test|
|00005f10| 20 2d 66 20 74 6f 6b 5f | 70 6f 6f 6c 2e 63 20 2d | -f tok_|pool.c -|
|00005f20| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00005f30| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|00005f40| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 6f |shar: Wi|ll not o|
|00005f50| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00005f60| 6e 67 20 66 69 6c 65 20 | 5c 22 74 6f 6b 5f 70 6f |ng file |\"tok_po|
|00005f70| 6f 6c 2e 63 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |ol.c\".e|lse.echo|
|00005f80| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00005f90| 67 20 5c 22 74 6f 6b 5f | 70 6f 6f 6c 2e 63 5c 22 |g \"tok_|pool.c\"|
|00005fa0| 20 5c 28 32 31 38 34 20 | 63 68 61 72 61 63 74 65 | \(2184 |characte|
|00005fb0| 72 73 5c 29 0a 73 65 64 | 20 22 73 2f 5e 58 2f 2f |rs\).sed| "s/^X//|
|00005fc0| 22 20 3e 74 6f 6b 5f 70 | 6f 6f 6c 2e 63 20 3c 3c |" >tok_p|ool.c <<|
|00005fd0| 27 45 4e 44 5f 4f 46 5f | 74 6f 6b 5f 70 6f 6f 6c |'END_OF_|tok_pool|
|00005fe0| 2e 63 27 0a 58 2f 2a 2b | 2b 0a 58 2f 2a 20 4e 41 |.c'.X/*+|+.X/* NA|
|00005ff0| 4d 45 0a 58 2f 2a 09 74 | 6f 6b 5f 70 6f 6f 6c 20 |ME.X/*.t|ok_pool |
|00006000| 33 0a 58 2f 2a 20 53 55 | 4d 4d 41 52 59 0a 58 2f |3.X/* SU|MMARY.X/|
|00006010| 2a 09 6d 61 69 6e 74 61 | 69 6e 20 70 6f 6f 6c 20 |*.mainta|in pool |
|00006020| 6f 66 20 75 6e 75 73 65 | 64 20 74 6f 6b 65 6e 20 |of unuse|d token |
|00006030| 73 74 72 75 63 74 75 72 | 65 73 0a 58 2f 2a 20 50 |structur|es.X/* P|
|00006040| 41 43 4b 41 47 45 0a 58 | 2f 2a 09 75 6e 70 72 6f |ACKAGE.X|/*.unpro|
|00006050| 74 6f 0a 58 2f 2a 20 53 | 59 4e 4f 50 53 49 53 0a |to.X/* S|YNOPSIS.|
|00006060| 58 2f 2a 09 23 69 6e 63 | 6c 75 64 65 20 22 74 6f |X/*.#inc|lude "to|
|00006070| 6b 65 6e 2e 68 22 0a 58 | 2f 2a 0a 58 2f 2a 09 73 |ken.h".X|/*.X/*.s|
|00006080| 74 72 75 63 74 20 74 6f | 6b 65 6e 20 2a 74 6f 6b |truct to|ken *tok|
|00006090| 5f 61 6c 6c 6f 63 28 29 | 0a 58 2f 2a 0a 58 2f 2a |_alloc()|.X/*.X/*|
|000060a0| 09 76 6f 69 64 20 74 6f | 6b 5f 66 72 65 65 28 74 |.void to|k_free(t|
|000060b0| 29 0a 58 2f 2a 09 73 74 | 72 75 63 74 20 74 6f 6b |).X/*.st|ruct tok|
|000060c0| 65 6e 20 2a 74 3b 0a 58 | 2f 2a 20 44 45 53 43 52 |en *t;.X|/* DESCR|
|000060d0| 49 50 54 49 4f 4e 0a 58 | 2f 2a 09 74 6f 6b 5f 61 |IPTION.X|/*.tok_a|
|000060e0| 6c 6c 6f 63 28 29 20 61 | 6e 64 20 74 6f 6b 5f 66 |lloc() a|nd tok_f|
|000060f0| 72 65 65 28 29 20 6d 61 | 69 6e 74 61 69 6e 20 61 |ree() ma|intain a|
|00006100| 20 70 6f 6f 6c 20 6f 66 | 20 75 6e 75 73 65 64 20 | pool of| unused |
|00006110| 74 6f 6b 65 6e 0a 58 2f | 2a 09 73 74 72 75 63 74 |token.X/|*.struct|
|00006120| 75 72 65 73 2e 0a 58 2f | 2a 0a 58 2f 2a 09 74 6f |ures..X/|*.X/*.to|
|00006130| 6b 5f 61 6c 6c 6f 63 28 | 29 20 74 61 6b 65 73 20 |k_alloc(|) takes |
|00006140| 74 68 65 20 66 69 72 73 | 74 20 66 72 65 65 20 74 |the firs|t free t|
|00006150| 6f 6b 65 6e 20 73 74 72 | 75 63 74 75 72 65 20 66 |oken str|ucture f|
|00006160| 72 6f 6d 20 74 68 65 20 | 70 6f 6f 6c 0a 58 2f 2a |rom the |pool.X/*|
|00006170| 09 6f 72 20 61 6c 6c 6f | 63 61 74 65 73 20 61 20 |.or allo|cates a |
|00006180| 6e 65 77 20 6f 6e 65 20 | 69 66 20 74 68 65 20 70 |new one |if the p|
|00006190| 6f 6f 6c 20 69 73 20 65 | 6d 70 74 79 2e 0a 58 2f |ool is e|mpty..X/|
|000061a0| 2a 0a 58 2f 2a 09 74 6f | 6b 5f 66 72 65 65 28 29 |*.X/*.to|k_free()|
|000061b0| 20 61 64 64 73 20 61 20 | 28 70 6f 73 73 69 62 6c | adds a |(possibl|
|000061c0| 79 20 63 6f 6d 70 6f 73 | 69 74 65 29 20 74 6f 6b |y compos|ite) tok|
|000061d0| 65 6e 20 73 74 72 75 63 | 74 75 72 65 20 74 6f 20 |en struc|ture to |
|000061e0| 74 68 65 20 70 6f 6f 6c | 2e 0a 58 2f 2a 20 42 55 |the pool|..X/* BU|
|000061f0| 47 53 0a 58 2f 2a 09 54 | 68 65 20 70 6f 6f 6c 20 |GS.X/*.T|he pool |
|00006200| 6e 65 76 65 72 20 73 68 | 72 69 6e 6b 73 2e 0a 58 |never sh|rinks..X|
|00006210| 2f 2a 20 41 55 54 48 4f | 52 28 53 29 0a 58 2f 2a |/* AUTHO|R(S).X/*|
|00006220| 09 57 69 65 74 73 65 20 | 56 65 6e 65 6d 61 0a 58 |.Wietse |Venema.X|
|00006230| 2f 2a 09 45 69 6e 64 68 | 6f 76 65 6e 20 55 6e 69 |/*.Eindh|oven Uni|
|00006240| 76 65 72 73 69 74 79 20 | 6f 66 20 54 65 63 68 6e |versity |of Techn|
|00006250| 6f 6c 6f 67 79 0a 58 2f | 2a 09 44 65 70 61 72 74 |ology.X/|*.Depart|
|00006260| 6d 65 6e 74 20 6f 66 20 | 4d 61 74 68 65 6d 61 74 |ment of |Mathemat|
|00006270| 69 63 73 20 61 6e 64 20 | 43 6f 6d 70 75 74 65 72 |ics and |Computer|
|00006280| 20 53 63 69 65 6e 63 65 | 0a 58 2f 2a 09 44 65 6e | Science|.X/*.Den|
|00006290| 20 44 6f 6c 65 63 68 20 | 32 2c 20 50 2e 4f 2e 20 | Dolech |2, P.O. |
|000062a0| 42 6f 78 20 35 31 33 2c | 20 35 36 30 30 20 4d 42 |Box 513,| 5600 MB|
|000062b0| 20 45 69 6e 64 68 6f 76 | 65 6e 2c 20 54 68 65 20 | Eindhov|en, The |
|000062c0| 4e 65 74 68 65 72 6c 61 | 6e 64 73 0a 58 2f 2a 20 |Netherla|nds.X/* |
|000062d0| 4c 41 53 54 20 4d 4f 44 | 49 46 49 43 41 54 49 4f |LAST MOD|IFICATIO|
|000062e0| 4e 0a 58 2f 2a 09 39 31 | 2f 30 39 2f 30 31 20 32 |N.X/*.91|/09/01 2|
|000062f0| 33 3a 30 38 3a 33 36 0a | 58 2f 2a 20 56 45 52 53 |3:08:36.|X/* VERS|
|00006300| 49 4f 4e 2f 52 45 4c 45 | 41 53 45 0a 58 2f 2a 09 |ION/RELE|ASE.X/*.|
|00006310| 31 2e 31 0a 58 2f 2a 2d | 2d 2a 2f 0a 58 0a 58 73 |1.1.X/*-|-*/.X.Xs|
|00006320| 74 61 74 69 63 20 63 68 | 61 72 20 70 6f 6f 6c 5f |tatic ch|ar pool_|
|00006330| 73 63 63 73 69 64 5b 5d | 20 3d 20 22 40 28 23 29 |sccsid[]| = "@(#)|
|00006340| 20 74 6f 6b 5f 70 6f 6f | 6c 2e 63 20 31 2e 31 20 | tok_poo|l.c 1.1 |
|00006350| 39 31 2f 30 39 2f 30 31 | 20 32 33 3a 30 38 3a 33 |91/09/01| 23:08:3|
|00006360| 36 22 3b 0a 58 0a 58 2f | 2a 20 43 20 6c 69 62 72 |6";.X.X/|* C libr|
|00006370| 61 72 79 20 2a 2f 0a 58 | 0a 58 65 78 74 65 72 6e |ary */.X|.Xextern|
|00006380| 20 63 68 61 72 20 2a 6d | 61 6c 6c 6f 63 28 29 3b | char *m|alloc();|
|00006390| 0a 58 0a 58 2f 2a 20 41 | 70 70 6c 69 63 61 74 69 |.X.X/* A|pplicati|
|000063a0| 6f 6e 2d 73 70 65 63 69 | 66 69 63 20 73 74 75 66 |on-speci|fic stuf|
|000063b0| 66 20 2a 2f 0a 58 0a 58 | 23 69 6e 63 6c 75 64 65 |f */.X.X|#include|
|000063c0| 20 22 74 6f 6b 65 6e 2e | 68 22 0a 58 23 69 6e 63 | "token.|h".X#inc|
|000063d0| 6c 75 64 65 20 22 76 73 | 74 72 69 6e 67 2e 68 22 |lude "vs|tring.h"|
|000063e0| 0a 58 0a 58 65 78 74 65 | 72 6e 20 76 6f 69 64 20 |.X.Xexte|rn void |
|000063f0| 65 72 72 6f 72 28 29 3b | 0a 58 0a 58 23 64 65 66 |error();|.X.X#def|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.