home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part06
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news text
| default
| |
99%
| file
| C source text
| default
| |
98%
| file
| C source, ASCII text
| 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 75 75 | 6e 65 74 21 72 73 0a 46 |Path: uu|net!rs.F|
|00000010| 72 6f 6d 3a 20 72 73 40 | 75 75 6e 65 74 2e 55 55 |rom: rs@|uunet.UU|
|00000020| 2e 4e 45 54 20 28 52 69 | 63 68 20 53 61 6c 7a 29 |.NET (Ri|ch Salz)|
|00000030| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000040| 70 2e 73 6f 75 72 63 65 | 73 2e 75 6e 69 78 0a 53 |p.source|s.unix.S|
|00000050| 75 62 6a 65 63 74 3a 20 | 76 31 30 69 30 33 39 3a |ubject: |v10i039:|
|00000060| 20 49 6e 74 65 72 70 72 | 65 74 65 64 20 46 75 6e | Interpr|eted Fun|
|00000070| 63 74 69 6f 6e 61 6c 20 | 50 72 6f 67 72 61 6d 6d |ctional |Programm|
|00000080| 69 6e 67 20 6c 61 6e 75 | 61 67 65 2c 20 50 61 72 |ing lanu|age, Par|
|00000090| 74 20 30 36 2f 30 37 0a | 4d 65 73 73 61 67 65 2d |t 06/07.|Message-|
|000000a0| 49 44 3a 20 3c 35 37 39 | 40 75 75 6e 65 74 2e 55 |ID: <579|@uunet.U|
|000000b0| 55 2e 4e 45 54 3e 0a 44 | 61 74 65 3a 20 37 20 4a |U.NET>.D|ate: 7 J|
|000000c0| 75 6c 20 38 37 20 32 33 | 3a 32 33 3a 30 30 20 47 |ul 87 23|:23:00 G|
|000000d0| 4d 54 0a 4f 72 67 61 6e | 69 7a 61 74 69 6f 6e 3a |MT.Organ|ization:|
|000000e0| 20 55 55 4e 45 54 20 43 | 6f 6d 6d 75 6e 69 63 61 | UUNET C|ommunica|
|000000f0| 74 69 6f 6e 73 20 53 65 | 72 76 69 63 65 73 2c 20 |tions Se|rvices, |
|00000100| 41 72 6c 69 6e 67 74 6f | 6e 2c 20 56 41 0a 4c 69 |Arlingto|n, VA.Li|
|00000110| 6e 65 73 3a 20 32 32 30 | 32 0a 41 70 70 72 6f 76 |nes: 220|2.Approv|
|00000120| 65 64 3a 20 72 73 40 75 | 75 6e 65 74 2e 75 75 2e |ed: rs@u|unet.uu.|
|00000130| 6e 65 74 0a 0a 4d 6f 64 | 2e 73 6f 75 72 63 65 73 |net..Mod|.sources|
|00000140| 3a 20 56 6f 6c 75 6d 65 | 20 31 30 2c 20 4e 75 6d |: Volume| 10, Num|
|00000150| 62 65 72 20 33 39 0a 53 | 75 62 6d 69 74 74 65 64 |ber 39.S|ubmitted|
|00000160| 20 62 79 3a 20 72 6f 62 | 69 73 6f 6e 40 62 2e 63 | by: rob|ison@b.c|
|00000170| 73 2e 75 69 75 63 2e 65 | 64 75 20 28 41 72 63 68 |s.uiuc.e|du (Arch|
|00000180| 20 52 6f 62 69 73 6f 6e | 29 0a 41 72 63 68 69 76 | Robison|).Archiv|
|00000190| 65 2d 6e 61 6d 65 3a 20 | 69 66 70 2f 50 61 72 74 |e-name: |ifp/Part|
|000001a0| 30 36 0a 0a 23 21 20 2f | 62 69 6e 2f 73 68 0a 23 |06..#! /|bin/sh.#|
|000001b0| 20 54 68 69 73 20 69 73 | 20 61 20 73 68 65 6c 6c | This is| a shell|
|000001c0| 20 61 72 63 68 69 76 65 | 2c 20 6d 65 61 6e 69 6e | archive|, meanin|
|000001d0| 67 3a 0a 23 20 31 2e 20 | 52 65 6d 6f 76 65 20 65 |g:.# 1. |Remove e|
|000001e0| 76 65 72 79 74 68 69 6e | 67 20 61 62 6f 76 65 20 |verythin|g above |
|000001f0| 74 68 65 20 23 21 20 2f | 62 69 6e 2f 73 68 20 6c |the #! /|bin/sh l|
|00000200| 69 6e 65 2e 0a 23 20 32 | 2e 20 53 61 76 65 20 74 |ine..# 2|. Save t|
|00000210| 68 65 20 72 65 73 75 6c | 74 69 6e 67 20 74 65 78 |he resul|ting tex|
|00000220| 74 20 69 6e 20 61 20 66 | 69 6c 65 2e 0a 23 20 33 |t in a f|ile..# 3|
|00000230| 2e 20 45 78 65 63 75 74 | 65 20 74 68 65 20 66 69 |. Execut|e the fi|
|00000240| 6c 65 20 77 69 74 68 20 | 2f 62 69 6e 2f 73 68 2e |le with |/bin/sh.|
|00000250| 0a 23 20 54 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |.# The f|ollowing|
|00000260| 20 66 69 6c 65 73 20 77 | 69 6c 6c 20 62 65 20 63 | files w|ill be c|
|00000270| 72 65 61 74 65 64 3a 0a | 23 09 69 6e 74 65 72 70 |reated:.|#.interp|
|00000280| 2f 69 6e 66 75 6e 2e 63 | 0a 23 09 69 6e 74 65 72 |/infun.c|.#.inter|
|00000290| 70 2f 69 6e 69 6d 70 6f | 72 74 2e 63 0a 23 09 69 |p/inimpo|rt.c.#.i|
|000002a0| 6e 74 65 72 70 2f 69 6e | 6f 62 2e 63 0a 23 09 69 |nterp/in|ob.c.#.i|
|000002b0| 6e 74 65 72 70 2f 69 6e | 6f 62 2e 68 0a 23 09 69 |nterp/in|ob.h.#.i|
|000002c0| 6e 74 65 72 70 2f 6c 69 | 73 74 2e 63 0a 23 09 69 |nterp/li|st.c.#.i|
|000002d0| 6e 74 65 72 70 2f 6d 61 | 69 6e 2e 63 0a 23 09 69 |nterp/ma|in.c.#.i|
|000002e0| 6e 74 65 72 70 2f 6e 6f | 64 65 2e 63 0a 23 09 69 |nterp/no|de.c.#.i|
|000002f0| 6e 74 65 72 70 2f 6e 6f | 64 65 2e 68 0a 65 78 70 |nterp/no|de.h.exp|
|00000300| 6f 72 74 20 50 41 54 48 | 3b 20 50 41 54 48 3d 2f |ort PATH|; PATH=/|
|00000310| 62 69 6e 3a 24 50 41 54 | 48 0a 6d 6b 64 69 72 20 |bin:$PAT|H.mkdir |
|00000320| 69 6e 74 65 72 70 0a 69 | 66 20 74 65 73 74 20 2d |interp.i|f test -|
|00000330| 66 20 27 69 6e 74 65 72 | 70 2f 69 6e 66 75 6e 2e |f 'inter|p/infun.|
|00000340| 63 27 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |c'.then.|.echo sh|
|00000350| 61 72 3a 20 6f 76 65 72 | 2d 77 72 69 74 69 6e 67 |ar: over|-writing|
|00000360| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 22 | existin|g file "|
|00000370| 27 69 6e 74 65 72 70 2f | 69 6e 66 75 6e 2e 63 27 |'interp/|infun.c'|
|00000380| 22 0a 66 69 0a 63 61 74 | 20 3c 3c 20 5c 53 48 41 |".fi.cat| << \SHA|
|00000390| 52 5f 45 4f 46 20 3e 20 | 27 69 6e 74 65 72 70 2f |R_EOF > |'interp/|
|000003a0| 69 6e 66 75 6e 2e 63 27 | 0a 0c 0a 2f 2a 2a 2a 2a |infun.c'|.../****|
|000003b0| 2a 2a 20 69 6e 66 75 6e | 2e 63 20 2a 2a 2a 2a 2a |** infun|.c *****|
|000003c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003f0| 2a 2a 2f 0a 2f 2a 2a 20 | 20 20 20 20 20 20 20 20 |**/./** | |
|00000400| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000410| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000420| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000430| 20 20 20 20 20 20 20 20 | 20 2a 2a 2f 0a 2f 2a 2a | | **/./**|
|00000440| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000450| 20 20 20 20 55 6e 69 76 | 65 72 73 69 74 79 20 6f | Univ|ersity o|
|00000460| 66 20 49 6c 6c 69 6e 6f | 69 73 20 20 20 20 20 20 |f Illino|is |
|00000470| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000480| 20 20 2a 2a 2f 0a 2f 2a | 2a 20 20 20 20 20 20 20 | **/./*|* |
|00000490| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000004a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000004b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000004c0| 20 20 20 20 20 20 20 20 | 20 20 20 2a 2a 2f 0a 2f | | **/./|
|000004d0| 2a 2a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |** | |
|000004e0| 20 20 44 65 70 61 72 74 | 6d 65 6e 74 20 6f 66 20 | Depart|ment of |
|000004f0| 43 6f 6d 70 75 74 65 72 | 20 53 63 69 65 6e 63 65 |Computer| Science|
|00000500| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000510| 20 20 20 20 2a 2a 2f 0a | 2f 2a 2a 20 20 20 20 20 | **/.|/** |
|00000520| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000540| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000550| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2a 2f | | **/|
|00000560| 0a 2f 2a 2a 20 20 20 54 | 6f 6f 6c 3a 20 49 46 50 |./** T|ool: IFP|
|00000570| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000580| 20 20 20 20 20 20 20 20 | 20 56 65 72 73 69 6f 6e | | Version|
|00000590| 3a 20 30 2e 35 20 20 20 | 20 20 20 20 20 20 20 20 |: 0.5 | |
|000005a0| 20 20 20 20 20 20 2a 2a | 2f 0a 2f 2a 2a 20 20 20 | **|/./** |
|000005b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000005c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000005d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000005e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|000005f0| 2a 2f 0a 2f 2a 2a 20 20 | 20 41 75 74 68 6f 72 3a |*/./** | Author:|
|00000600| 20 20 41 72 63 68 20 44 | 2e 20 52 6f 62 69 73 6f | Arch D|. Robiso|
|00000610| 6e 20 20 20 20 20 20 20 | 20 20 20 44 61 74 65 3a |n | Date:|
|00000620| 20 20 20 4d 61 79 20 31 | 2c 20 31 39 38 35 20 20 | May 1|, 1985 |
|00000630| 20 20 20 20 20 20 20 20 | 2a 2a 2f 0a 2f 2a 2a 20 | |**/./** |
|00000640| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000650| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000660| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000670| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000680| 20 2a 2a 2f 0a 2f 2a 2a | 20 20 20 52 65 76 69 73 | **/./**| Revis|
|00000690| 65 64 20 62 79 3a 20 41 | 72 63 68 20 44 2e 20 52 |ed by: A|rch D. R|
|000006a0| 6f 62 69 73 6f 6e 20 20 | 20 20 20 20 20 44 61 74 |obison | Dat|
|000006b0| 65 3a 20 20 20 41 75 67 | 20 34 2c 20 31 39 38 36 |e: Aug| 4, 1986|
|000006c0| 20 20 20 20 20 20 20 20 | 20 20 2a 2a 2f 0a 2f 2a | | **/./*|
|000006d0| 2a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |* | |
|000006e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000006f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000700| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000710| 20 20 20 2a 2a 2f 0a 2f | 2a 2a 20 20 20 50 72 69 | **/./|** Pri|
|00000720| 6e 63 69 70 61 6c 20 49 | 6e 76 65 73 74 69 67 61 |ncipal I|nvestiga|
|00000730| 74 6f 72 73 3a 20 50 72 | 6f 66 2e 20 52 2e 20 48 |tors: Pr|of. R. H|
|00000740| 2e 20 43 61 6d 70 62 65 | 6c 6c 20 20 20 20 20 20 |. Campbe|ll |
|00000750| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2a 2f 0a | | **/.|
|00000760| 2f 2a 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/** | |
|00000770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 50 | | P|
|00000780| 72 6f 66 2e 20 57 2e 20 | 4a 2e 20 4b 75 62 69 74 |rof. W. |J. Kubit|
|00000790| 7a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |z | |
|000007a0| 20 20 20 20 20 2a 2a 2f | 0a 2f 2a 2a 20 20 20 20 | **/|./** |
|000007b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000007c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000007d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000007e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2a | | **|
|000007f0| 2f 0a 2f 2a 2a 20 20 20 | 20 20 20 20 20 20 20 20 |/./** | |
|00000800| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000810| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000820| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000830| 20 20 20 20 20 20 20 2a | 2a 2f 0a 2f 2a 2a 2d 2d | *|*/./**--|
|00000840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000870| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000880| 2a 2a 2f 0a 2f 2a 2a 20 | 20 20 28 43 29 20 43 6f |**/./** | (C) Co|
|00000890| 70 79 72 69 67 68 74 20 | 31 39 38 37 20 20 55 6e |pyright |1987 Un|
|000008a0| 69 76 65 72 73 69 74 79 | 20 6f 66 20 49 6c 6c 69 |iversity| of Illi|
|000008b0| 6e 6f 69 73 20 42 6f 61 | 72 64 20 6f 66 20 54 72 |nois Boa|rd of Tr|
|000008c0| 75 73 74 65 65 73 20 20 | 20 2a 2a 2f 0a 2f 2a 2a |ustees | **/./**|
|000008d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000008e0| 20 20 20 20 20 20 20 41 | 6c 6c 20 52 69 67 68 74 | A|ll Right|
|000008f0| 73 20 52 65 73 65 72 76 | 65 64 2e 20 20 20 20 20 |s Reserv|ed. |
|00000900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000910| 20 20 2a 2a 2f 0a 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a | **/./*|********|
|00000920| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000930| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000940| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000950| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2f 0a 0a |********|*****/..|
|00000960| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |.#includ|e <stdio|
|00000970| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 63 74 |.h>.#inc|lude <ct|
|00000980| 79 70 65 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |ype.h>.#|include |
|00000990| 22 73 74 72 75 63 74 2e | 68 22 0a 23 69 6e 63 6c |"struct.|h".#incl|
|000009a0| 75 64 65 20 22 6e 6f 64 | 65 2e 68 22 0a 23 69 6e |ude "nod|e.h".#in|
|000009b0| 63 6c 75 64 65 20 22 73 | 74 72 69 6e 67 2e 68 22 |clude "s|tring.h"|
|000009c0| 0a 23 69 6e 63 6c 75 64 | 65 20 22 69 6e 6f 62 2e |.#includ|e "inob.|
|000009d0| 68 22 0a 0a 2f 2a 0a 20 | 2a 20 50 41 54 54 45 52 |h"../*. |* PATTER|
|000009e0| 4e 20 73 68 6f 75 6c 64 | 20 62 65 20 30 2e 20 20 |N should| be 0. |
|000009f0| 53 65 74 74 69 6e 67 20 | 69 74 20 74 6f 20 31 20 |Setting |it to 1 |
|00000a00| 65 6e 61 62 6c 65 73 20 | 61 20 70 61 72 73 65 72 |enables |a parser|
|00000a10| 20 65 78 74 65 6e 73 69 | 6f 6e 0a 20 2a 20 66 6f | extensi|on. * fo|
|00000a20| 72 20 65 78 70 65 72 69 | 6d 65 6e 74 61 6c 20 63 |r experi|mental c|
|00000a30| 6f 6d 70 69 6c 65 72 20 | 77 6f 72 6b 2e 0a 20 2a |ompiler |work.. *|
|00000a40| 2f 0a 23 64 65 66 69 6e | 65 20 50 41 54 54 45 52 |/.#defin|e PATTER|
|00000a50| 4e 20 30 0a 0a 2f 2a 0a | 20 2a 20 4d 61 6b 65 46 |N 0../*.| * MakeF|
|00000a60| 6f 72 6d 0a 20 2a 0a 20 | 2a 20 49 66 20 63 6f 72 |orm. *. |* If cor|
|00000a70| 72 65 63 74 2c 20 63 72 | 65 61 74 65 20 66 6f 72 |rect, cr|eate for|
|00000a80| 6d 20 77 69 74 68 20 6e | 6f 64 65 20 4e 20 61 6e |m with n|ode N an|
|00000a90| 64 20 66 75 6e 63 74 69 | 6f 6e 20 6c 69 73 74 20 |d functi|on list |
|00000aa0| 46 75 6e 73 2e 0a 20 2a | 0a 20 2a 20 4f 75 74 70 |Funs.. *|. * Outp|
|00000ab0| 75 74 0a 20 2a 20 20 20 | 20 20 20 72 65 73 75 6c |ut. * | resul|
|00000ac0| 74 20 3d 20 31 20 69 66 | 20 6e 6f 20 65 72 72 6f |t = 1 if| no erro|
|00000ad0| 72 2c 20 30 20 6f 74 68 | 65 72 77 69 73 65 0a 20 |r, 0 oth|erwise. |
|00000ae0| 2a 2f 0a 62 6f 6f 6c 65 | 61 6e 20 4d 61 6b 65 46 |*/.boole|an MakeF|
|00000af0| 6f 72 6d 20 28 43 6f 72 | 72 65 63 74 2c 4e 2c 46 |orm (Cor|rect,N,F|
|00000b00| 75 6e 73 2c 49 6e 4f 75 | 74 29 0a 20 20 20 62 6f |uns,InOu|t). bo|
|00000b10| 6f 6c 65 61 6e 20 43 6f | 72 72 65 63 74 3b 0a 20 |olean Co|rrect;. |
|00000b20| 20 20 4e 6f 64 65 50 74 | 72 20 4e 3b 0a 20 20 20 | NodePt|r N;. |
|00000b30| 4c 69 73 74 50 74 72 20 | 46 75 6e 73 3b 0a 20 20 |ListPtr |Funs;. |
|00000b40| 20 4f 62 6a 65 63 74 50 | 74 72 20 49 6e 4f 75 74 | ObjectP|tr InOut|
|00000b50| 3b 0a 20 20 20 7b 0a 23 | 69 66 64 65 66 20 50 41 |;. {.#|ifdef PA|
|00000b60| 52 41 4d 42 55 47 09 09 | 2f 2a 20 63 75 72 65 20 |RAMBUG..|/* cure |
|00000b70| 66 6f 72 20 43 52 41 59 | 20 43 2d 63 6f 6d 70 69 |for CRAY| C-compi|
|00000b80| 6c 65 72 20 62 75 67 20 | 28 73 65 65 20 73 74 72 |ler bug |(see str|
|00000b90| 75 63 74 2e 68 29 20 2a | 2f 0a 7b 0a 20 20 20 20 |uct.h) *|/.{. |
|00000ba0| 20 20 4c 69 73 74 50 74 | 72 20 54 20 3d 20 46 75 | ListPt|r T = Fu|
|00000bb0| 6e 73 3b 0a 20 20 20 20 | 20 20 4e 65 77 4c 69 73 |ns;. | NewLis|
|00000bc0| 74 20 28 26 54 2c 31 4c | 29 3b 0a 20 20 20 20 20 |t (&T,1L|);. |
|00000bd0| 20 46 75 6e 73 20 3d 20 | 54 3b 0a 7d 0a 23 65 6c | Funs = |T;.}.#el|
|00000be0| 73 65 0a 20 20 20 20 20 | 20 4e 65 77 4c 69 73 74 |se. | NewList|
|00000bf0| 20 28 26 46 75 6e 73 2c | 31 4c 29 3b 20 0a 23 65 | (&Funs,|1L); .#e|
|00000c00| 6e 64 69 66 0a 20 20 20 | 20 20 20 69 66 20 28 53 |ndif. | if (S|
|00000c10| 79 73 45 72 72 6f 72 20 | 7c 7c 20 21 43 6f 72 72 |ysError ||| !Corr|
|00000c20| 65 63 74 29 20 7b 0a 09 | 20 44 65 6c 4c 50 74 72 |ect) {..| DelLPtr|
|00000c30| 20 28 46 75 6e 73 29 3b | 0a 09 20 72 65 74 75 72 | (Funs);|.. retur|
|00000c40| 6e 20 30 3b 0a 20 20 20 | 20 20 20 7d 20 65 6c 73 |n 0;. | } els|
|00000c50| 65 20 7b 0a 09 20 46 75 | 6e 73 2d 3e 56 61 6c 2e |e {.. Fu|ns->Val.|
|00000c60| 54 61 67 20 3d 20 4e 4f | 44 45 3b 0a 09 20 46 75 |Tag = NO|DE;.. Fu|
|00000c70| 6e 73 2d 3e 56 61 6c 2e | 4e 6f 64 65 20 3d 20 43 |ns->Val.|Node = C|
|00000c80| 6f 70 79 4e 50 74 72 20 | 28 4e 29 3b 0a 09 20 52 |opyNPtr |(N);.. R|
|00000c90| 65 70 54 61 67 20 28 49 | 6e 4f 75 74 2c 4c 49 53 |epTag (I|nOut,LIS|
|00000ca0| 54 29 3b 0a 09 20 49 6e | 4f 75 74 2d 3e 4c 69 73 |T);.. In|Out->Lis|
|00000cb0| 74 20 3d 20 46 75 6e 73 | 3b 0a 09 20 72 65 74 75 |t = Funs|;.. retu|
|00000cc0| 72 6e 20 31 3b 0a 20 20 | 20 20 20 20 7d 0a 20 20 |rn 1;. | }. |
|00000cd0| 20 7d 0a 0a 2f 2a 0a 20 | 2a 20 49 6e 4e 65 78 74 | }../*. |* InNext|
|00000ce0| 0a 20 2a 0a 20 2a 20 49 | 6e 70 75 74 20 6e 65 78 |. *. * I|nput nex|
|00000cf0| 74 20 63 6f 6d 70 6f 73 | 69 74 69 6f 6e 2c 20 77 |t compos|ition, w|
|00000d00| 68 69 63 68 20 73 68 6f | 75 6c 64 20 62 65 20 66 |hich sho|uld be f|
|00000d10| 6f 6c 6c 6f 77 65 64 20 | 62 79 20 54 6f 6b 65 6e |ollowed |by Token|
|00000d20| 2e 0a 20 2a 0a 20 2a 20 | 49 6e 70 75 74 0a 20 2a |.. *. * |Input. *|
|00000d30| 20 20 20 20 20 20 2a 46 | 20 3d 20 69 6e 70 75 74 | *F| = input|
|00000d40| 0a 20 2a 20 20 20 20 20 | 20 45 6e 64 20 3d 20 70 |. * | End = p|
|00000d50| 6f 69 6e 74 65 72 20 74 | 6f 20 4d 65 74 61 50 74 |ointer t|o MetaPt|
|00000d60| 72 20 74 6f 20 65 6e 64 | 20 6f 66 20 6c 69 73 74 |r to end| of list|
|00000d70| 2e 0a 20 2a 20 20 20 20 | 20 20 54 6f 6b 65 6e 20 |.. * | Token |
|00000d80| 3d 20 74 6f 6b 65 6e 20 | 65 78 70 65 63 74 65 64 |= token |expected|
|00000d90| 2e 0a 20 2a 09 4b 20 3d | 20 70 6f 69 6e 74 65 72 |.. *.K =| pointer|
|00000da0| 20 74 6f 20 65 6e 74 72 | 79 20 6f 66 20 66 6f 72 | to entr|y of for|
|00000db0| 6d 20 62 65 69 6e 67 20 | 70 61 72 73 65 64 20 0a |m being |parsed .|
|00000dc0| 20 2a 2f 0a 62 6f 6f 6c | 65 61 6e 20 49 6e 4e 65 | */.bool|ean InNe|
|00000dd0| 78 74 20 28 46 2c 45 6e | 64 2c 54 6f 6b 65 6e 2c |xt (F,En|d,Token,|
|00000de0| 4b 2c 45 6e 76 29 0a 20 | 20 20 49 6e 44 65 73 63 |K,Env). | InDesc|
|00000df0| 20 2a 46 3b 0a 20 20 20 | 4d 65 74 61 50 74 72 20 | *F;. |MetaPtr |
|00000e00| 2a 45 6e 64 3b 0a 20 20 | 20 63 68 61 72 20 2a 54 |*End;. | char *T|
|00000e10| 6f 6b 65 6e 3b 0a 20 20 | 20 46 6f 72 6d 45 6e 74 |oken;. | FormEnt|
|00000e20| 72 79 20 2a 4b 3b 0a 20 | 20 20 4c 69 73 74 50 74 |ry *K;. | ListPt|
|00000e30| 72 20 45 6e 76 3b 0a 20 | 20 20 7b 0a 20 20 20 20 |r Env;. | {. |
|00000e40| 20 20 4e 65 77 4c 69 73 | 74 20 28 2a 45 6e 64 2c | NewLis|t (*End,|
|00000e50| 31 4c 29 3b 0a 20 20 20 | 20 20 20 69 66 20 28 53 |1L);. | if (S|
|00000e60| 79 73 45 72 72 6f 72 20 | 7c 7c 20 21 49 6e 43 6f |ysError ||| !InCo|
|00000e70| 6d 70 20 28 46 2c 26 28 | 2a 2a 45 6e 64 29 2d 3e |mp (F,&(|**End)->|
|00000e80| 56 61 6c 2c 45 6e 76 29 | 29 20 72 65 74 75 72 6e |Val,Env)|) return|
|00000e90| 20 30 3b 0a 20 20 20 20 | 20 20 69 66 20 28 21 49 | 0;. | if (!I|
|00000ea0| 73 54 6f 6b 20 28 46 2c | 54 6f 6b 65 6e 29 29 20 |sTok (F,|Token)) |
|00000eb0| 7b 0a 09 20 63 68 61 72 | 20 45 72 72 6f 72 20 5b |{.. char| Error [|
|00000ec0| 38 30 5d 3b 0a 09 20 65 | 78 74 65 72 6e 20 63 68 |80];.. e|xtern ch|
|00000ed0| 61 72 20 2a 73 70 72 69 | 6e 74 66 28 29 3b 0a 09 |ar *spri|ntf();..|
|00000ee0| 20 28 76 6f 69 64 29 20 | 73 70 72 69 6e 74 66 20 | (void) |sprintf |
|00000ef0| 28 45 72 72 6f 72 2c 22 | 27 25 73 27 20 70 61 72 |(Error,"|'%s' par|
|00000f00| 74 20 6f 66 20 27 25 73 | 27 20 65 78 70 65 63 74 |t of '%s|' expect|
|00000f10| 65 64 22 2c 0a 09 09 09 | 20 54 6f 6b 65 6e 2c 4b |ed",....| Token,K|
|00000f20| 2d 3e 46 6f 72 6d 43 6f | 6d 6d 65 6e 74 29 3b 0a |->FormCo|mment);.|
|00000f30| 09 20 72 65 74 75 72 6e | 20 49 6e 45 72 72 6f 72 |. return| InError|
|00000f40| 20 28 46 2c 45 72 72 6f | 72 29 3b 0a 20 20 20 20 | (F,Erro|r);. |
|00000f50| 20 20 7d 0a 20 20 20 20 | 20 20 2a 45 6e 64 20 3d | }. | *End =|
|00000f60| 20 26 28 2a 2a 45 6e 64 | 29 2d 3e 4e 65 78 74 3b | &(**End|)->Next;|
|00000f70| 0a 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 31 3b |. r|eturn 1;|
|00000f80| 0a 20 20 20 7d 0a 0a 2f | 2a 0a 20 2a 20 49 6e 50 |. }../|*. * InP|
|00000f90| 46 4f 0a 20 2a 0a 20 2a | 20 49 6e 70 75 74 20 61 |FO. *. *| Input a|
|00000fa0| 20 50 46 4f 2e 0a 20 2a | 0a 20 2a 20 49 6e 70 75 | PFO.. *|. * Inpu|
|00000fb0| 74 0a 20 2a 20 09 46 20 | 3d 20 69 6e 70 75 74 20 |t. * .F |= input |
|00000fc0| 64 65 73 63 72 69 70 74 | 6f 72 20 70 6f 69 6e 74 |descript|or point|
|00000fd0| 69 6e 67 20 74 6f 20 31 | 73 74 20 74 6f 6b 65 6e |ing to 1|st token|
|00000fe0| 20 61 66 74 65 72 20 31 | 73 74 20 6b 65 79 77 6f | after 1|st keywo|
|00000ff0| 72 64 20 6f 66 20 66 6f | 72 6d 0a 20 2a 20 20 20 |rd of fo|rm. * |
|00001000| 20 20 20 4b 20 3d 20 69 | 6e 64 65 78 20 6f 66 20 | K = i|ndex of |
|00001010| 66 6f 72 6d 0a 20 2a 09 | 45 6e 76 20 3d 20 65 6e |form. *.|Env = en|
|00001020| 76 69 72 6f 6e 6d 65 6e | 74 20 6c 69 73 74 0a 20 |vironmen|t list. |
|00001030| 2a 0a 20 2a 20 4f 75 74 | 70 75 74 0a 20 2a 09 49 |*. * Out|put. *.I|
|00001040| 6e 4f 75 74 20 3d 20 66 | 6f 72 6d 0a 20 2a 2f 0a |nOut = f|orm. */.|
|00001050| 70 72 69 76 61 74 65 20 | 62 6f 6f 6c 65 61 6e 20 |private |boolean |
|00001060| 49 6e 50 46 4f 20 28 46 | 2c 49 6e 4f 75 74 2c 4b |InPFO (F|,InOut,K|
|00001070| 2c 45 6e 76 29 0a 20 20 | 20 72 65 67 69 73 74 65 |,Env). | registe|
|00001080| 72 20 49 6e 44 65 73 63 | 20 2a 46 3b 0a 20 20 20 |r InDesc| *F;. |
|00001090| 4f 62 6a 65 63 74 50 74 | 72 20 49 6e 4f 75 74 3b |ObjectPt|r InOut;|
|000010a0| 0a 20 20 20 46 6f 72 6d | 45 6e 74 72 79 20 2a 4b |. Form|Entry *K|
|000010b0| 3b 0a 20 20 20 4c 69 73 | 74 50 74 72 20 45 6e 76 |;. Lis|tPtr Env|
|000010c0| 3b 0a 20 20 20 7b 0a 20 | 20 20 20 20 20 4c 69 73 |;. {. | Lis|
|000010d0| 74 50 74 72 20 52 20 3d | 20 4e 49 4c 3b 0a 20 20 |tPtr R =| NIL;. |
|000010e0| 20 20 20 20 4d 65 74 61 | 50 74 72 20 41 20 3d 20 | Meta|Ptr A = |
|000010f0| 26 52 3b 0a 20 20 20 20 | 20 20 62 6f 6f 6c 65 61 |&R;. | boolea|
|00001100| 6e 20 43 6f 72 72 65 63 | 74 3b 0a 0a 20 20 20 20 |n Correc|t;.. |
|00001110| 20 20 73 77 69 74 63 68 | 20 28 4b 2d 46 6f 72 6d | switch| (K-Form|
|00001120| 54 61 62 6c 65 29 20 7b | 0a 09 20 63 61 73 65 20 |Table) {|.. case |
|00001130| 4e 4f 44 45 5f 49 66 3a | 0a 09 20 20 20 20 43 6f |NODE_If:|.. Co|
|00001140| 72 72 65 63 74 20 3d 20 | 30 3b 0a 09 20 20 20 20 |rrect = |0;.. |
|00001150| 69 66 20 28 49 6e 4e 65 | 78 74 20 28 46 2c 26 41 |if (InNe|xt (F,&A|
|00001160| 2c 22 54 48 45 4e 22 2c | 4b 2c 45 6e 76 29 20 26 |,"THEN",|K,Env) &|
|00001170| 26 20 49 6e 4e 65 78 74 | 20 28 46 2c 26 41 2c 22 |& InNext| (F,&A,"|
|00001180| 5c 30 22 2c 4b 2c 45 6e | 76 29 29 0a 09 20 20 20 |\0",K,En|v)).. |
|00001190| 20 20 20 20 69 66 20 28 | 49 73 54 6f 6b 20 28 46 | if (|IsTok (F|
|000011a0| 2c 22 45 4c 53 49 46 22 | 29 29 20 7b 0a 09 09 20 |,"ELSIF"|)) {... |
|000011b0| 20 4e 65 77 4c 69 73 74 | 20 28 41 2c 31 4c 29 3b | NewList| (A,1L);|
|000011c0| 0a 09 09 20 20 43 6f 72 | 72 65 63 74 20 3d 20 21 |... Cor|rect = !|
|000011d0| 53 79 73 45 72 72 6f 72 | 20 26 26 20 49 6e 50 46 |SysError| && InPF|
|000011e0| 4f 20 28 46 2c 26 28 2a | 41 29 2d 3e 56 61 6c 2c |O (F,&(*|A)->Val,|
|000011f0| 4b 2c 45 6e 76 29 3b 0a | 09 20 20 20 20 20 20 20 |K,Env);.|. |
|00001200| 7d 20 65 6c 73 65 0a 09 | 09 20 20 69 66 20 28 49 |} else..|. if (I|
|00001210| 73 54 6f 6b 20 28 46 2c | 22 45 4c 53 45 22 29 29 |sTok (F,|"ELSE"))|
|00001220| 20 43 6f 72 72 65 63 74 | 20 3d 20 49 6e 4e 65 78 | Correct| = InNex|
|00001230| 74 20 28 46 2c 26 41 2c | 22 45 4e 44 22 2c 4b 2c |t (F,&A,|"END",K,|
|00001240| 45 6e 76 29 3b 0a 09 09 | 20 20 65 6c 73 65 20 28 |Env);...| else (|
|00001250| 76 6f 69 64 29 20 49 6e | 45 72 72 6f 72 20 28 46 |void) In|Error (F|
|00001260| 2c 22 27 45 4c 53 45 27 | 20 6f 72 20 27 45 4c 53 |,"'ELSE'| or 'ELS|
|00001270| 49 46 27 20 65 78 70 65 | 63 74 65 64 22 29 3b 0a |IF' expe|cted");.|
|00001280| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 0a 09 20 63 |. bre|ak;... c|
|00001290| 61 73 65 20 4e 4f 44 45 | 5f 45 61 63 68 3a 0a 09 |ase NODE|_Each:..|
|000012a0| 20 63 61 73 65 20 4e 4f | 44 45 5f 52 49 6e 73 65 | case NO|DE_RInse|
|000012b0| 72 74 3a 0a 09 20 63 61 | 73 65 20 4e 4f 44 45 5f |rt:.. ca|se NODE_|
|000012c0| 46 69 6c 74 65 72 3a 0a | 09 20 20 20 20 43 6f 72 |Filter:.|. Cor|
|000012d0| 72 65 63 74 20 3d 20 49 | 6e 4e 65 78 74 20 28 46 |rect = I|nNext (F|
|000012e0| 2c 26 41 2c 22 45 4e 44 | 22 2c 4b 2c 4e 49 4c 29 |,&A,"END|",K,NIL)|
|000012f0| 3b 0a 09 20 20 20 20 62 | 72 65 61 6b 3b 0a 0a 09 |;.. b|reak;...|
|00001300| 20 63 61 73 65 20 4e 4f | 44 45 5f 57 68 69 6c 65 | case NO|DE_While|
|00001310| 3a 0a 09 20 20 20 20 43 | 6f 72 72 65 63 74 20 3d |:.. C|orrect =|
|00001320| 20 49 6e 4e 65 78 74 20 | 28 46 2c 26 41 2c 22 44 | InNext |(F,&A,"D|
|00001330| 4f 22 2c 4b 2c 4e 49 4c | 29 20 26 26 20 49 6e 4e |O",K,NIL|) && InN|
|00001340| 65 78 74 20 28 46 2c 26 | 41 2c 22 45 4e 44 22 2c |ext (F,&|A,"END",|
|00001350| 4b 2c 4e 49 4c 29 3b 0a | 09 20 20 20 20 62 72 65 |K,NIL);.|. bre|
|00001360| 61 6b 3b 0a 23 69 66 20 | 58 44 45 46 0a 09 20 63 |ak;.#if |XDEF.. c|
|00001370| 61 73 65 20 4e 4f 44 45 | 5f 58 44 65 66 3a 20 7b |ase NODE|_XDef: {|
|00001380| 0a 09 20 20 20 20 4c 69 | 73 74 50 74 72 20 4f 6c |.. Li|stPtr Ol|
|00001390| 64 45 6e 76 20 3d 20 45 | 6e 76 3b 0a 09 20 20 20 |dEnv = E|nv;.. |
|000013a0| 20 43 6f 72 72 65 63 74 | 20 3d 20 30 3b 0a 09 20 | Correct| = 0;.. |
|000013b0| 20 20 20 4e 65 77 4c 69 | 73 74 20 28 41 2c 31 4c | NewLi|st (A,1L|
|000013c0| 29 3b 0a 09 20 20 20 20 | 69 66 20 28 53 79 73 45 |);.. |if (SysE|
|000013d0| 72 72 6f 72 20 7c 7c 20 | 21 49 6e 4c 48 53 20 28 |rror || |!InLHS (|
|000013e0| 46 2c 26 28 2a 41 29 2d | 3e 56 61 6c 2c 26 45 6e |F,&(*A)-|>Val,&En|
|000013f0| 76 29 29 20 62 72 65 61 | 6b 3b 0a 09 20 20 20 20 |v)) brea|k;.. |
|00001400| 69 66 20 28 21 49 73 54 | 6f 6b 20 28 46 2c 22 3a |if (!IsT|ok (F,":|
|00001410| 3d 22 29 29 20 28 76 6f | 69 64 29 20 49 6e 45 72 |=")) (vo|id) InEr|
|00001420| 72 6f 72 20 28 46 2c 22 | 27 3a 3d 27 20 65 78 70 |ror (F,"|':=' exp|
|00001430| 65 63 74 65 64 22 29 3b | 0a 09 20 20 20 20 65 6c |ected");|.. el|
|00001440| 73 65 20 7b 0a 09 20 20 | 20 20 20 20 20 41 20 3d |se {.. | A =|
|00001450| 20 26 28 2a 41 29 2d 3e | 4e 65 78 74 3b 0a 09 20 | &(*A)->|Next;.. |
|00001460| 20 20 20 20 20 20 69 66 | 20 28 21 49 6e 4e 65 78 | if| (!InNex|
|00001470| 74 20 28 46 2c 26 41 2c | 22 7d 22 2c 4b 2c 4f 6c |t (F,&A,|"}",K,Ol|
|00001480| 64 45 6e 76 29 29 20 62 | 72 65 61 6b 3b 0a 09 20 |dEnv)) b|reak;.. |
|00001490| 20 20 20 20 20 20 4e 65 | 77 4c 69 73 74 20 28 41 | Ne|wList (A|
|000014a0| 2c 31 4c 29 3b 0a 09 20 | 20 20 20 20 20 20 69 66 |,1L);.. | if|
|000014b0| 20 28 49 6e 53 69 6d 70 | 6c 65 20 28 46 2c 26 28 | (InSimp|le (F,&(|
|000014c0| 2a 41 29 2d 3e 56 61 6c | 2c 45 6e 76 29 29 20 43 |*A)->Val|,Env)) C|
|000014d0| 6f 72 72 65 63 74 20 3d | 20 31 3b 0a 09 20 20 20 |orrect =| 1;.. |
|000014e0| 20 7d 0a 09 20 20 20 20 | 62 72 65 61 6b 3b 0a 09 | }.. |break;..|
|000014f0| 20 7d 0a 23 65 6e 64 69 | 66 0a 09 20 63 61 73 65 | }.#endi|f.. case|
|00001500| 20 4e 4f 44 45 5f 43 3a | 0a 09 20 20 20 20 4e 65 | NODE_C:|.. Ne|
|00001510| 77 4c 69 73 74 20 28 41 | 2c 31 4c 29 3b 0a 09 20 |wList (A|,1L);.. |
|00001520| 20 20 20 69 66 20 28 43 | 6f 72 72 65 63 74 20 3d | if (C|orrect =|
|00001530| 20 21 53 79 73 45 72 72 | 6f 72 20 26 26 20 49 6e | !SysErr|or && In|
|00001540| 4f 62 6a 65 63 74 20 28 | 46 2c 26 28 2a 41 29 2d |Object (|F,&(*A)-|
|00001550| 3e 56 61 6c 29 29 0a 09 | 20 20 20 20 20 20 20 69 |>Val))..| i|
|00001560| 66 20 28 28 2a 41 29 2d | 3e 56 61 6c 2e 54 61 67 |f ((*A)-|>Val.Tag|
|00001570| 20 3d 3d 20 42 4f 54 54 | 4f 4d 29 20 7b 0a 09 09 | == BOTT|OM) {...|
|00001580| 20 20 2f 2a 20 43 6f 6e | 76 65 72 74 20 23 3f 20 | /* Con|vert #? |
|00001590| 74 6f 20 23 28 6e 75 6c | 6c 29 20 2a 2f 0a 09 09 |to #(nul|l) */...|
|000015a0| 20 20 44 65 6c 4c 50 74 | 72 20 28 52 29 3b 0a 09 | DelLPt|r (R);..|
|000015b0| 09 20 20 52 20 3d 20 4e | 49 4c 3b 0a 09 20 20 20 |. R = N|IL;.. |
|000015c0| 20 20 20 7d 0a 09 20 20 | 20 20 62 72 65 61 6b 3b | }.. | break;|
|000015d0| 0a 0a 09 20 63 61 73 65 | 20 4e 4f 44 45 5f 43 6f |... case| NODE_Co|
|000015e0| 6e 73 3a 0a 09 20 20 20 | 20 69 66 20 28 21 28 43 |ns:.. | if (!(C|
|000015f0| 6f 72 72 65 63 74 20 3d | 20 49 73 54 6f 6b 20 28 |orrect =| IsTok (|
|00001600| 46 2c 22 5d 22 29 29 29 | 20 7b 0a 09 20 20 20 20 |F,"]")))| {.. |
|00001610| 20 20 20 77 68 69 6c 65 | 20 28 28 43 6f 72 72 65 | while| ((Corre|
|00001620| 63 74 20 3d 20 49 6e 4e | 65 78 74 20 28 46 2c 26 |ct = InN|ext (F,&|
|00001630| 41 2c 22 5c 30 22 2c 4b | 2c 45 6e 76 29 29 20 26 |A,"\0",K|,Env)) &|
|00001640| 26 20 49 73 54 6f 6b 20 | 28 46 2c 22 2c 22 29 29 |& IsTok |(F,","))|
|00001650| 20 0a 09 09 20 20 63 6f | 6e 74 69 6e 75 65 3b 0a | ... co|ntinue;.|
|00001660| 09 20 20 20 20 20 20 20 | 69 66 20 28 43 6f 72 72 |. |if (Corr|
|00001670| 65 63 74 29 20 0a 09 09 | 20 20 69 66 20 28 43 6f |ect) ...| if (Co|
|00001680| 72 72 65 63 74 20 3d 20 | 49 73 54 6f 6b 20 28 46 |rrect = |IsTok (F|
|00001690| 2c 22 5d 22 29 29 3b 0a | 09 09 20 20 65 6c 73 65 |,"]"));.|.. else|
|000016a0| 20 28 76 6f 69 64 29 20 | 49 6e 45 72 72 6f 72 20 | (void) |InError |
|000016b0| 28 46 2c 22 27 5d 27 20 | 6f 72 20 27 2c 27 20 65 |(F,"']' |or ',' e|
|000016c0| 78 70 65 63 74 65 64 22 | 29 3b 0a 09 20 20 20 20 |xpected"|);.. |
|000016d0| 7d 0a 09 20 20 20 20 62 | 72 65 61 6b 3b 0a 0a 23 |}.. b|reak;..#|
|000016e0| 69 66 20 46 45 54 43 48 | 0a 09 20 63 61 73 65 20 |if FETCH|.. case |
|000016f0| 4e 4f 44 45 5f 46 65 74 | 63 68 3a 0a 23 65 6e 64 |NODE_Fet|ch:.#end|
|00001700| 69 66 0a 09 20 63 61 73 | 65 20 4e 4f 44 45 5f 4f |if.. cas|e NODE_O|
|00001710| 75 74 3a 0a 09 20 20 20 | 20 4e 65 77 4c 69 73 74 |ut:.. | NewList|
|00001720| 20 28 41 2c 31 4c 29 3b | 0a 09 20 20 20 20 43 6f | (A,1L);|.. Co|
|00001730| 72 72 65 63 74 20 3d 20 | 21 53 79 73 45 72 72 6f |rrect = |!SysErro|
|00001740| 72 20 26 26 20 49 6e 4f | 62 6a 65 63 74 20 28 46 |r && InO|bject (F|
|00001750| 2c 26 28 2a 41 29 2d 3e | 56 61 6c 29 3b 0a 09 20 |,&(*A)->|Val);.. |
|00001760| 20 20 20 62 72 65 61 6b | 3b 0a 0a 20 20 20 20 20 | break|;.. |
|00001770| 20 7d 0a 20 20 20 20 20 | 20 72 65 74 75 72 6e 20 | }. | return |
|00001780| 4d 61 6b 65 46 6f 72 6d | 20 28 43 6f 72 72 65 63 |MakeForm| (Correc|
|00001790| 74 2c 4b 2d 3e 46 6f 72 | 6d 4e 6f 64 65 2c 52 2c |t,K->For|mNode,R,|
|000017a0| 49 6e 4f 75 74 29 3b 0a | 20 20 20 7d 0a 0a 2f 2a |InOut);.| }../*|
|000017b0| 0a 20 2a 20 49 6e 53 65 | 6c 65 63 74 6f 72 0a 20 |. * InSe|lector. |
|000017c0| 2a 0a 20 2a 20 49 6e 70 | 75 74 0a 20 2a 20 09 46 |*. * Inp|ut. * .F|
|000017d0| 20 3d 20 69 6e 70 75 74 | 20 64 65 73 63 72 69 70 | = input| descrip|
|000017e0| 74 6f 72 20 70 6f 69 6e | 74 69 6e 67 20 74 6f 20 |tor poin|ting to |
|000017f0| 73 65 6c 65 63 74 6f 72 | 0a 20 2a 0a 20 2a 20 4f |selector|. *. * O|
|00001800| 75 74 70 75 74 0a 20 2a | 09 49 6e 4f 75 74 20 3d |utput. *|.InOut =|
|00001810| 20 73 65 6c 65 63 74 6f | 72 20 50 46 4f 0a 20 2a | selecto|r PFO. *|
|00001820| 2f 0a 70 72 69 76 61 74 | 65 20 62 6f 6f 6c 65 61 |/.privat|e boolea|
|00001830| 6e 20 49 6e 53 65 6c 65 | 63 74 6f 72 20 28 46 2c |n InSele|ctor (F,|
|00001840| 49 6e 4f 75 74 29 0a 20 | 20 20 72 65 67 69 73 74 |InOut). | regist|
|00001850| 65 72 20 49 6e 44 65 73 | 63 20 2a 46 3b 0a 20 20 |er InDes|c *F;. |
|00001860| 20 4f 62 6a 65 63 74 50 | 74 72 20 49 6e 4f 75 74 | ObjectP|tr InOut|
|00001870| 3b 0a 20 20 20 7b 0a 20 | 20 20 20 20 20 72 65 67 |;. {. | reg|
|00001880| 69 73 74 65 72 20 4c 69 | 73 74 50 74 72 20 50 3b |ister Li|stPtr P;|
|00001890| 0a 20 20 20 20 20 20 6c | 6f 6e 67 20 49 6e 64 65 |. l|ong Inde|
|000018a0| 78 20 3d 20 30 3b 0a 0a | 20 20 20 20 20 20 64 6f |x = 0;..| do|
|000018b0| 20 0a 09 20 49 6e 64 65 | 78 20 3d 20 31 30 2a 49 | .. Inde|x = 10*I|
|000018c0| 6e 64 65 78 20 2b 20 28 | 2a 46 2d 3e 49 6e 50 74 |ndex + (|*F->InPt|
|000018d0| 72 2b 2b 29 20 2d 20 27 | 30 27 3b 0a 20 20 20 20 |r++) - '|0';. |
|000018e0| 20 20 77 68 69 6c 65 20 | 69 73 64 69 67 69 74 20 | while |isdigit |
|000018f0| 28 2a 46 2d 3e 49 6e 50 | 74 72 29 3b 0a 0a 20 20 |(*F->InP|tr);.. |
|00001900| 20 20 20 20 52 65 70 54 | 61 67 20 28 49 6e 4f 75 | RepT|ag (InOu|
|00001910| 74 2c 4c 49 53 54 29 3b | 0a 20 20 20 20 20 20 49 |t,LIST);|. I|
|00001920| 6e 4f 75 74 2d 3e 4c 69 | 73 74 20 3d 20 4e 49 4c |nOut->Li|st = NIL|
|00001930| 3b 0a 20 20 20 20 20 20 | 4e 65 77 4c 69 73 74 20 |;. |NewList |
|00001940| 28 26 49 6e 4f 75 74 2d | 3e 4c 69 73 74 2c 32 4c |(&InOut-|>List,2L|
|00001950| 29 3b 0a 20 20 20 20 20 | 20 69 66 20 28 53 79 73 |);. | if (Sys|
|00001960| 45 72 72 6f 72 29 20 7b | 0a 09 20 49 6e 4f 75 74 |Error) {|.. InOut|
|00001970| 2d 3e 54 61 67 20 3d 20 | 42 4f 54 54 4f 4d 3b 0a |->Tag = |BOTTOM;.|
|00001980| 09 20 72 65 74 75 72 6e | 20 30 3b 0a 20 20 20 20 |. return| 0;. |
|00001990| 20 20 7d 0a 20 20 20 20 | 20 20 50 20 3d 20 49 6e | }. | P = In|
|000019a0| 4f 75 74 2d 3e 4c 69 73 | 74 3b 0a 20 20 20 20 20 |Out->Lis|t;. |
|000019b0| 20 50 2d 3e 56 61 6c 2e | 54 61 67 20 3d 20 4e 4f | P->Val.|Tag = NO|
|000019c0| 44 45 3b 0a 20 20 20 20 | 20 20 50 2d 3e 56 61 6c |DE;. | P->Val|
|000019d0| 2e 4e 6f 64 65 20 3d 20 | 46 6f 72 6d 54 61 62 6c |.Node = |FormTabl|
|000019e0| 65 20 5b 4e 4f 44 45 5f | 53 65 6c 5d 2e 46 6f 72 |e [NODE_|Sel].For|
|000019f0| 6d 4e 6f 64 65 3b 0a 20 | 20 20 20 20 20 50 20 3d |mNode;. | P =|
|00001a00| 20 50 2d 3e 4e 65 78 74 | 3b 0a 20 20 20 20 20 20 | P->Next|;. |
|00001a10| 50 2d 3e 56 61 6c 2e 54 | 61 67 20 3d 20 49 4e 54 |P->Val.T|ag = INT|
|00001a20| 3b 0a 20 20 20 20 20 20 | 50 2d 3e 56 61 6c 2e 49 |;. |P->Val.I|
|00001a30| 6e 74 20 3d 20 49 73 54 | 6f 6b 20 28 46 2c 22 72 |nt = IsT|ok (F,"r|
|00001a40| 22 29 20 3f 20 2d 49 6e | 64 65 78 20 3a 20 49 6e |") ? -In|dex : In|
|00001a50| 64 65 78 3b 0a 20 20 20 | 20 20 20 72 65 74 75 72 |dex;. | retur|
|00001a60| 6e 20 31 3b 0a 20 20 20 | 7d 0a 0a 2f 2a 0a 20 2a |n 1;. |}../*. *|
|00001a70| 20 49 6e 53 69 6d 70 6c | 65 0a 20 2a 0a 20 2a 20 | InSimpl|e. *. * |
|00001a80| 52 65 61 64 20 61 20 73 | 69 6d 70 6c 65 20 66 75 |Read a s|imple fu|
|00001a90| 6e 63 74 69 6f 6e 0a 20 | 2a 0a 20 2a 20 4f 75 74 |nction. |*. * Out|
|00001aa0| 70 75 74 0a 20 2a 20 20 | 20 20 20 20 72 65 73 75 |put. * | resu|
|00001ab0| 6c 74 20 3d 20 31 20 69 | 66 66 20 65 72 72 6f 72 |lt = 1 i|ff error|
|00001ac0| 20 6f 63 63 75 72 73 2c | 20 30 20 6f 74 68 65 72 | occurs,| 0 other|
|00001ad0| 77 69 73 65 0a 20 2a 20 | 20 20 20 20 20 49 6e 4f |wise. * | InO|
|00001ae0| 75 74 20 3d 20 73 69 6d | 70 6c 65 20 66 75 6e 63 |ut = sim|ple func|
|00001af0| 74 69 6f 6e 20 69 66 20 | 6e 6f 20 65 72 72 6f 72 |tion if |no error|
|00001b00| 0a 20 2a 0a 20 2a 20 41 | 20 53 79 73 45 72 72 6f |. *. * A| SysErro|
|00001b10| 72 20 6d 61 79 20 6f 63 | 63 75 72 2c 20 69 6e 20 |r may oc|cur, in |
|00001b20| 77 68 69 63 68 20 63 61 | 73 65 20 49 6e 4f 75 74 |which ca|se InOut|
|00001b30| 20 69 73 20 75 6e 63 68 | 61 6e 67 65 64 2e 0a 20 | is unch|anged.. |
|00001b40| 2a 2f 0a 62 6f 6f 6c 65 | 61 6e 20 49 6e 53 69 6d |*/.boole|an InSim|
|00001b50| 70 6c 65 20 28 46 2c 49 | 6e 4f 75 74 2c 45 6e 76 |ple (F,I|nOut,Env|
|00001b60| 29 0a 20 20 20 49 6e 44 | 65 73 63 20 2a 46 3b 0a |). InD|esc *F;.|
|00001b70| 20 20 20 4f 62 6a 65 63 | 74 50 74 72 20 49 6e 4f | Objec|tPtr InO|
|00001b80| 75 74 3b 0a 20 20 20 4c | 69 73 74 50 74 72 20 45 |ut;. L|istPtr E|
|00001b90| 6e 76 3b 0a 20 20 20 7b | 0a 20 20 20 20 20 20 73 |nv;. {|. s|
|00001ba0| 74 61 74 69 63 20 63 68 | 61 72 20 49 6e 46 69 72 |tatic ch|ar InFir|
|00001bb0| 73 74 5b 5d 20 3d 20 7b | 09 20 2f 2a 20 46 69 72 |st[] = {|. /* Fir|
|00001bc0| 73 74 20 63 68 61 72 61 | 63 74 65 72 73 20 6f 66 |st chara|cters of|
|00001bd0| 20 49 6e 50 72 65 66 69 | 78 20 2a 2f 0a 09 20 20 | InPrefi|x */.. |
|00001be0| 27 49 27 2c 27 45 27 2c | 27 57 27 2c 27 23 27 2c |'I','E',|'W','#',|
|00001bf0| 27 5b 27 2c 27 46 27 2c | 27 40 27 0a 23 69 66 20 |'[','F',|'@'.#if |
|00001c00| 46 45 54 43 48 0a 09 20 | 2c 27 5e 27 0a 23 65 6e |FETCH.. |,'^'.#en|
|00001c10| 64 69 66 0a 23 69 66 20 | 58 44 45 46 0a 09 20 2c |dif.#if |XDEF.. ,|
|00001c20| 27 7b 27 0a 23 65 6e 64 | 69 66 0a 09 20 2c 27 5c |'{'.#end|if.. ,'\|
|00001c30| 30 27 0a 20 20 20 20 20 | 20 7d 3b 0a 20 20 20 20 |0'. | };. |
|00001c40| 20 20 72 65 67 69 73 74 | 65 72 20 46 6f 72 6d 45 | regist|er FormE|
|00001c50| 6e 74 72 79 20 2a 4b 3b | 0a 20 20 20 20 20 20 65 |ntry *K;|. e|
|00001c60| 78 74 65 72 6e 20 63 68 | 61 72 20 2a 69 6e 64 65 |xtern ch|ar *inde|
|00001c70| 78 20 28 29 3b 0a 0a 20 | 20 20 20 20 20 69 66 20 |x ();.. | if |
|00001c80| 28 44 65 62 75 67 20 26 | 20 44 65 62 75 67 50 61 |(Debug &| DebugPa|
|00001c90| 72 73 65 29 20 7b 0a 09 | 20 70 72 69 6e 74 66 20 |rse) {..| printf |
|00001ca0| 28 22 49 6e 53 69 6d 70 | 6c 65 3a 20 45 6e 76 20 |("InSimp|le: Env |
|00001cb0| 3d 20 22 29 3b 20 4f 75 | 74 4c 69 73 74 20 28 45 |= "); Ou|tList (E|
|00001cc0| 6e 76 29 3b 20 0a 09 20 | 70 72 69 6e 74 66 20 28 |nv); .. |printf (|
|00001cd0| 22 2c 20 46 20 3d 20 25 | 73 5c 6e 22 2c 46 2d 3e |", F = %|s\n",F->|
|00001ce0| 49 6e 50 74 72 29 3b 0a | 20 20 20 20 20 20 7d 20 |InPtr);.| } |
|00001cf0| 0a 20 20 20 20 20 20 49 | 6e 42 6c 61 6e 6b 73 20 |. I|nBlanks |
|00001d00| 28 46 29 3b 0a 23 69 66 | 64 65 66 20 50 41 54 54 |(F);.#if|def PATT|
|00001d10| 45 52 4e 0a 20 20 20 20 | 20 20 69 66 20 28 49 73 |ERN. | if (Is|
|00001d20| 54 6f 6b 20 28 46 2c 22 | 21 22 29 29 20 72 65 74 |Tok (F,"|!")) ret|
|00001d30| 75 72 6e 20 49 6e 4f 62 | 6a 65 63 74 20 28 46 2c |urn InOb|ject (F,|
|00001d40| 49 6e 4f 75 74 29 3b 0a | 23 65 6e 64 69 66 0a 20 |InOut);.|#endif. |
|00001d50| 20 20 20 20 20 2f 2a 20 | 0a 20 20 20 20 20 20 20 | /* |. |
|00001d60| 2a 20 54 68 65 20 22 69 | 6e 64 65 78 22 20 6c 6f |* The "i|ndex" lo|
|00001d70| 6f 6b 75 70 20 62 65 6c | 6f 77 20 71 75 69 63 6b |okup bel|ow quick|
|00001d80| 6c 79 20 72 65 6a 65 63 | 74 73 20 73 74 72 69 6e |ly rejec|ts strin|
|00001d90| 67 73 20 77 68 69 63 68 | 0a 20 20 20 20 20 20 20 |gs which|. |
|00001da0| 2a 20 63 61 6e 6e 6f 74 | 20 62 65 20 6b 65 79 20 |* cannot| be key |
|00001db0| 77 6f 72 64 73 2e 0a 20 | 20 20 20 20 20 20 2a 2f |words.. | */|
|00001dc0| 0a 20 20 20 20 20 20 69 | 66 20 28 4e 55 4c 4c 20 |. i|f (NULL |
|00001dd0| 21 3d 20 69 6e 64 65 78 | 20 28 49 6e 46 69 72 73 |!= index| (InFirs|
|00001de0| 74 2c 2a 46 2d 3e 49 6e | 50 74 72 29 29 20 7b 0a |t,*F->In|Ptr)) {.|
|00001df0| 09 20 66 6f 72 20 28 4b | 3d 46 6f 72 6d 54 61 62 |. for (K|=FormTab|
|00001e00| 6c 65 3b 20 4b 20 3c 20 | 41 72 72 61 79 45 6e 64 |le; K < |ArrayEnd|
|00001e10| 28 46 6f 72 6d 54 61 62 | 6c 65 29 3b 20 4b 2b 2b |(FormTab|le); K++|
|00001e20| 29 20 0a 09 20 20 20 20 | 69 66 20 28 2a 4b 2d 3e |) .. |if (*K->|
|00001e30| 46 6f 72 6d 49 6e 50 72 | 65 66 69 78 20 21 3d 20 |FormInPr|efix != |
|00001e40| 27 5c 30 27 20 26 26 20 | 49 73 54 6f 6b 20 28 46 |'\0' && |IsTok (F|
|00001e50| 2c 4b 2d 3e 46 6f 72 6d | 49 6e 50 72 65 66 69 78 |,K->Form|InPrefix|
|00001e60| 29 29 0a 09 20 20 20 20 | 20 20 20 72 65 74 75 72 |)).. | retur|
|00001e70| 6e 20 49 6e 50 46 4f 20 | 28 46 2c 49 6e 4f 75 74 |n InPFO |(F,InOut|
|00001e80| 2c 4b 2c 45 6e 76 29 3b | 0a 20 20 20 20 20 20 7d |,K,Env);|. }|
|00001e90| 20 65 6c 73 65 0a 09 20 | 69 66 20 28 69 73 64 69 | else.. |if (isdi|
|00001ea0| 67 69 74 20 28 2a 46 2d | 3e 49 6e 50 74 72 29 29 |git (*F-|>InPtr))|
|00001eb0| 20 0a 09 20 20 20 20 72 | 65 74 75 72 6e 20 49 6e | .. r|eturn In|
|00001ec0| 53 65 6c 65 63 74 6f 72 | 20 28 46 2c 49 6e 4f 75 |Selector| (F,InOu|
|00001ed0| 74 29 3b 0a 0a 20 20 20 | 20 20 20 69 66 20 28 21 |t);.. | if (!|
|00001ee0| 49 6e 4e 6f 64 65 20 28 | 46 2c 49 6e 4f 75 74 2c |InNode (|F,InOut,|
|00001ef0| 45 6e 76 29 29 20 0a 09 | 20 72 65 74 75 72 6e 20 |Env)) ..| return |
|00001f00| 30 3b 0a 20 20 20 20 20 | 20 65 6c 73 65 20 69 66 |0;. | else if|
|00001f10| 20 28 49 6e 4f 75 74 2d | 3e 4c 69 73 74 20 3d 3d | (InOut-|>List ==|
|00001f20| 20 4e 55 4c 4c 29 20 0a | 09 20 72 65 74 75 72 6e | NULL) .|. return|
|00001f30| 20 49 6e 45 72 72 6f 72 | 20 28 46 2c 22 27 2f 27 | InError| (F,"'/'|
|00001f40| 20 6e 6f 74 20 61 20 66 | 75 6e 63 74 69 6f 6e 22 | not a f|unction"|
|00001f50| 29 3b 0a 20 20 20 20 20 | 20 65 6c 73 65 0a 09 20 |);. | else.. |
|00001f60| 72 65 74 75 72 6e 20 31 | 3b 0a 20 20 20 7d 0a 0a |return 1|;. }..|
|00001f70| 2f 2a 0a 20 2a 20 49 6e | 43 6f 6d 70 0a 20 2a 0a |/*. * In|Comp. *.|
|00001f80| 20 2a 20 49 6e 70 75 74 | 20 61 20 63 6f 6d 70 6f | * Input| a compo|
|00001f90| 73 69 74 69 6f 6e 0a 20 | 2a 2f 0a 62 6f 6f 6c 65 |sition. |*/.boole|
|00001fa0| 61 6e 20 49 6e 43 6f 6d | 70 20 28 46 2c 49 6e 4f |an InCom|p (F,InO|
|00001fb0| 75 74 2c 45 6e 76 29 0a | 20 20 20 72 65 67 69 73 |ut,Env).| regis|
|00001fc0| 74 65 72 20 49 6e 44 65 | 73 63 20 2a 46 3b 0a 20 |ter InDe|sc *F;. |
|00001fd0| 20 20 4f 62 6a 65 63 74 | 50 74 72 20 49 6e 4f 75 | Object|Ptr InOu|
|00001fe0| 74 3b 0a 20 20 20 4c 69 | 73 74 50 74 72 20 45 6e |t;. Li|stPtr En|
|00001ff0| 76 3b 0a 20 20 20 7b 0a | 20 20 20 20 20 20 4f 62 |v;. {.| Ob|
|00002000| 6a 65 63 74 20 58 3b 0a | 0a 20 20 20 20 20 20 69 |ject X;.|. i|
|00002010| 66 20 28 44 65 62 75 67 | 20 26 20 44 65 62 75 67 |f (Debug| & Debug|
|00002020| 50 61 72 73 65 29 20 7b | 0a 09 20 70 72 69 6e 74 |Parse) {|.. print|
|00002030| 66 20 28 22 49 6e 43 6f | 6d 70 3a 20 45 6e 76 20 |f ("InCo|mp: Env |
|00002040| 3d 20 22 29 3b 20 0a 09 | 20 4f 75 74 4c 69 73 74 |= "); ..| OutList|
|00002050| 20 28 45 6e 76 29 3b 20 | 0a 09 20 70 72 69 6e 74 | (Env); |.. print|
|00002060| 66 20 28 22 2c 20 46 20 | 3d 20 25 73 5c 6e 22 2c |f (", F |= %s\n",|
|00002070| 46 2d 3e 49 6e 50 74 72 | 29 3b 0a 20 20 20 20 20 |F->InPtr|);. |
|00002080| 20 7d 0a 20 20 20 20 20 | 20 58 2e 54 61 67 20 3d | }. | X.Tag =|
|00002090| 20 42 4f 54 54 4f 4d 3b | 0a 20 20 20 20 20 20 69 | BOTTOM;|. i|
|000020a0| 66 20 28 21 49 6e 53 69 | 6d 70 6c 65 20 28 46 2c |f (!InSi|mple (F,|
|000020b0| 26 58 2c 45 6e 76 29 29 | 20 72 65 74 75 72 6e 20 |&X,Env))| return |
|000020c0| 30 3b 0a 20 20 20 20 20 | 20 65 6c 73 65 20 7b 0a |0;. | else {.|
|000020d0| 09 20 49 6e 42 6c 61 6e | 6b 73 20 28 46 29 3b 0a |. InBlan|ks (F);.|
|000020e0| 09 20 69 66 20 28 21 49 | 73 54 6f 6b 20 28 46 2c |. if (!I|sTok (F,|
|000020f0| 22 7c 22 29 29 20 7b 0a | 09 20 20 20 20 52 65 70 |"|")) {.|. Rep|
|00002100| 4f 62 6a 65 63 74 20 28 | 49 6e 4f 75 74 2c 26 58 |Object (|InOut,&X|
|00002110| 29 3b 0a 09 20 20 20 20 | 52 65 70 54 61 67 20 28 |);.. |RepTag (|
|00002120| 26 58 2c 42 4f 54 54 4f | 4d 29 3b 0a 09 20 20 20 |&X,BOTTO|M);.. |
|00002130| 20 72 65 74 75 72 6e 20 | 21 53 79 73 45 72 72 6f | return |!SysErro|
|00002140| 72 3b 0a 09 20 7d 20 65 | 6c 73 65 20 7b 0a 09 20 |r;.. } e|lse {.. |
|00002150| 20 20 20 4c 69 73 74 50 | 74 72 20 50 2c 52 3d 4e | ListP|tr P,R=N|
|00002160| 49 4c 3b 20 0a 09 20 20 | 20 20 62 6f 6f 6c 65 61 |IL; .. | boolea|
|00002170| 6e 20 43 6f 72 72 65 63 | 74 3b 0a 09 20 20 20 20 |n Correc|t;.. |
|00002180| 4e 65 77 4c 69 73 74 20 | 28 26 52 2c 31 4c 29 3b |NewList |(&R,1L);|
|00002190| 0a 09 20 20 20 20 69 66 | 20 28 53 79 73 45 72 72 |.. if| (SysErr|
|000021a0| 6f 72 29 20 43 6f 72 72 | 65 63 74 20 3d 20 30 3b |or) Corr|ect = 0;|
|000021b0| 0a 09 20 20 20 20 65 6c | 73 65 20 7b 0a 09 20 20 |.. el|se {.. |
|000021c0| 20 20 20 20 20 43 6f 70 | 79 4f 62 6a 65 63 74 20 | Cop|yObject |
|000021d0| 28 26 28 50 3d 52 29 2d | 3e 56 61 6c 2c 26 58 29 |(&(P=R)-|>Val,&X)|
|000021e0| 3b 0a 09 20 20 20 20 20 | 20 20 52 65 70 54 61 67 |;.. | RepTag|
|000021f0| 20 28 26 58 2c 42 4f 54 | 54 4f 4d 29 3b 0a 09 20 | (&X,BOT|TOM);.. |
|00002200| 20 20 20 20 20 20 64 6f | 20 7b 0a 09 09 20 20 4e | do| {... N|
|00002210| 65 77 4c 69 73 74 20 28 | 26 50 2d 3e 4e 65 78 74 |ewList (|&P->Next|
|00002220| 2c 31 4c 29 3b 0a 09 09 | 20 20 43 6f 72 72 65 63 |,1L);...| Correc|
|00002230| 74 20 3d 20 21 53 79 73 | 45 72 72 6f 72 20 26 26 |t = !Sys|Error &&|
|00002240| 20 49 6e 53 69 6d 70 6c | 65 20 28 46 2c 26 28 50 | InSimpl|e (F,&(P|
|00002250| 3d 50 2d 3e 4e 65 78 74 | 29 2d 3e 56 61 6c 2c 4e |=P->Next|)->Val,N|
|00002260| 49 4c 29 3b 0a 09 09 20 | 20 49 6e 42 6c 61 6e 6b |IL);... | InBlank|
|00002270| 73 20 28 46 29 3b 0a 09 | 20 20 20 20 20 20 20 7d |s (F);..| }|
|00002280| 20 77 68 69 6c 65 20 28 | 43 6f 72 72 65 63 74 20 | while (|Correct |
|00002290| 26 26 20 49 73 54 6f 6b | 20 28 46 2c 22 7c 22 29 |&& IsTok| (F,"|")|
|000022a0| 29 3b 0a 09 20 20 20 20 | 7d 0a 09 20 20 20 20 72 |);.. |}.. r|
|000022b0| 65 74 75 72 6e 20 4d 61 | 6b 65 46 6f 72 6d 20 28 |eturn Ma|keForm (|
|000022c0| 43 6f 72 72 65 63 74 2c | 46 6f 72 6d 54 61 62 6c |Correct,|FormTabl|
|000022d0| 65 5b 4e 4f 44 45 5f 43 | 6f 6d 70 5d 2e 46 6f 72 |e[NODE_C|omp].For|
|000022e0| 6d 4e 6f 64 65 2c 52 2c | 49 6e 4f 75 74 29 3b 0a |mNode,R,|InOut);.|
|000022f0| 09 20 7d 0a 20 20 20 20 | 20 20 7d 0a 20 20 20 7d |. }. | }. }|
|00002300| 0a 0a 2f 2a 0a 20 2a 20 | 49 6e 44 65 66 0a 20 2a |../*. * |InDef. *|
|00002310| 0a 20 2a 20 49 6e 70 75 | 74 20 61 20 66 75 6e 63 |. * Inpu|t a func|
|00002320| 74 69 6f 6e 20 64 65 66 | 69 6e 69 74 69 6f 6e 0a |tion def|inition.|
|00002330| 20 2a 0a 20 2a 20 49 6e | 70 75 74 0a 20 2a 20 20 | *. * In|put. * |
|00002340| 20 20 20 20 46 75 6e 4e | 61 6d 65 20 3d 20 4e 61 | FunN|ame = Na|
|00002350| 6d 65 20 6f 66 20 66 75 | 6e 63 74 69 6f 6e 0a 20 |me of fu|nction. |
|00002360| 2a 20 4f 75 74 70 75 74 | 0a 20 2a 20 20 20 20 20 |* Output|. * |
|00002370| 20 49 6e 4f 75 74 20 3d | 20 66 75 6e 63 74 69 6f | InOut =| functio|
|00002380| 6e 20 64 65 66 69 6e 69 | 74 69 6f 6e 0a 20 2a 20 |n defini|tion. * |
|00002390| 20 20 20 20 20 72 65 73 | 75 6c 74 20 3d 20 31 20 | res|ult = 1 |
|000023a0| 69 66 66 20 73 75 63 63 | 65 73 73 66 75 6c 2c 20 |iff succ|essful, |
|000023b0| 30 20 6f 74 68 65 72 77 | 69 73 65 0a 20 2a 2f 0a |0 otherw|ise. */.|
|000023c0| 62 6f 6f 6c 65 61 6e 20 | 49 6e 44 65 66 20 28 46 |boolean |InDef (F|
|000023d0| 2c 46 75 6e 4e 61 6d 65 | 2c 49 6e 4f 75 74 29 0a |,FunName|,InOut).|
|000023e0| 20 20 20 72 65 67 69 73 | 74 65 72 20 49 6e 44 65 | regis|ter InDe|
|000023f0| 73 63 20 2a 46 3b 0a 20 | 20 20 53 74 72 50 74 72 |sc *F;. | StrPtr|
|00002400| 20 46 75 6e 4e 61 6d 65 | 3b 0a 20 20 20 4f 62 6a | FunName|;. Obj|
|00002410| 65 63 74 50 74 72 20 49 | 6e 4f 75 74 3b 0a 20 20 |ectPtr I|nOut;. |
|00002420| 20 7b 0a 20 20 20 20 20 | 20 4f 62 6a 65 63 74 20 | {. | Object |
|00002430| 46 75 6e 2c 53 3b 0a 0a | 20 20 20 20 20 20 46 75 |Fun,S;..| Fu|
|00002440| 6e 2e 54 61 67 20 3d 20 | 42 4f 54 54 4f 4d 3b 0a |n.Tag = |BOTTOM;.|
|00002450| 20 20 20 20 20 20 53 2e | 54 61 67 20 3d 20 42 4f | S.|Tag = BO|
|00002460| 54 54 4f 4d 3b 0a 20 20 | 20 20 20 20 46 2d 3e 49 |TTOM;. | F->I|
|00002470| 6e 44 65 66 46 75 6e 20 | 3d 20 46 75 6e 4e 61 6d |nDefFun |= FunNam|
|00002480| 65 3b 0a 0a 20 20 20 20 | 20 20 49 6e 42 6c 61 6e |e;.. | InBlan|
|00002490| 6b 73 20 28 46 29 3b 0a | 20 20 20 20 20 20 69 66 |ks (F);.| if|
|000024a0| 20 28 21 49 73 54 6f 6b | 20 28 46 2c 22 44 45 46 | (!IsTok| (F,"DEF|
|000024b0| 22 29 29 20 72 65 74 75 | 72 6e 20 49 6e 45 72 72 |")) retu|rn InErr|
|000024c0| 6f 72 20 28 46 2c 22 44 | 45 46 20 65 78 70 65 63 |or (F,"D|EF expec|
|000024d0| 74 65 64 22 29 3b 0a 20 | 20 20 20 20 20 65 6c 73 |ted");. | els|
|000024e0| 65 20 7b 0a 09 20 49 6e | 42 6c 61 6e 6b 73 20 28 |e {.. In|Blanks (|
|000024f0| 46 29 3b 0a 09 20 28 76 | 6f 69 64 29 20 49 6e 53 |F);.. (v|oid) InS|
|00002500| 74 72 69 6e 67 20 28 46 | 2c 26 53 2c 4e 6f 64 65 |tring (F|,&S,Node|
|00002510| 44 65 6c 69 6d 2c 30 29 | 3b 0a 09 20 69 66 20 28 |Delim,0)|;.. if (|
|00002520| 53 74 72 43 6f 6d 70 20 | 28 53 2e 53 74 72 69 6e |StrComp |(S.Strin|
|00002530| 67 2c 46 75 6e 4e 61 6d | 65 29 29 0a 09 20 20 20 |g,FunNam|e)).. |
|00002540| 20 28 76 6f 69 64 29 20 | 49 6e 45 72 72 6f 72 20 | (void) |InError |
|00002550| 28 46 2c 22 44 65 66 69 | 6e 69 74 69 6f 6e 20 6e |(F,"Defi|nition n|
|00002560| 61 6d 65 20 77 72 6f 6e | 67 22 29 3b 0a 09 20 65 |ame wron|g");.. e|
|00002570| 6c 73 65 20 7b 0a 09 20 | 20 20 20 49 6e 42 6c 61 |lse {.. | InBla|
|00002580| 6e 6b 73 20 28 46 29 3b | 0a 09 20 20 20 20 69 66 |nks (F);|.. if|
|00002590| 20 28 21 49 73 54 6f 6b | 20 28 46 2c 22 41 53 22 | (!IsTok| (F,"AS"|
|000025a0| 29 29 20 28 76 6f 69 64 | 29 20 49 6e 45 72 72 6f |)) (void|) InErro|
|000025b0| 72 20 28 46 2c 22 41 53 | 20 65 78 70 65 63 74 65 |r (F,"AS| expecte|
|000025c0| 64 22 29 3b 0a 09 20 20 | 20 20 65 6c 73 65 20 7b |d");.. | else {|
|000025d0| 0a 09 20 20 20 20 20 20 | 20 49 6e 42 6c 61 6e 6b |.. | InBlank|
|000025e0| 73 20 28 46 29 3b 0a 09 | 20 20 20 20 20 20 20 69 |s (F);..| i|
|000025f0| 66 20 28 49 6e 43 6f 6d | 70 20 28 46 2c 26 46 75 |f (InCom|p (F,&Fu|
|00002600| 6e 2c 4e 49 4c 29 29 20 | 7b 0a 09 09 20 20 49 6e |n,NIL)) |{... In|
|00002610| 42 6c 61 6e 6b 73 20 28 | 46 29 3b 0a 09 09 20 20 |Blanks (|F);... |
|00002620| 69 66 20 28 21 49 73 54 | 6f 6b 20 28 46 2c 22 3b |if (!IsT|ok (F,";|
|00002630| 22 29 29 20 28 76 6f 69 | 64 29 20 49 6e 45 72 72 |")) (voi|d) InErr|
|00002640| 6f 72 20 28 46 2c 22 73 | 65 6d 69 63 6f 6c 6f 6e |or (F,"s|emicolon|
|00002650| 20 65 78 70 65 63 74 65 | 64 22 29 3b 0a 09 09 20 | expecte|d");... |
|00002660| 20 65 6c 73 65 20 7b 0a | 09 09 20 20 20 20 20 49 | else {.|.. I|
|00002670| 6e 42 6c 61 6e 6b 73 20 | 28 46 29 3b 0a 09 09 20 |nBlanks |(F);... |
|00002680| 20 20 20 20 69 66 20 28 | 2a 46 2d 3e 49 6e 50 74 | if (|*F->InPt|
|00002690| 72 29 20 28 76 6f 69 64 | 29 20 49 6e 45 72 72 6f |r) (void|) InErro|
|000026a0| 72 20 28 46 2c 22 65 6e | 64 20 6f 66 20 66 69 6c |r (F,"en|d of fil|
|000026b0| 65 20 65 78 70 65 63 74 | 65 64 22 29 3b 0a 09 09 |e expect|ed");...|
|000026c0| 20 20 20 20 20 65 6c 73 | 65 20 7b 0a 09 09 09 52 | els|e {....R|
|000026d0| 65 70 54 61 67 20 28 26 | 53 2c 42 4f 54 54 4f 4d |epTag (&|S,BOTTOM|
|000026e0| 29 3b 0a 09 09 09 43 6f | 70 79 4f 62 6a 65 63 74 |);....Co|pyObject|
|000026f0| 20 28 49 6e 4f 75 74 2c | 26 46 75 6e 29 3b 0a 09 | (InOut,|&Fun);..|
|00002700| 09 09 52 65 70 54 61 67 | 20 28 26 46 75 6e 2c 42 |..RepTag| (&Fun,B|
|00002710| 4f 54 54 4f 4d 29 3b 0a | 09 09 09 72 65 74 75 72 |OTTOM);.|...retur|
|00002720| 6e 20 31 3b 0a 09 09 20 | 20 20 20 20 7d 0a 09 09 |n 1;... | }...|
|00002730| 20 20 7d 0a 09 20 20 20 | 20 20 20 20 7d 0a 09 20 | }.. | }.. |
|00002740| 20 20 20 7d 0a 09 20 7d | 0a 20 20 20 20 20 20 7d | }.. }|. }|
|00002750| 0a 20 20 20 20 20 20 52 | 65 70 54 61 67 20 28 26 |. R|epTag (&|
|00002760| 53 2c 42 4f 54 54 4f 4d | 29 3b 0a 20 20 20 20 20 |S,BOTTOM|);. |
|00002770| 20 52 65 70 54 61 67 20 | 28 26 46 75 6e 2c 42 4f | RepTag |(&Fun,BO|
|00002780| 54 54 4f 4d 29 3b 0a 20 | 20 20 20 20 20 72 65 74 |TTOM);. | ret|
|00002790| 75 72 6e 20 30 3b 0a 20 | 20 20 7d 0a 0a 0a 2f 2a |urn 0;. | }.../*|
|000027a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000027b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000027c0| 2a 20 69 6e 66 75 6e 2e | 63 20 2a 2a 2a 2a 2a 2a |* infun.|c ******|
|000027d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000027e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2f 0a 0a 53 |********|****/..S|
|000027f0| 48 41 52 5f 45 4f 46 0a | 69 66 20 74 65 73 74 20 |HAR_EOF.|if test |
|00002800| 2d 66 20 27 69 6e 74 65 | 72 70 2f 69 6e 69 6d 70 |-f 'inte|rp/inimp|
|00002810| 6f 72 74 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |ort.c'.t|hen..ech|
|00002820| 6f 20 73 68 61 72 3a 20 | 6f 76 65 72 2d 77 72 69 |o shar: |over-wri|
|00002830| 74 69 6e 67 20 65 78 69 | 73 74 69 6e 67 20 66 69 |ting exi|sting fi|
|00002840| 6c 65 20 22 27 69 6e 74 | 65 72 70 2f 69 6e 69 6d |le "'int|erp/inim|
|00002850| 70 6f 72 74 2e 63 27 22 | 0a 66 69 0a 63 61 74 20 |port.c'"|.fi.cat |
|00002860| 3c 3c 20 5c 53 48 41 52 | 5f 45 4f 46 20 3e 20 27 |<< \SHAR|_EOF > '|
|00002870| 69 6e 74 65 72 70 2f 69 | 6e 69 6d 70 6f 72 74 2e |interp/i|nimport.|
|00002880| 63 27 0a 0c 0a 2f 2a 2a | 2a 2a 2a 2a 20 69 6e 69 |c'.../**|**** ini|
|00002890| 6d 70 6f 72 74 2e 63 20 | 2a 2a 2a 2a 2a 2a 2a 2a |mport.c |********|
|000028a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2f 0a 2f 2a |********|****/./*|
|000028d0| 2a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |* | |
|000028e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000028f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002910| 20 20 20 2a 2a 2f 0a 2f | 2a 2a 20 20 20 20 20 20 | **/./|** |
|00002920| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 55 6e | | Un|
|00002930| 69 76 65 72 73 69 74 79 | 20 6f 66 20 49 6c 6c 69 |iversity| of Illi|
|00002940| 6e 6f 69 73 20 20 20 20 | 20 20 20 20 20 20 20 20 |nois | |
|00002950| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2a 2f 0a | | **/.|
|00002960| 2f 2a 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/** | |
|00002970| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002980| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002990| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000029a0| 20 20 20 20 20 2a 2a 2f | 0a 2f 2a 2a 20 20 20 20 | **/|./** |
|000029b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 44 65 70 61 | | Depa|
|000029c0| 72 74 6d 65 6e 74 20 6f | 66 20 43 6f 6d 70 75 74 |rtment o|f Comput|
|000029d0| 65 72 20 53 63 69 65 6e | 63 65 20 20 20 20 20 20 |er Scien|ce |
|000029e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2a | | **|
|000029f0| 2f 0a 2f 2a 2a 20 20 20 | 20 20 20 20 20 20 20 20 |/./** | |
|00002a00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002a10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002a20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002a30| 20 20 20 20 20 20 20 2a | 2a 2f 0a 2f 2a 2a 20 20 | *|*/./** |
|00002a40| 20 54 6f 6f 6c 3a 20 49 | 46 50 20 20 20 20 20 20 | Tool: I|FP |
|00002a50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002a60| 20 20 20 56 65 72 73 69 | 6f 6e 3a 20 30 2e 35 20 | Versi|on: 0.5 |
|00002a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002a80| 2a 2a 2f 0a 2f 2a 2a 20 | 20 20 20 20 20 20 20 20 |**/./** | |
|00002a90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002aa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ab0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ac0| 20 20 20 20 20 20 20 20 | 20 2a 2a 2f 0a 2f 2a 2a | | **/./**|
|00002ad0| 20 20 20 41 75 74 68 6f | 72 3a 20 20 41 72 63 68 | Autho|r: Arch|
|00002ae0| 20 44 2e 20 52 6f 62 69 | 73 6f 6e 20 20 20 20 20 | D. Robi|son |
|00002af0| 20 20 20 20 20 44 61 74 | 65 3a 20 20 20 4d 61 79 | Dat|e: May|
|00002b00| 20 31 2c 20 31 39 38 35 | 20 20 20 20 20 20 20 20 | 1, 1985| |
|00002b10| 20 20 2a 2a 2f 0a 2f 2a | 2a 20 20 20 20 20 20 20 | **/./*|* |
|00002b20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002b30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002b40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002b50| 20 20 20 20 20 20 20 20 | 20 20 20 2a 2a 2f 0a 2f | | **/./|
|00002b60| 2a 2a 20 20 20 52 65 76 | 69 73 65 64 20 62 79 3a |** Rev|ised by:|
|00002b70| 20 41 72 63 68 20 44 2e | 20 52 6f 62 69 73 6f 6e | Arch D.| Robison|
|00002b80| 20 20 20 20 20 20 20 44 | 61 74 65 3a 20 20 4f 63 | D|ate: Oc|
|00002b90| 74 20 32 38 2c 20 31 39 | 38 35 20 20 20 20 20 20 |t 28, 19|85 |
|00002ba0| 20 20 20 20 2a 2a 2f 0a | 2f 2a 2a 20 20 20 20 20 | **/.|/** |
|00002bb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002bc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002bd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002be0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2a 2f | | **/|
|00002bf0| 0a 2f 2a 2a 20 20 20 50 | 72 69 6e 63 69 70 61 6c |./** P|rincipal|
|00002c00| 20 49 6e 76 65 73 74 69 | 67 61 74 6f 72 73 3a 20 | Investi|gators: |
|00002c10| 50 72 6f 66 2e 20 52 2e | 20 48 2e 20 43 61 6d 70 |Prof. R.| H. Camp|
|00002c20| 62 65 6c 6c 20 20 20 20 | 20 20 20 20 20 20 20 20 |bell | |
|00002c30| 20 20 20 20 20 20 2a 2a | 2f 0a 2f 2a 2a 20 20 20 | **|/./** |
|00002c40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002c50| 20 20 20 20 20 20 20 20 | 20 50 72 6f 66 2e 20 57 | | Prof. W|
|00002c60| 2e 20 4a 2e 20 4b 75 62 | 69 74 7a 20 20 20 20 20 |. J. Kub|itz |
|00002c70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00002c80| 2a 2f 0a 2f 2a 2a 20 20 | 20 20 20 20 20 20 20 20 |*/./** | |
|00002c90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ca0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002cb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002cc0| 20 20 20 20 20 20 20 20 | 2a 2a 2f 0a 2f 2a 2a 20 | |**/./** |
|00002cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ce0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002cf0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002d00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002d10| 20 2a 2a 2f 0a 2f 2a 2a | 2d 2d 2d 2d 2d 2d 2d 2d | **/./**|--------|
|00002d20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2a 2a 2f 0a 2f 2a |--------|--**/./*|
|00002d60| 2a 20 20 20 28 43 29 20 | 43 6f 70 79 72 69 67 68 |* (C) |Copyrigh|
|00002d70| 74 20 31 39 38 37 20 20 | 55 6e 69 76 65 72 73 69 |t 1987 |Universi|
|00002d80| 74 79 20 6f 66 20 49 6c | 6c 69 6e 6f 69 73 20 42 |ty of Il|linois B|
|00002d90| 6f 61 72 64 20 6f 66 20 | 54 72 75 73 74 65 65 73 |oard of |Trustees|
|00002da0| 20 20 20 2a 2a 2f 0a 2f | 2a 2a 20 20 20 20 20 20 | **/./|** |
|00002db0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002dc0| 20 41 6c 6c 20 52 69 67 | 68 74 73 20 52 65 73 65 | All Rig|hts Rese|
|00002dd0| 72 76 65 64 2e 20 20 20 | 20 20 20 20 20 20 20 20 |rved. | |
|00002de0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2a 2f 0a | | **/.|
|00002df0| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00002e00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e30| 2a 2a 2a 2a 2a 2a 2a 2f | 0a 0a 0a 23 69 6e 63 6c |*******/|...#incl|
|00002e40| 75 64 65 20 3c 73 74 64 | 69 6f 2e 68 3e 0a 23 69 |ude <std|io.h>.#i|
|00002e50| 6e 63 6c 75 64 65 20 3c | 63 74 79 70 65 2e 68 3e |nclude <|ctype.h>|
|00002e60| 0a 23 69 6e 63 6c 75 64 | 65 20 22 73 74 72 75 63 |.#includ|e "struc|
|00002e70| 74 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 6e |t.h".#in|clude "n|
|00002e80| 6f 64 65 2e 68 22 0a 23 | 69 6e 63 6c 75 64 65 20 |ode.h".#|include |
|00002e90| 22 73 74 72 69 6e 67 2e | 68 22 0a 23 69 6e 63 6c |"string.|h".#incl|
|00002ea0| 75 64 65 20 22 69 6e 6f | 62 2e 68 22 0a 0a 2f 2a |ude "ino|b.h"../*|
|00002eb0| 0a 20 2a 20 44 6f 75 62 | 6c 65 44 6f 74 0a 20 2a |. * Doub|leDot. *|
|00002ec0| 0a 20 2a 20 41 70 70 65 | 6e 64 20 61 20 22 2e 2e |. * Appe|nd a "..|
|00002ed0| 22 20 74 6f 20 70 61 74 | 68 20 6c 69 73 74 20 62 |" to pat|h list b|
|00002ee0| 79 20 64 65 6c 65 74 69 | 6e 67 20 6c 61 73 74 20 |y deleti|ng last |
|00002ef0| 65 6c 65 6d 65 6e 74 2e | 0a 20 2a 20 20 20 20 20 |element.|. * |
|00002f00| 20 20 0a 20 2a 20 49 6e | 70 75 74 0a 20 2a 20 20 | . * In|put. * |
|00002f10| 20 20 20 20 2a 46 20 3d | 20 66 69 6c 65 20 64 65 | *F =| file de|
|00002f20| 73 63 72 69 70 74 6f 72 | 0a 20 2a 20 20 20 20 20 |scriptor|. * |
|00002f30| 20 2a 43 20 3d 20 70 6f | 69 6e 74 65 72 20 74 6f | *C = po|inter to|
|00002f40| 20 70 61 74 68 20 6c 69 | 73 74 20 0a 20 2a 0a 20 | path li|st . *. |
|00002f50| 2a 20 4f 75 74 70 75 74 | 0a 20 2a 20 20 20 20 20 |* Output|. * |
|00002f60| 20 72 65 73 75 6c 74 20 | 3d 20 70 6f 69 6e 74 65 | result |= pointe|
|00002f70| 72 20 74 6f 20 6c 61 73 | 74 20 6e 75 6c 6c 20 66 |r to las|t null f|
|00002f80| 69 65 6c 64 2c 20 6e 75 | 6c 6c 20 69 66 20 65 72 |ield, nu|ll if er|
|00002f90| 72 6f 72 2e 0a 20 2a 2f | 0a 4d 65 74 61 50 74 72 |ror.. */|.MetaPtr|
|00002fa0| 20 44 6f 75 62 6c 65 44 | 6f 74 20 28 46 2c 43 29 | DoubleD|ot (F,C)|
|00002fb0| 20 20 20 20 20 20 20 20 | 20 20 20 0a 20 20 20 49 | | . I|
|00002fc0| 6e 44 65 73 63 20 2a 46 | 3b 0a 20 20 20 72 65 67 |nDesc *F|;. reg|
|00002fd0| 69 73 74 65 72 20 4d 65 | 74 61 50 74 72 20 43 3b |ister Me|taPtr C;|
|00002fe0| 0a 20 20 20 7b 0a 20 20 | 20 20 20 20 72 65 67 69 |. {. | regi|
|00002ff0| 73 74 65 72 20 4d 65 74 | 61 50 74 72 20 41 3b 0a |ster Met|aPtr A;.|
|00003000| 0a 20 20 20 20 20 20 69 | 66 20 28 2a 43 20 3d 3d |. i|f (*C ==|
|00003010| 20 4e 55 4c 4c 29 20 7b | 0a 09 20 28 76 6f 69 64 | NULL) {|.. (void|
|00003020| 29 20 49 6e 45 72 72 6f | 72 20 28 46 2c 22 54 6f |) InErro|r (F,"To|
|00003030| 6f 20 6d 61 6e 79 20 2e | 2e 27 73 2e 22 29 3b 0a |o many .|.'s.");.|
|00003040| 09 20 72 65 74 75 72 6e | 20 4e 55 4c 4c 3b 0a 20 |. return| NULL;. |
|00003050| 20 20 20 20 20 7d 20 65 | 6c 73 65 20 7b 20 20 20 | } e|lse { |
|00003060| 20 20 20 20 20 2f 2a 20 | 52 65 6d 6f 76 65 20 6c | /* |Remove l|
|00003070| 61 73 74 20 65 6c 65 6d | 65 6e 74 20 66 72 6f 6d |ast elem|ent from|
|00003080| 20 70 61 74 68 20 6c 69 | 73 74 20 52 20 2a 2f 0a | path li|st R */.|
|00003090| 09 20 64 6f 20 7b 0a 09 | 20 20 20 20 41 20 3d 20 |. do {..| A = |
|000030a0| 43 3b 0a 09 20 20 20 20 | 43 20 3d 20 26 28 2a 41 |C;.. |C = &(*A|
|000030b0| 29 2d 3e 4e 65 78 74 3b | 0a 09 20 7d 20 77 68 69 |)->Next;|.. } whi|
|000030c0| 6c 65 20 28 2a 43 20 21 | 3d 20 4e 55 4c 4c 29 3b |le (*C !|= NULL);|
|000030d0| 0a 09 20 44 65 6c 4c 50 | 74 72 20 28 2a 41 29 3b |.. DelLP|tr (*A);|
|000030e0| 0a 09 20 2a 41 20 3d 20 | 4e 55 4c 4c 3b 0a 09 20 |.. *A = |NULL;.. |
|000030f0| 72 65 74 75 72 6e 20 41 | 3b 0a 20 20 20 20 20 20 |return A|;. |
|00003100| 7d 0a 20 20 20 7d 0a 0a | 2f 2a 0a 20 2a 20 4e 6f |}. }..|/*. * No|
|00003110| 64 65 44 65 6c 69 6d 20 | 69 73 20 74 68 65 20 73 |deDelim |is the s|
|00003120| 65 74 20 6f 66 20 70 61 | 74 68 6e 61 6d 65 20 64 |et of pa|thname d|
|00003130| 65 6c 69 6d 69 74 65 72 | 73 2e 20 20 4e 6f 74 65 |elimiter|s. Note|
|00003140| 20 74 68 61 74 20 27 3e | 27 20 61 6e 64 20 27 3c | that '>|' and '<|
|00003150| 27 20 61 72 65 20 6e 6f | 74 0a 20 2a 20 69 6e 20 |' are no|t. * in |
|00003160| 74 68 65 20 73 65 74 20 | 73 69 6e 63 65 20 74 68 |the set |since th|
|00003170| 65 79 20 61 72 65 20 28 | 70 65 72 76 65 72 73 65 |ey are (|perverse|
|00003180| 6c 79 29 20 6c 65 67 61 | 6c 20 66 75 6e 63 74 69 |ly) lega|l functi|
|00003190| 6f 6e 20 6e 61 6d 65 73 | 2e 20 20 0a 20 2a 2f 0a |on names|. . */.|
|000031a0| 63 68 61 72 20 4e 6f 64 | 65 44 65 6c 69 6d 5b 5d |char Nod|eDelim[]|
|000031b0| 20 3d 20 22 20 2c 5b 5d | 28 29 7b 7d 7c 3b 3a 2f | = " ,[]|(){}|;:/|
|000031c0| 5c 74 5c 6e 22 3b 0a 0a | 2f 2a 0a 20 2a 20 49 6e |\t\n";..|/*. * In|
|000031d0| 4e 6f 64 65 0a 20 2a 0a | 20 2a 20 49 6e 70 75 74 |Node. *.| * Input|
|000031e0| 20 61 20 70 61 74 68 2e | 20 20 41 20 70 61 74 68 | a path.| A path|
|000031f0| 20 6d 61 79 20 72 65 70 | 72 65 73 65 6e 74 20 61 | may rep|resent a|
|00003200| 20 6d 6f 64 75 6c 65 2c | 20 66 75 6e 63 74 69 6f | module,| functio|
|00003210| 6e 2c 20 6f 72 20 66 75 | 6e 63 74 69 6f 6e 61 6c |n, or fu|nctional|
|00003220| 0a 20 2a 20 76 61 72 69 | 61 62 6c 65 2e 20 20 4c |. * vari|able. L|
|00003230| 6f 63 61 6c 20 66 75 6e | 63 74 69 6f 6e 73 20 61 |ocal fun|ctions a|
|00003240| 72 65 20 6c 69 6e 6b 65 | 64 20 69 66 20 70 6f 73 |re linke|d if pos|
|00003250| 73 69 62 6c 65 20 74 6f | 20 73 61 76 65 20 74 69 |sible to| save ti|
|00003260| 6d 65 20 61 6e 64 20 73 | 70 61 63 65 2e 0a 20 2a |me and s|pace.. *|
|00003270| 0a 20 2a 20 54 68 65 20 | 45 42 4e 46 20 70 72 6f |. * The |EBNF pro|
|00003280| 64 75 63 74 69 6f 6e 20 | 64 65 66 69 6e 69 74 69 |duction |definiti|
|00003290| 6f 6e 20 66 6f 72 20 61 | 20 6e 6f 64 65 20 69 73 |on for a| node is|
|000032a0| 3a 0a 20 2a 0a 20 2a 09 | 5b 22 2f 22 5d 20 73 74 |:. *. *.|["/"] st|
|000032b0| 72 69 6e 67 20 7b 20 22 | 2f 22 20 28 73 74 72 69 |ring { "|/" (stri|
|000032c0| 6e 67 20 7c 20 22 2e 2e | 22 29 20 7d 0a 20 2a 0a |ng | "..|") }. *.|
|000032d0| 20 2a 20 49 6e 70 75 74 | 0a 20 2a 09 2a 46 20 3d | * Input|. *.*F =|
|000032e0| 20 69 6e 70 75 74 20 64 | 65 73 63 72 69 70 74 6f | input d|escripto|
|000032f0| 72 20 70 6f 69 6e 74 69 | 6e 67 20 74 6f 20 70 61 |r pointi|ng to pa|
|00003300| 74 68 0a 20 2a 09 45 6e | 76 20 3d 20 65 6e 76 69 |th. *.En|v = envi|
|00003310| 72 6f 6e 6d 65 6e 74 0a | 20 2a 0a 20 2a 20 4f 75 |ronment.| *. * Ou|
|00003320| 74 70 75 74 0a 20 2a 20 | 20 20 20 20 20 49 6e 4f |tput. * | InO|
|00003330| 75 74 20 3d 20 6e 6f 64 | 65 20 28 70 61 74 68 20 |ut = nod|e (path |
|00003340| 6c 69 73 74 20 6f 72 20 | 6e 6f 64 65 20 66 6f 72 |list or |node for|
|00003350| 6d 61 74 29 20 6f 72 20 | 66 75 6e 63 74 69 6f 6e |mat) or |function|
|00003360| 61 6c 20 76 61 72 69 61 | 62 6c 65 20 28 73 74 72 |al varia|ble (str|
|00003370| 69 6e 67 29 0a 20 2a 09 | 2a 46 20 3d 20 69 6e 70 |ing). *.|*F = inp|
|00003380| 75 74 20 64 65 73 63 72 | 69 70 74 6f 72 20 70 6f |ut descr|iptor po|
|00003390| 69 6e 74 69 6e 67 20 74 | 6f 20 6e 65 78 74 20 74 |inting t|o next t|
|000033a0| 6f 6b 65 6e 20 61 66 74 | 65 72 20 70 61 74 68 0a |oken aft|er path.|
|000033b0| 20 2a 0a 20 2a 20 41 20 | 53 79 73 45 72 72 6f 72 | *. * A |SysError|
|000033c0| 20 6d 61 79 20 6f 63 63 | 75 72 2c 20 69 6e 20 77 | may occ|ur, in w|
|000033d0| 68 69 63 68 20 63 61 73 | 65 20 49 6e 4f 75 74 20 |hich cas|e InOut |
|000033e0| 69 73 20 75 6e 63 68 61 | 6e 67 65 64 2e 0a 20 2a |is uncha|nged.. *|
|000033f0| 2f 0a 62 6f 6f 6c 65 61 | 6e 20 49 6e 4e 6f 64 65 |/.boolea|n InNode|
|00003400| 20 28 46 2c 49 6e 4f 75 | 74 2c 45 6e 76 29 0a 20 | (F,InOu|t,Env). |
|00003410| 20 20 49 6e 44 65 73 63 | 20 2a 46 3b 0a 20 20 20 | InDesc| *F;. |
|00003420| 4f 62 6a 65 63 74 50 74 | 72 20 49 6e 4f 75 74 3b |ObjectPt|r InOut;|
|00003430| 0a 20 20 20 4c 69 73 74 | 50 74 72 20 45 6e 76 3b |. List|Ptr Env;|
|00003440| 0a 20 20 20 7b 0a 20 20 | 20 20 20 20 4c 69 73 74 |. {. | List|
|00003450| 50 74 72 20 52 20 3d 20 | 4e 55 4c 4c 3b 20 20 20 |Ptr R = |NULL; |
|00003460| 20 20 20 20 20 2f 2a 20 | 70 61 74 68 20 6c 69 73 | /* |path lis|
|00003470| 74 20 61 63 63 75 6d 75 | 6c 61 74 6f 72 20 20 20 |t accumu|lator |
|00003480| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003490| 20 20 20 20 2a 2f 0a 20 | 20 20 20 20 20 72 65 67 | */. | reg|
|000034a0| 69 73 74 65 72 20 4d 65 | 74 61 50 74 72 20 41 20 |ister Me|taPtr A |
|000034b0| 3d 20 26 52 3b 20 2f 2a | 20 70 6f 69 6e 74 65 72 |= &R; /*| pointer|
|000034c0| 20 74 6f 20 4e 65 78 74 | 20 66 69 65 6c 64 20 61 | to Next| field a|
|000034d0| 74 20 65 6e 64 20 6f 66 | 20 61 63 63 75 6d 75 6c |t end of| accumul|
|000034e0| 61 74 6f 72 20 2a 2f 0a | 20 20 20 20 20 20 72 65 |ator */.| re|
|000034f0| 67 69 73 74 65 72 20 4e | 6f 64 65 50 74 72 20 4e |gister N|odePtr N|
|00003500| 3b 0a 20 20 20 20 20 20 | 62 6f 6f 6c 65 61 6e 20 |;. |boolean |
|00003510| 46 69 72 73 74 53 6c 61 | 73 68 3b 0a 20 20 20 0a |FirstSla|sh;. .|
|00003520| 20 20 20 20 20 20 69 66 | 20 28 44 65 62 75 67 20 | if| (Debug |
|00003530| 26 20 44 65 62 75 67 50 | 61 72 73 65 29 20 70 72 |& DebugP|arse) pr|
|00003540| 69 6e 74 66 20 28 22 49 | 6e 4e 6f 64 65 3a 20 27 |intf ("I|nNode: '|
|00003550| 25 73 27 22 2c 46 2d 3e | 49 6e 50 74 72 29 3b 20 |%s'",F->|InPtr); |
|00003560| 0a 20 20 20 20 20 20 69 | 66 20 28 21 28 46 69 72 |. i|f (!(Fir|
|00003570| 73 74 53 6c 61 73 68 20 | 3d 20 2a 46 2d 3e 49 6e |stSlash |= *F->In|
|00003580| 50 74 72 20 3d 3d 20 27 | 2f 27 29 29 20 7b 0a 0a |Ptr == '|/')) {..|
|00003590| 09 20 69 66 20 28 49 73 | 54 6f 6b 20 28 46 2c 22 |. if (Is|Tok (F,"|
|000035a0| 2e 2e 22 29 29 20 7b 0a | 09 20 20 20 20 69 66 20 |..")) {.|. if |
|000035b0| 28 46 2d 3e 49 6e 44 65 | 66 4d 6f 64 20 21 3d 20 |(F->InDe|fMod != |
|000035c0| 4e 55 4c 4c 29 20 52 20 | 3d 20 4d 61 6b 65 50 61 |NULL) R |= MakePa|
|000035d0| 74 68 20 28 46 2d 3e 49 | 6e 44 65 66 4d 6f 64 29 |th (F->I|nDefMod)|
|000035e0| 3b 0a 09 20 20 20 20 69 | 66 20 28 4e 55 4c 4c 20 |;.. i|f (NULL |
|000035f0| 3d 3d 20 28 41 20 3d 20 | 44 6f 75 62 6c 65 44 6f |== (A = |DoubleDo|
|00003600| 74 20 28 46 2c 26 52 29 | 29 29 20 67 6f 74 6f 20 |t (F,&R)|)) goto |
|00003610| 45 72 72 6f 72 3b 0a 09 | 20 7d 20 65 6c 73 65 20 |Error;..| } else |
|00003620| 7b 0a 0a 09 20 20 20 20 | 4f 62 6a 65 63 74 20 53 |{... |Object S|
|00003630| 3b 20 09 09 09 09 20 20 | 20 20 20 20 2f 2a 20 72 |; .... | /* r|
|00003640| 65 6c 61 74 69 76 65 20 | 70 61 74 68 20 2a 2f 0a |elative |path */.|
|00003650| 09 20 20 20 20 53 2e 54 | 61 67 20 3d 20 42 4f 54 |. S.T|ag = BOT|
|00003660| 54 4f 4d 3b 0a 09 20 20 | 20 20 69 66 20 28 4e 55 |TOM;.. | if (NU|
|00003670| 4c 4c 20 3d 3d 20 49 6e | 53 74 72 69 6e 67 20 28 |LL == In|String (|
|00003680| 46 2c 26 53 2c 4e 6f 64 | 65 44 65 6c 69 6d 2c 30 |F,&S,Nod|eDelim,0|
|00003690| 29 29 20 7b 0a 09 20 20 | 20 20 20 20 20 69 66 20 |)) {.. | if |
|000036a0| 28 21 53 79 73 45 72 72 | 6f 72 29 20 28 76 6f 69 |(!SysErr|or) (voi|
|000036b0| 64 29 20 49 6e 45 72 72 | 6f 72 20 28 46 2c 22 70 |d) InErr|or (F,"p|
|000036c0| 61 74 68 20 65 78 70 65 | 63 74 65 64 22 29 3b 0a |ath expe|cted");.|
|000036d0| 09 20 20 20 20 20 20 20 | 67 6f 74 6f 20 45 72 72 |. |goto Err|
|000036e0| 6f 72 3b 0a 09 20 20 20 | 20 7d 09 0a 09 20 20 20 |or;.. | }... |
|000036f0| 20 69 66 20 28 21 49 73 | 54 6f 6b 20 28 46 2c 22 | if (!Is|Tok (F,"|
|00003700| 2f 22 29 29 20 7b 0a 0a | 09 20 20 20 20 20 20 20 |/")) {..|. |
|00003710| 66 6f 72 20 28 3b 20 45 | 6e 76 21 3d 4e 55 4c 4c |for (; E|nv!=NULL|
|00003720| 3b 20 45 6e 76 3d 45 6e | 76 2d 3e 4e 65 78 74 29 |; Env=En|v->Next)|
|00003730| 20 0a 09 09 20 20 69 66 | 20 28 4f 62 45 71 75 61 | ... if| (ObEqua|
|00003740| 6c 20 28 26 45 6e 76 2d | 3e 56 61 6c 2c 26 53 29 |l (&Env-|>Val,&S)|
|00003750| 29 20 7b 0a 09 09 20 20 | 20 20 20 52 65 70 4f 62 |) {... | RepOb|
|00003760| 6a 65 63 74 20 28 49 6e | 4f 75 74 2c 26 45 6e 76 |ject (In|Out,&Env|
|00003770| 2d 3e 56 61 6c 29 3b 20 | 20 20 20 20 2f 2a 20 66 |->Val); | /* f|
|00003780| 75 6e 63 74 69 6f 6e 61 | 6c 20 76 61 72 69 61 62 |unctiona|l variab|
|00003790| 6c 65 20 2a 2f 0a 09 09 | 20 20 20 20 20 72 65 74 |le */...| ret|
|000037a0| 75 72 6e 20 31 3b 0a 09 | 09 20 20 7d 0a 0a 09 20 |urn 1;..|. }... |
|000037b0| 20 20 20 20 20 20 4e 20 | 3d 20 46 69 6e 64 4e 6f | N |= FindNo|
|000037c0| 64 65 20 28 46 2d 3e 49 | 6e 44 65 66 4d 6f 64 2c |de (F->I|nDefMod,|
|000037d0| 53 2e 53 74 72 69 6e 67 | 29 3b 20 20 20 2f 2a 20 |S.String|); /* |
|000037e0| 6c 6f 63 61 6c 20 66 75 | 6e 63 74 69 6f 6e 20 2a |local fu|nction *|
|000037f0| 2f 0a 09 20 20 20 20 20 | 20 20 69 66 20 28 4e 20 |/.. | if (N |
|00003800| 21 3d 20 4e 55 4c 4c 29 | 20 7b 0a 09 09 20 20 69 |!= NULL)| {... i|
|00003810| 66 20 28 4e 2d 3e 4e 6f | 64 65 54 79 70 65 20 3d |f (N->No|deType =|
|00003820| 3d 20 49 4d 50 4f 52 54 | 29 20 7b 0a 0a 09 09 20 |= IMPORT|) {.... |
|00003830| 20 20 20 20 2f 2a 20 49 | 6d 70 6f 72 74 65 64 20 | /* I|mported |
|00003840| 66 75 6e 63 74 69 6f 6e | 20 2d 20 72 65 73 6f 6c |function| - resol|
|00003850| 76 65 20 61 6c 69 61 73 | 20 2a 2f 0a 09 09 20 20 |ve alias| */... |
|00003860| 20 20 20 52 65 70 4f 62 | 6a 65 63 74 20 28 49 6e | RepOb|ject (In|
|00003870| 4f 75 74 2c 26 4e 2d 3e | 4e 6f 64 65 44 61 74 61 |Out,&N->|NodeData|
|00003880| 2e 4e 6f 64 65 49 6d 70 | 2e 49 6d 70 44 65 66 29 |.NodeImp|.ImpDef)|
|00003890| 3b 0a 0a 09 09 20 20 7d | 20 65 6c 73 65 20 7b 20 |;.... }| else { |
|000038a0| 2f 2a 20 4c 6f 63 61 6c | 20 66 75 6e 63 74 69 6f |/* Local| functio|
|000038b0| 6e 20 61 6c 72 65 61 64 | 79 20 6c 69 6e 6b 65 64 |n alread|y linked|
|000038c0| 20 2a 2f 0a 20 20 20 20 | 20 0a 09 09 20 20 20 20 | */. | ... |
|000038d0| 20 52 65 70 54 61 67 20 | 28 49 6e 4f 75 74 2c 4e | RepTag |(InOut,N|
|000038e0| 4f 44 45 29 3b 0a 09 09 | 20 20 20 20 20 49 6e 4f |ODE);...| InO|
|000038f0| 75 74 2d 3e 4e 6f 64 65 | 20 3d 20 43 6f 70 79 4e |ut->Node| = CopyN|
|00003900| 50 74 72 20 28 4e 29 3b | 0a 09 09 20 20 7d 0a 09 |Ptr (N);|... }..|
|00003910| 09 20 20 52 65 70 54 61 | 67 20 28 26 53 2c 42 4f |. RepTa|g (&S,BO|
|00003920| 54 54 4f 4d 29 3b 0a 09 | 09 20 20 72 65 74 75 72 |TTOM);..|. retur|
|00003930| 6e 20 31 3b 0a 09 20 20 | 20 20 20 20 20 7d 0a 09 |n 1;.. | }..|
|00003940| 20 20 20 20 7d 0a 09 20 | 20 20 20 69 66 20 28 46 | }.. | if (F|
|00003950| 2d 3e 49 6e 44 65 66 4d | 6f 64 20 21 3d 20 4e 55 |->InDefM|od != NU|
|00003960| 4c 4c 29 20 52 20 3d 20 | 4d 61 6b 65 50 61 74 68 |LL) R = |MakePath|
|00003970| 20 28 46 2d 3e 49 6e 44 | 65 66 4d 6f 64 29 3b 0a | (F->InD|efMod);.|
|00003980| 09 20 20 20 20 77 68 69 | 6c 65 20 28 2a 41 20 21 |. whi|le (*A !|
|00003990| 3d 20 4e 55 4c 4c 29 20 | 41 20 3d 20 26 28 2a 41 |= NULL) |A = &(*A|
|000039a0| 29 2d 3e 4e 65 78 74 3b | 0a 09 20 20 20 20 4e 65 |)->Next;|.. Ne|
|000039b0| 77 4c 69 73 74 20 28 41 | 2c 31 4c 29 3b 0a 09 20 |wList (A|,1L);.. |
|000039c0| 20 20 20 28 2a 41 29 2d | 3e 56 61 6c 2e 54 61 67 | (*A)-|>Val.Tag|
|000039d0| 20 3d 20 53 54 52 49 4e | 47 3b 0a 09 20 20 20 20 | = STRIN|G;.. |
|000039e0| 28 2a 41 29 2d 3e 56 61 | 6c 2e 53 74 72 69 6e 67 |(*A)->Va|l.String|
|000039f0| 20 3d 20 53 2e 53 74 72 | 69 6e 67 3b 0a 09 20 7d | = S.Str|ing;.. }|
|00003a00| 0a 20 20 20 20 20 20 7d | 0a 0a 20 20 20 20 20 20 |. }|.. |
|00003a10| 77 68 69 6c 65 20 28 49 | 73 54 6f 6b 20 28 46 2c |while (I|sTok (F,|
|00003a20| 22 2f 22 29 29 20 7b 0a | 09 20 69 66 20 28 49 73 |"/")) {.|. if (Is|
|00003a30| 54 6f 6b 20 28 46 2c 22 | 2e 2e 22 29 29 0a 09 20 |Tok (F,"|..")).. |
|00003a40| 20 20 20 69 66 20 28 4e | 55 4c 4c 20 3d 3d 20 28 | if (N|ULL == (|
|00003a50| 41 20 3d 20 44 6f 75 62 | 6c 65 44 6f 74 20 28 46 |A = Doub|leDot (F|
|00003a60| 2c 26 52 29 29 29 20 72 | 65 74 75 72 6e 20 30 3b |,&R))) r|eturn 0;|
|00003a70| 0a 09 20 20 20 20 65 6c | 73 65 20 63 6f 6e 74 69 |.. el|se conti|
|00003a80| 6e 75 65 3b 0a 09 20 65 | 6c 73 65 20 7b 0a 09 20 |nue;.. e|lse {.. |
|00003a90| 20 20 20 4e 65 77 4c 69 | 73 74 20 28 41 2c 31 4c | NewLi|st (A,1L|
|00003aa0| 29 3b 0a 09 20 20 20 20 | 69 66 20 28 53 79 73 45 |);.. |if (SysE|
|00003ab0| 72 72 6f 72 29 20 67 6f | 74 6f 20 45 72 72 6f 72 |rror) go|to Error|
|00003ac0| 3b 0a 09 20 20 20 20 69 | 66 20 28 4e 55 4c 4c 20 |;.. i|f (NULL |
|00003ad0| 3d 3d 20 49 6e 53 74 72 | 69 6e 67 20 28 46 2c 26 |== InStr|ing (F,&|
|00003ae0| 28 2a 41 29 2d 3e 56 61 | 6c 2c 4e 6f 64 65 44 65 |(*A)->Va|l,NodeDe|
|00003af0| 6c 69 6d 2c 30 29 29 20 | 7b 0a 09 20 20 20 20 20 |lim,0)) |{.. |
|00003b00| 20 20 69 66 20 28 53 79 | 73 45 72 72 6f 72 29 20 | if (Sy|sError) |
|00003b10| 67 6f 74 6f 20 45 72 72 | 6f 72 3b 0a 09 20 20 20 |goto Err|or;.. |
|00003b20| 20 20 20 20 65 6c 73 65 | 20 69 66 20 28 2a 46 2d | else| if (*F-|
|00003b30| 3e 49 6e 50 74 72 20 21 | 3d 20 27 2f 27 20 26 26 |>InPtr !|= '/' &&|
|00003b40| 20 46 69 72 73 74 53 6c | 61 73 68 29 20 7b 0a 09 | FirstSl|ash) {..|
|00003b50| 09 20 20 28 76 6f 69 64 | 29 20 44 6f 75 62 6c 65 |. (void|) Double|
|00003b60| 44 6f 74 20 28 46 2c 26 | 52 29 3b 0a 09 09 20 20 |Dot (F,&|R);... |
|00003b70| 62 72 65 61 6b 3b 0a 09 | 20 20 20 20 20 20 20 7d |break;..| }|
|00003b80| 20 65 6c 73 65 20 7b 0a | 09 09 20 20 28 76 6f 69 | else {.|.. (voi|
|00003b90| 64 29 20 49 6e 45 72 72 | 6f 72 20 28 46 2c 22 49 |d) InErr|or (F,"I|
|00003ba0| 6e 76 61 6c 69 64 20 70 | 61 74 68 20 6e 61 6d 65 |nvalid p|ath name|
|00003bb0| 22 29 3b 0a 09 09 20 20 | 67 6f 74 6f 20 45 72 72 |");... |goto Err|
|00003bc0| 6f 72 3b 0a 09 20 20 20 | 20 20 20 20 7d 0a 09 20 |or;.. | }.. |
|00003bd0| 20 20 20 7d 0a 09 20 20 | 20 20 41 20 3d 20 26 28 | }.. | A = &(|
|00003be0| 2a 41 29 2d 3e 4e 65 78 | 74 3b 0a 09 20 7d 0a 09 |*A)->Nex|t;.. }..|
|00003bf0| 20 46 69 72 73 74 53 6c | 61 73 68 20 3d 20 30 3b | FirstSl|ash = 0;|
|00003c00| 0a 20 20 20 20 20 20 7d | 0a 0a 20 20 20 20 20 20 |. }|.. |
|00003c10| 52 65 70 54 61 67 20 28 | 49 6e 4f 75 74 2c 4c 49 |RepTag (|InOut,LI|
|00003c20| 53 54 29 3b 0a 20 20 20 | 20 20 20 49 6e 4f 75 74 |ST);. | InOut|
|00003c30| 2d 3e 4c 69 73 74 20 3d | 20 52 3b 0a 20 20 20 20 |->List =| R;. |
|00003c40| 20 20 72 65 74 75 72 6e | 20 31 3b 0a 0a 45 72 72 | return| 1;..Err|
|00003c50| 6f 72 3a 0a 20 20 20 20 | 20 20 44 65 6c 4c 50 74 |or:. | DelLPt|
|00003c60| 72 20 28 52 29 3b 0a 20 | 20 20 20 20 20 72 65 74 |r (R);. | ret|
|00003c70| 75 72 6e 20 30 3b 0a 20 | 20 20 7d 0a 0a 2f 2a 0a |urn 0;. | }../*.|
|00003c80| 20 2a 20 49 6e 49 6d 70 | 6f 72 74 0a 20 2a 0a 20 | * InImp|ort. *. |
|00003c90| 2a 20 49 6e 70 75 74 20 | 66 72 6f 6d 20 61 6e 20 |* Input |from an |
|00003ca0| 69 6d 70 6f 72 74 20 66 | 69 6c 65 2e 0a 20 2a 0a |import f|ile.. *.|
|00003cb0| 20 2a 20 41 6e 20 69 6d | 70 6f 72 74 20 66 69 6c | * An im|port fil|
|00003cc0| 65 20 68 61 73 20 74 68 | 65 20 66 6f 6c 6c 6f 77 |e has th|e follow|
|00003cd0| 69 6e 67 20 66 6f 72 6d | 61 74 3a 0a 20 2a 0a 20 |ing form|at:. *. |
|00003ce0| 2a 20 20 20 20 20 20 7b | 20 27 46 52 4f 4d 27 20 |* {| 'FROM' |
|00003cf0| 70 61 74 68 20 27 49 4d | 50 4f 52 54 27 20 73 74 |path 'IM|PORT' st|
|00003d00| 72 69 6e 67 20 7b 2c 73 | 74 72 69 6e 67 7d 20 27 |ring {,s|tring} '|
|00003d10| 3b 27 20 7d 0a 20 2a 0a | 20 2a 20 49 6e 70 75 74 |;' }. *.| * Input|
|00003d20| 0a 20 2a 20 20 20 20 20 | 20 46 20 3d 20 69 6e 70 |. * | F = inp|
|00003d30| 75 74 0a 20 2a 20 20 20 | 20 20 20 4d 20 3d 20 70 |ut. * | M = p|
|00003d40| 6f 69 6e 74 65 72 20 74 | 6f 20 6d 6f 64 75 6c 65 |ointer t|o module|
|00003d50| 20 6e 6f 64 65 0a 20 2a | 2f 0a 76 6f 69 64 20 49 | node. *|/.void I|
|00003d60| 6e 49 6d 70 6f 72 74 20 | 28 46 2c 4d 29 0a 20 20 |nImport |(F,M). |
|00003d70| 20 72 65 67 69 73 74 65 | 72 20 49 6e 44 65 73 63 | registe|r InDesc|
|00003d80| 20 2a 46 3b 0a 20 20 20 | 72 65 67 69 73 74 65 72 | *F;. |register|
|00003d90| 20 4e 6f 64 65 50 74 72 | 20 4d 3b 0a 20 20 20 7b | NodePtr| M;. {|
|00003da0| 0a 20 20 20 20 20 20 4f | 62 6a 65 63 74 20 50 61 |. O|bject Pa|
|00003db0| 74 68 2c 44 65 66 3b 0a | 20 20 20 20 20 20 72 65 |th,Def;.| re|
|00003dc0| 67 69 73 74 65 72 20 4e | 6f 64 65 50 74 72 20 4e |gister N|odePtr N|
|00003dd0| 3b 0a 20 20 20 20 20 20 | 4d 65 74 61 50 74 72 20 |;. |MetaPtr |
|00003de0| 41 3b 0a 0a 20 20 20 20 | 20 20 46 2d 3e 49 6e 44 |A;.. | F->InD|
|00003df0| 65 66 46 75 6e 20 3d 20 | 4e 55 4c 4c 3b 0a 20 20 |efFun = |NULL;. |
|00003e00| 20 20 20 20 50 61 74 68 | 2e 54 61 67 20 3d 20 42 | Path|.Tag = B|
|00003e10| 4f 54 54 4f 4d 3b 0a 20 | 20 20 20 20 20 44 65 66 |OTTOM;. | Def|
|00003e20| 2e 54 61 67 20 3d 20 42 | 4f 54 54 4f 4d 3b 0a 0a |.Tag = B|OTTOM;..|
|00003e30| 20 20 20 20 20 20 77 68 | 69 6c 65 20 28 2a 46 2d | wh|ile (*F-|
|00003e40| 3e 49 6e 50 74 72 29 20 | 7b 0a 0a 09 20 69 66 20 |>InPtr) |{... if |
|00003e50| 28 21 49 73 54 6f 6b 20 | 28 46 2c 22 46 52 4f 4d |(!IsTok |(F,"FROM|
|00003e60| 22 29 29 20 7b 0a 09 20 | 20 20 20 28 76 6f 69 64 |")) {.. | (void|
|00003e70| 29 20 49 6e 45 72 72 6f | 72 20 28 46 2c 22 46 52 |) InErro|r (F,"FR|
|00003e80| 4f 4d 20 65 78 70 65 63 | 74 65 64 22 29 3b 0a 09 |OM expec|ted");..|
|00003e90| 20 20 20 20 62 72 65 61 | 6b 3b 0a 09 20 7d 0a 0a | brea|k;.. }..|
|00003ea0| 09 20 28 76 6f 69 64 29 | 20 49 6e 4e 6f 64 65 20 |. (void)| InNode |
|00003eb0| 28 46 2c 26 50 61 74 68 | 2c 4e 49 4c 29 3b 20 0a |(F,&Path|,NIL); .|
|00003ec0| 09 20 69 66 20 28 21 49 | 73 54 6f 6b 20 28 46 2c |. if (!I|sTok (F,|
|00003ed0| 22 49 4d 50 4f 52 54 22 | 29 29 20 7b 0a 09 20 20 |"IMPORT"|)) {.. |
|00003ee0| 20 20 28 76 6f 69 64 29 | 20 49 6e 45 72 72 6f 72 | (void)| InError|
|00003ef0| 20 28 46 2c 22 49 4d 50 | 4f 52 54 20 65 78 70 65 | (F,"IMP|ORT expe|
|00003f00| 63 74 65 64 22 29 3b 0a | 09 20 20 20 20 62 72 65 |cted");.|. bre|
|00003f10| 61 6b 3b 0a 09 20 7d 0a | 0a 09 20 77 68 69 6c 65 |ak;.. }.|.. while|
|00003f20| 20 28 31 29 20 7b 0a 0a | 09 20 20 20 20 69 66 20 | (1) {..|. if |
|00003f30| 28 4e 55 4c 4c 20 3d 3d | 20 49 6e 53 74 72 69 6e |(NULL ==| InStrin|
|00003f40| 67 20 28 46 2c 26 44 65 | 66 2c 22 20 2c 3b 5c 6e |g (F,&De|f," ,;\n|
|00003f50| 22 2c 30 29 29 20 7b 0a | 09 20 20 20 20 20 20 20 |",0)) {.|. |
|00003f60| 69 66 20 28 21 53 79 73 | 45 72 72 6f 72 29 20 28 |if (!Sys|Error) (|
|00003f70| 76 6f 69 64 29 20 49 6e | 45 72 72 6f 72 20 28 46 |void) In|Error (F|
|00003f80| 2c 22 66 75 6e 63 74 69 | 6f 6e 20 6e 61 6d 65 20 |,"functi|on name |
|00003f90| 65 78 70 65 63 74 65 64 | 22 29 3b 0a 09 20 20 20 |expected|");.. |
|00003fa0| 20 20 20 20 67 6f 74 6f | 20 52 65 74 75 72 6e 3b | goto| Return;|
|00003fb0| 0a 09 20 20 20 20 7d 0a | 0a 09 20 20 20 20 4e 20 |.. }.|.. N |
|00003fc0| 3d 20 4d 61 6b 65 43 68 | 69 6c 64 20 28 4d 2c 44 |= MakeCh|ild (M,D|
|00003fd0| 65 66 2e 53 74 72 69 6e | 67 29 3b 0a 0a 09 20 20 |ef.Strin|g);... |
|00003fe0| 20 20 73 77 69 74 63 68 | 20 28 4e 2d 3e 4e 6f 64 | switch| (N->Nod|
|00003ff0| 65 54 79 70 65 29 20 7b | 0a 0a 09 20 20 20 20 20 |eType) {|... |
|00004000| 20 20 63 61 73 65 20 49 | 4d 50 4f 52 54 3a 0a 09 | case I|MPORT:..|
|00004010| 09 20 20 28 76 6f 69 64 | 29 20 49 6e 45 72 72 6f |. (void|) InErro|
|00004020| 72 20 28 46 2c 22 64 75 | 70 6c 69 63 61 74 65 20 |r (F,"du|plicate |
|00004030| 69 6d 70 6f 72 74 65 64 | 20 69 64 65 6e 74 69 66 |imported| identif|
|00004040| 69 65 72 22 29 3b 0a 09 | 09 20 20 62 72 65 61 6b |ier");..|. break|
|00004050| 3b 0a 0a 09 20 20 20 20 | 20 20 20 63 61 73 65 20 |;... | case |
|00004060| 44 45 46 3a 0a 09 09 20 | 20 69 66 20 28 4e 2d 3e |DEF:... | if (N->|
|00004070| 4e 52 65 66 20 3e 20 31 | 29 20 7b 0a 09 09 20 20 |NRef > 1|) {... |
|00004080| 20 20 20 28 76 6f 69 64 | 29 20 49 6e 45 72 72 6f | (void|) InErro|
|00004090| 72 20 28 46 2c 22 69 64 | 65 6e 74 69 66 69 65 73 |r (F,"id|entifies|
|000040a0| 20 66 75 6e 63 74 69 6f | 6e 20 65 6c 73 65 77 68 | functio|n elsewh|
|000040b0| 65 72 65 22 29 3b 0a 09 | 09 20 20 20 20 20 62 72 |ere");..|. br|
|000040c0| 65 61 6b 3b 0a 09 09 20 | 20 7d 20 2f 2a 20 65 6c |eak;... | } /* el|
|000040d0| 73 65 20 63 6f 6e 74 69 | 6e 75 65 20 6f 6e 20 64 |se conti|nue on d|
|000040e0| 6f 77 6e 20 74 6f 20 4e | 45 57 4e 4f 44 45 20 2a |own to N|EWNODE *|
|000040f0| 2f 0a 0a 09 20 20 20 20 | 20 20 20 63 61 73 65 20 |/... | case |
|00004100| 4e 45 57 4e 4f 44 45 3a | 20 7b 0a 09 09 20 20 65 |NEWNODE:| {... e|
|00004110| 78 74 65 72 6e 20 4d 65 | 74 61 50 74 72 20 4d 61 |xtern Me|taPtr Ma|
|00004120| 6b 65 43 6f 70 79 20 28 | 29 3b 0a 09 09 20 20 4e |keCopy (|);... N|
|00004130| 2d 3e 4e 6f 64 65 54 79 | 70 65 20 3d 20 49 4d 50 |->NodeTy|pe = IMP|
|00004140| 4f 52 54 3b 0a 09 09 20 | 20 4e 2d 3e 4e 6f 64 65 |ORT;... | N->Node|
|00004150| 44 61 74 61 2e 4e 6f 64 | 65 49 6d 70 2e 49 6d 70 |Data.Nod|eImp.Imp|
|00004160| 44 65 66 2e 54 61 67 20 | 3d 20 4c 49 53 54 3b 0a |Def.Tag |= LIST;.|
|00004170| 09 09 20 20 41 20 3d 20 | 4d 61 6b 65 43 6f 70 79 |.. A = |MakeCopy|
|00004180| 20 28 26 4e 2d 3e 4e 6f | 64 65 44 61 74 61 2e 4e | (&N->No|deData.N|
|00004190| 6f 64 65 49 6d 70 2e 49 | 6d 70 44 65 66 2e 4c 69 |odeImp.I|mpDef.Li|
|000041a0| 73 74 2c 20 50 61 74 68 | 2e 4c 69 73 74 29 3b 0a |st, Path|.List);.|
|000041b0| 09 09 20 20 4e 65 77 4c | 69 73 74 20 28 41 2c 31 |.. NewL|ist (A,1|
|000041c0| 4c 29 3b 0a 09 09 20 20 | 52 65 70 4f 62 6a 65 63 |L);... |RepObjec|
|000041d0| 74 20 28 26 28 2a 41 29 | 2d 3e 56 61 6c 2c 26 44 |t (&(*A)|->Val,&D|
|000041e0| 65 66 29 3b 0a 09 09 20 | 20 62 72 65 61 6b 3b 0a |ef);... | break;.|
|000041f0| 09 20 20 20 20 20 20 20 | 7d 0a 09 20 20 20 20 7d |. |}.. }|
|00004200| 0a 09 09 0a 09 20 20 20 | 20 69 66 20 28 49 73 54 |..... | if (IsT|
|00004210| 6f 6b 20 28 46 2c 22 3b | 22 29 29 20 62 72 65 61 |ok (F,";|")) brea|
|00004220| 6b 3b 0a 09 20 20 20 20 | 69 66 20 28 21 49 73 54 |k;.. |if (!IsT|
|00004230| 6f 6b 20 28 46 2c 22 2c | 22 29 29 20 7b 0a 09 20 |ok (F,",|")) {.. |
|00004240| 20 20 20 20 20 20 28 76 | 6f 69 64 29 20 49 6e 45 | (v|oid) InE|
|00004250| 72 72 6f 72 20 28 46 2c | 22 63 6f 6d 6d 61 20 6f |rror (F,|"comma o|
|00004260| 72 20 73 65 6d 69 63 6f | 6c 6f 6e 20 65 78 70 65 |r semico|lon expe|
|00004270| 63 74 65 64 22 29 3b 0a | 09 20 20 20 20 20 20 20 |cted");.|. |
|00004280| 67 6f 74 6f 20 52 65 74 | 75 72 6e 3b 0a 09 20 20 |goto Ret|urn;.. |
|00004290| 20 20 7d 0a 09 20 7d 0a | 20 20 20 20 20 20 7d 0a | }.. }.| }.|
|000042a0| 52 65 74 75 72 6e 3a 0a | 20 20 20 20 20 20 52 65 |Return:.| Re|
|000042b0| 70 54 61 67 20 28 26 50 | 61 74 68 2c 42 4f 54 54 |pTag (&P|ath,BOTT|
|000042c0| 4f 4d 29 3b 0a 20 20 20 | 20 20 20 52 65 70 54 61 |OM);. | RepTa|
|000042d0| 67 20 28 26 44 65 66 2c | 42 4f 54 54 4f 4d 29 3b |g (&Def,|BOTTOM);|
|000042e0| 0a 20 20 20 20 20 20 72 | 65 74 75 72 6e 3b 0a 20 |. r|eturn;. |
|000042f0| 20 20 7d 0a 0a 0a 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a | }.../*|********|
|00004300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004310| 2a 2a 2a 2a 2a 2a 20 69 | 6e 69 6d 70 6f 72 74 2e |****** i|nimport.|
|00004320| 63 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |c ******|********|
|00004330| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004340| 2a 2f 0a 0a 53 48 41 52 | 5f 45 4f 46 0a 69 66 20 |*/..SHAR|_EOF.if |
|00004350| 74 65 73 74 20 2d 66 20 | 27 69 6e 74 65 72 70 2f |test -f |'interp/|
|00004360| 69 6e 6f 62 2e 63 27 0a | 74 68 65 6e 0a 09 65 63 |inob.c'.|then..ec|
|00004370| 68 6f 20 73 68 61 72 3a | 20 6f 76 65 72 2d 77 72 |ho shar:| over-wr|
|00004380| 69 74 69 6e 67 20 65 78 | 69 73 74 69 6e 67 20 66 |iting ex|isting f|
|00004390| 69 6c 65 20 22 27 69 6e | 74 65 72 70 2f 69 6e 6f |ile "'in|terp/ino|
|000043a0| 62 2e 63 27 22 0a 66 69 | 0a 63 61 74 20 3c 3c 20 |b.c'".fi|.cat << |
|000043b0| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 69 6e 74 |\SHAR_EO|F > 'int|
|000043c0| 65 72 70 2f 69 6e 6f 62 | 2e 63 27 0a 0c 0a 2f 2a |erp/inob|.c'.../*|
|000043d0| 2a 2a 2a 2a 2a 20 69 6e | 6f 62 2e 63 20 2a 2a 2a |***** in|ob.c ***|
|000043e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000043f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004400| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004410| 2a 2a 2a 2a 2a 2f 0a 2f | 2a 2a 20 20 20 20 20 20 |*****/./|** |
|00004420| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004430| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004440| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004450| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2a 2f 0a | | **/.|
|00004460| 2f 2a 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/** | |
|00004470| 20 20 20 20 20 20 20 55 | 6e 69 76 65 72 73 69 74 | U|niversit|
|00004480| 79 20 6f 66 20 49 6c 6c | 69 6e 6f 69 73 20 20 20 |y of Ill|inois |
|00004490| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000044a0| 20 20 20 20 20 2a 2a 2f | 0a 2f 2a 2a 20 20 20 20 | **/|./** |
|000044b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000044c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000044d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000044e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2a | | **|
|000044f0| 2f 0a 2f 2a 2a 20 20 20 | 20 20 20 20 20 20 20 20 |/./** | |
|00004500| 20 20 20 20 20 44 65 70 | 61 72 74 6d 65 6e 74 20 | Dep|artment |
|00004510| 6f 66 20 43 6f 6d 70 75 | 74 65 72 20 53 63 69 65 |of Compu|ter Scie|
|00004520| 6e 63 65 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |nce | |
|00004530| 20 20 20 20 20 20 20 2a | 2a 2f 0a 2f 2a 2a 20 20 | *|*/./** |
|00004540| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004550| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004560| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004570| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004580| 2a 2a 2f 0a 2f 2a 2a 20 | 20 20 54 6f 6f 6c 3a 20 |**/./** | Tool: |
|00004590| 49 46 50 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |IFP | |
|000045a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 56 65 72 73 | | Vers|
|000045b0| 69 6f 6e 3a 20 30 2e 35 | 20 20 20 20 20 20 20 20 |ion: 0.5| |
|000045c0| 20 20 20 20 20 20 20 20 | 20 2a 2a 2f 0a 2f 2a 2a | | **/./**|
|000045d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000045e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000045f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004600| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004610| 20 20 2a 2a 2f 0a 2f 2a | 2a 20 20 20 41 75 74 68 | **/./*|* Auth|
|00004620| 6f 72 3a 20 20 41 72 63 | 68 20 44 2e 20 52 6f 62 |or: Arc|h D. Rob|
|00004630| 69 73 6f 6e 20 20 20 20 | 20 20 20 20 20 20 44 61 |ison | Da|
|00004640| 74 65 3a 20 20 20 4d 61 | 79 20 31 2c 20 31 39 38 |te: Ma|y 1, 198|
|00004650| 35 20 20 20 20 20 20 20 | 20 20 20 2a 2a 2f 0a 2f |5 | **/./|
|00004660| 2a 2a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |** | |
|00004670| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004680| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004690| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000046a0| 20 20 20 20 2a 2a 2f 0a | 2f 2a 2a 20 20 20 52 65 | **/.|/** Re|
|000046b0| 76 69 73 65 64 20 62 79 | 3a 20 41 72 63 68 20 44 |vised by|: Arch D|
|000046c0| 2e 20 52 6f 62 69 73 6f | 6e 20 20 20 20 20 20 20 |. Robiso|n |
|000046d0| 44 61 74 65 3a 20 20 20 | 41 75 67 20 36 2c 20 31 |Date: |Aug 6, 1|
|000046e0| 39 38 36 20 20 20 20 20 | 20 20 20 20 20 2a 2a 2f |986 | **/|
|000046f0| 0a 2f 2a 2a 20 20 20 20 | 20 20 20 20 20 20 20 20 |./** | |
|00004700| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004710| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004720| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004730| 20 20 20 20 20 20 2a 2a | 2f 0a 2f 2a 2a 20 20 20 | **|/./** |
|00004740| 50 72 69 6e 63 69 70 61 | 6c 20 49 6e 76 65 73 74 |Principa|l Invest|
|00004750| 69 67 61 74 6f 72 73 3a | 20 50 72 6f 66 2e 20 52 |igators:| Prof. R|
|00004760| 2e 20 48 2e 20 43 61 6d | 70 62 65 6c 6c 20 20 20 |. H. Cam|pbell |
|00004770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00004780| 2a 2f 0a 2f 2a 2a 20 20 | 20 20 20 20 20 20 20 20 |*/./** | |
|00004790| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000047a0| 20 20 50 72 6f 66 2e 20 | 57 2e 20 4a 2e 20 4b 75 | Prof. |W. J. Ku|
|000047b0| 62 69 74 7a 20 20 20 20 | 20 20 20 20 20 20 20 20 |bitz | |
|000047c0| 20 20 20 20 20 20 20 20 | 2a 2a 2f 0a 2f 2a 2a 20 | |**/./** |
|000047d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000047e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000047f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004800| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004810| 20 2a 2a 2f 0a 2f 2a 2a | 20 20 20 20 20 20 20 20 | **/./**| |
|00004820| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004830| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004840| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004850| 20 20 20 20 20 20 20 20 | 20 20 2a 2a 2f 0a 2f 2a | | **/./*|
|00004860| 2a 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |*-------|--------|
|00004870| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004880| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000048a0| 2d 2d 2d 2a 2a 2f 0a 2f | 2a 2a 20 20 20 28 43 29 |---**/./|** (C)|
|000048b0| 20 43 6f 70 79 72 69 67 | 68 74 20 31 39 38 37 20 | Copyrig|ht 1987 |
|000048c0| 20 55 6e 69 76 65 72 73 | 69 74 79 20 6f 66 20 49 | Univers|ity of I|
|000048d0| 6c 6c 69 6e 6f 69 73 20 | 42 6f 61 72 64 20 6f 66 |llinois |Board of|
|000048e0| 20 54 72 75 73 74 65 65 | 73 20 20 20 2a 2a 2f 0a | Trustee|s **/.|
|000048f0| 2f 2a 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/** | |
|00004900| 20 20 20 20 20 20 20 20 | 20 20 41 6c 6c 20 52 69 | | All Ri|
|00004910| 67 68 74 73 20 52 65 73 | 65 72 76 65 64 2e 20 20 |ghts Res|erved. |
|00004920| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004930| 20 20 20 20 20 2a 2a 2f | 0a 2f 2a 2a 2a 2a 2a 2a | **/|./******|
|00004940| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004950| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004970| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004980| 2f 0a 0a 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/../****|********|
|00004990| 2a 2a 2a 20 6f 62 6a 65 | 63 74 20 69 6e 70 75 74 |*** obje|ct input|
|000049a0| 20 70 61 72 73 65 72 20 | 28 72 65 63 75 72 73 69 | parser |(recursi|
|000049b0| 76 65 20 64 65 73 63 65 | 6e 74 29 20 2a 2a 2a 2a |ve desce|nt) ****|
|000049c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0a 0a 0a 23 |********|***/...#|
|000049d0| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|000049e0| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 63 74 79 70 |>.#inclu|de <ctyp|
|000049f0| 65 2e 68 3e 0a 23 69 6e | 63 6c 75 64 65 20 22 73 |e.h>.#in|clude "s|
|00004a00| 74 72 75 63 74 2e 68 22 | 0a 23 69 6e 63 6c 75 64 |truct.h"|.#includ|
|00004a10| 65 20 22 6e 6f 64 65 2e | 68 22 0a 23 69 6e 63 6c |e "node.|h".#incl|
|00004a20| 75 64 65 20 22 73 74 72 | 69 6e 67 2e 68 22 0a 23 |ude "str|ing.h".#|
|00004a30| 69 6e 63 6c 75 64 65 20 | 22 69 6e 6f 62 2e 68 22 |include |"inob.h"|
|00004a40| 0a 0a 2f 2a 0a 20 2a 20 | 4f 62 44 65 6c 69 6d 0a |../*. * |ObDelim.|
|00004a50| 20 2a 0a 20 2a 20 54 68 | 65 73 65 73 20 63 68 61 | *. * Th|eses cha|
|00004a60| 72 61 63 74 65 72 73 20 | 64 65 6c 69 6d 69 74 20 |racters |delimit |
|00004a70| 6f 62 6a 65 63 74 73 2e | 0a 20 2a 20 43 6f 6d 70 |objects.|. * Comp|
|00004a80| 61 72 65 20 77 69 74 68 | 20 4e 6f 64 65 44 65 6c |are with| NodeDel|
|00004a90| 69 6d 20 69 6e 20 69 6e | 69 6d 70 6f 72 74 2e 63 |im in in|import.c|
|00004aa0| 20 0a 20 2a 2f 0a 70 72 | 69 76 61 74 65 20 63 68 | . */.pr|ivate ch|
|00004ab0| 61 72 20 4f 62 44 65 6c | 69 6d 5b 5d 20 3d 20 22 |ar ObDel|im[] = "|
|00004ac0| 20 2c 3c 3e 7c 5b 5d 28 | 29 7b 7d 3b 3a 5c 74 5c | ,<>|[](|){};:\t\|
|00004ad0| 6e 22 3b 0a 0a 2f 2a 0a | 20 2a 20 49 6e 42 6c 61 |n";../*.| * InBla|
|00004ae0| 6e 6b 73 0a 20 2a 0a 20 | 2a 20 53 6b 69 70 20 74 |nks. *. |* Skip t|
|00004af0| 6f 20 66 69 72 73 74 20 | 6e 6f 6e 2d 62 6c 61 6e |o first |non-blan|
|00004b00| 6b 20 63 68 61 72 61 63 | 74 65 72 20 6e 6f 74 20 |k charac|ter not |
|00004b10| 69 6e 20 63 6f 6d 6d 65 | 6e 74 2e 0a 20 2a 0a 20 |in comme|nt.. *. |
|00004b20| 2a 20 49 6e 70 75 74 0a | 20 2a 20 09 46 20 3d 20 |* Input.| * .F = |
|00004b30| 69 6e 70 75 74 20 64 65 | 73 63 72 69 70 74 6f 72 |input de|scriptor|
|00004b40| 0a 20 2a 0a 20 2a 20 4f | 75 74 70 75 74 0a 20 2a |. *. * O|utput. *|
|00004b50| 09 46 20 3d 20 69 6e 70 | 75 74 20 64 65 73 63 72 |.F = inp|ut descr|
|00004b60| 69 70 74 6f 72 20 70 6f | 69 6e 74 69 6e 67 20 74 |iptor po|inting t|
|00004b70| 6f 20 6e 6f 6e 2d 62 6c | 61 6e 6b 20 63 68 61 72 |o non-bl|ank char|
|00004b80| 61 63 74 65 72 0a 20 2a | 2f 0a 76 6f 69 64 20 49 |acter. *|/.void I|
|00004b90| 6e 42 6c 61 6e 6b 73 20 | 28 46 29 0a 20 20 20 72 |nBlanks |(F). r|
|00004ba0| 65 67 69 73 74 65 72 20 | 49 6e 44 65 73 63 20 2a |egister |InDesc *|
|00004bb0| 46 3b 0a 20 20 20 7b 0a | 20 20 20 20 20 20 77 68 |F;. {.| wh|
|00004bc0| 69 6c 65 20 28 31 29 20 | 7b 0a 0a 09 20 77 68 69 |ile (1) |{... whi|
|00004bd0| 6c 65 20 28 31 29 20 7b | 0a 09 20 20 20 20 69 66 |le (1) {|.. if|
|00004be0| 20 28 21 2a 46 2d 3e 49 | 6e 50 74 72 29 0a 09 20 | (!*F->I|nPtr).. |
|00004bf0| 20 20 20 20 20 20 69 66 | 20 28 46 2d 3e 49 6e 4c | if| (F->InL|
|00004c00| 69 6e 65 4e 75 6d 20 3e | 3d 20 30 29 20 0a 09 09 |ineNum >|= 0) ...|
|00004c10| 20 20 69 66 20 28 4e 55 | 4c 4c 20 21 3d 20 66 67 | if (NU|LL != fg|
|00004c20| 65 74 73 20 28 46 2d 3e | 49 6e 42 75 66 2c 49 4e |ets (F->|InBuf,IN|
|00004c30| 42 55 46 53 49 5a 45 2c | 46 2d 3e 49 6e 46 69 6c |BUFSIZE,|F->InFil|
|00004c40| 65 29 29 20 7b 0a 09 09 | 20 20 20 20 20 46 2d 3e |e)) {...| F->|
|00004c50| 49 6e 50 74 72 20 3d 20 | 46 2d 3e 49 6e 42 75 66 |InPtr = |F->InBuf|
|00004c60| 3b 0a 09 09 20 20 20 20 | 20 46 2d 3e 49 6e 4c 69 |;... | F->InLi|
|00004c70| 6e 65 4e 75 6d 2b 2b 3b | 0a 09 09 20 20 7d 0a 09 |neNum++;|... }..|
|00004c80| 20 20 20 20 69 66 20 28 | 21 69 73 73 70 61 63 65 | if (|!isspace|
|00004c90| 20 28 2a 46 2d 3e 49 6e | 50 74 72 29 29 20 62 72 | (*F->In|Ptr)) br|
|00004ca0| 65 61 6b 3b 0a 09 20 20 | 20 20 46 2d 3e 49 6e 50 |eak;.. | F->InP|
|00004cb0| 74 72 2b 2b 3b 0a 09 20 | 7d 0a 0a 09 20 69 66 20 |tr++;.. |}... if |
|00004cc0| 28 2a 46 2d 3e 49 6e 50 | 74 72 20 3d 3d 20 27 28 |(*F->InP|tr == '(|
|00004cd0| 27 20 26 26 20 46 2d 3e | 49 6e 50 74 72 5b 31 5d |' && F->|InPtr[1]|
|00004ce0| 20 3d 3d 20 27 2a 27 29 | 20 7b 0a 09 20 20 20 20 | == '*')| {.. |
|00004cf0| 46 2d 3e 43 6f 6d 4c 65 | 76 65 6c 2b 2b 3b 0a 09 |F->ComLe|vel++;..|
|00004d00| 20 20 20 20 46 2d 3e 49 | 6e 50 74 72 2b 3d 32 3b | F->I|nPtr+=2;|
|00004d10| 0a 09 20 7d 20 65 6c 73 | 65 20 69 66 20 28 2a 46 |.. } els|e if (*F|
|00004d20| 2d 3e 49 6e 50 74 72 20 | 3d 3d 20 27 2a 27 20 26 |->InPtr |== '*' &|
|00004d30| 26 20 46 2d 3e 49 6e 50 | 74 72 5b 31 5d 20 3d 3d |& F->InP|tr[1] ==|
|00004d40| 20 27 29 27 29 20 7b 0a | 09 20 20 20 20 46 2d 3e | ')') {.|. F->|
|00004d50| 43 6f 6d 4c 65 76 65 6c | 2d 2d 3b 0a 09 20 20 20 |ComLevel|--;.. |
|00004d60| 20 46 2d 3e 49 6e 50 74 | 72 2b 3d 32 3b 0a 09 20 | F->InPt|r+=2;.. |
|00004d70| 7d 20 65 6c 73 65 20 69 | 66 20 28 46 2d 3e 43 6f |} else i|f (F->Co|
|00004d80| 6d 4c 65 76 65 6c 20 26 | 26 20 2a 46 2d 3e 49 6e |mLevel &|& *F->In|
|00004d90| 50 74 72 29 20 46 2d 3e | 49 6e 50 74 72 2b 2b 3b |Ptr) F->|InPtr++;|
|00004da0| 0a 09 20 65 6c 73 65 20 | 62 72 65 61 6b 3b 0a 20 |.. else |break;. |
|00004db0| 20 20 20 20 20 7d 0a 20 | 20 20 7d 0a 0a 2f 2a 0a | }. | }../*.|
|00004dc0| 20 2a 20 49 73 54 6f 6b | 0a 20 2a 0a 20 2a 20 43 | * IsTok|. *. * C|
|00004dd0| 68 65 63 6b 20 69 66 20 | 6e 65 78 74 20 74 6f 6b |heck if |next tok|
|00004de0| 65 6e 20 69 6e 20 69 6e | 70 75 74 20 69 73 20 53 |en in in|put is S|
|00004df0| 2e 20 20 53 6b 69 70 20 | 69 66 20 66 6f 75 6e 64 |. Skip |if found|
|00004e00| 2e 0a 20 2a 2f 0a 62 6f | 6f 6c 65 61 6e 20 49 73 |.. */.bo|olean Is|
|00004e10| 54 6f 6b 20 28 46 2c 53 | 29 0a 20 20 20 49 6e 44 |Tok (F,S|). InD|
|00004e20| 65 73 63 20 2a 46 3b 0a | 20 20 20 72 65 67 69 73 |esc *F;.| regis|
|00004e30| 74 65 72 20 63 68 61 72 | 20 2a 53 3b 0a 20 20 20 |ter char| *S;. |
|00004e40| 7b 0a 20 20 20 20 20 20 | 72 65 67 69 73 74 65 72 |{. |register|
|00004e50| 20 63 68 61 72 20 2a 54 | 3b 0a 0a 20 20 20 20 20 | char *T|;.. |
|00004e60| 20 66 6f 72 20 28 54 20 | 3d 20 46 2d 3e 49 6e 50 | for (T |= F->InP|
|00004e70| 74 72 3b 20 2a 53 3b 20 | 53 2b 2b 2c 54 2b 2b 29 |tr; *S; |S++,T++)|
|00004e80| 0a 09 20 69 66 20 28 2a | 53 20 21 3d 20 2a 54 29 |.. if (*|S != *T)|
|00004e90| 20 72 65 74 75 72 6e 20 | 30 3b 0a 0a 20 20 20 20 | return |0;.. |
|00004ea0| 20 20 2f 2a 20 43 68 65 | 63 6b 20 69 66 20 61 6c | /* Che|ck if al|
|00004eb0| 70 68 61 62 65 74 69 63 | 20 74 6f 6b 65 6e 20 69 |phabetic| token i|
|00004ec0| 73 20 70 72 65 66 69 78 | 20 6f 66 20 6c 6f 6e 67 |s prefix| of long|
|00004ed0| 65 72 20 74 6f 6b 65 6e | 20 2a 2f 0a 20 20 20 20 |er token| */. |
|00004ee0| 20 20 69 66 20 28 69 73 | 61 6c 70 68 61 20 28 54 | if (is|alpha (T|
|00004ef0| 5b 2d 31 5d 29 20 26 26 | 20 69 73 61 6c 70 68 61 |[-1]) &&| isalpha|
|00004f00| 20 28 54 5b 30 5d 29 29 | 20 72 65 74 75 72 6e 20 | (T[0]))| return |
|00004f10| 30 3b 20 0a 0a 20 20 20 | 20 20 20 46 2d 3e 49 6e |0; .. | F->In|
|00004f20| 50 74 72 20 3d 20 54 3b | 0a 20 20 20 20 20 20 49 |Ptr = T;|. I|
|00004f30| 6e 42 6c 61 6e 6b 73 20 | 28 46 29 3b 0a 20 20 20 |nBlanks |(F);. |
|00004f40| 20 20 20 72 65 74 75 72 | 6e 20 31 3b 0a 20 20 20 | retur|n 1;. |
|00004f50| 7d 0a 0a 2f 2a 0a 20 2a | 20 49 6e 53 74 72 69 6e |}../*. *| InStrin|
|00004f60| 67 0a 20 2a 0a 20 2a 20 | 49 6e 70 75 74 20 61 20 |g. *. * |Input a |
|00004f70| 73 74 72 69 6e 67 2e 20 | 0a 20 2a 0a 20 2a 20 49 |string. |. *. * I|
|00004f80| 6e 70 75 74 0a 20 2a 20 | 20 20 20 20 20 2a 46 20 |nput. * | *F |
|00004f90| 3d 20 69 6e 70 75 74 20 | 64 65 73 63 72 69 70 74 |= input |descript|
|00004fa0| 6f 72 20 70 6f 69 6e 74 | 69 6e 67 20 74 6f 20 66 |or point|ing to f|
|00004fb0| 69 72 73 74 20 63 68 61 | 72 61 63 74 65 72 20 6f |irst cha|racter o|
|00004fc0| 66 20 73 74 72 69 6e 67 | 0a 20 2a 20 20 20 20 20 |f string|. * |
|00004fd0| 20 44 65 6c 69 6d 20 3d | 20 73 74 72 69 6e 67 20 | Delim =| string |
|00004fe0| 6f 66 20 6e 6f 6e 2d 61 | 6c 70 68 61 6e 75 6d 65 |of non-a|lphanume|
|00004ff0| 72 69 63 20 64 65 6c 69 | 6d 69 74 65 72 73 0a 20 |ric deli|miters. |
|00005000| 2a 20 20 20 20 20 20 51 | 75 6f 74 65 64 20 3d 20 |* Q|uoted = |
|00005010| 73 6b 69 70 20 63 6c 6f | 73 69 6e 67 20 64 65 6c |skip clo|sing del|
|00005020| 69 6d 69 74 65 72 0a 20 | 2a 0a 20 2a 20 4f 75 74 |imiter. |*. * Out|
|00005030| 70 75 74 0a 20 2a 20 20 | 20 20 20 20 2a 46 20 3d |put. * | *F =|
|00005040| 20 69 6e 70 75 74 20 64 | 65 73 63 72 69 70 74 6f | input d|escripto|
|00005050| 72 20 70 6f 69 6e 74 69 | 6e 67 20 74 6f 20 6e 65 |r pointi|ng to ne|
|00005060| 78 74 20 74 6f 6b 65 6e | 20 61 66 74 65 72 20 73 |xt token| after s|
|00005070| 74 72 69 6e 67 0a 20 2a | 20 20 20 20 20 20 58 20 |tring. *| X |
|00005080| 3d 20 73 74 72 69 6e 67 | 20 6f 62 6a 65 63 74 0a |= string| object.|
|00005090| 20 2a 20 20 20 20 20 20 | 72 65 73 75 6c 74 20 3d | * |result =|
|000050a0| 20 70 6f 69 6e 74 65 72 | 20 74 6f 20 73 74 72 69 | pointer| to stri|
|000050b0| 6e 67 2c 20 4e 55 4c 4c | 20 69 66 20 53 79 73 45 |ng, NULL| if SysE|
|000050c0| 72 72 6f 72 20 6f 72 20 | 65 6d 70 74 79 20 73 74 |rror or |empty st|
|000050d0| 72 69 6e 67 2e 0a 20 2a | 0a 20 2a 20 41 20 53 79 |ring.. *|. * A Sy|
|000050e0| 73 45 72 72 6f 72 20 6d | 61 79 20 6f 63 63 75 72 |sError m|ay occur|
|000050f0| 2c 20 69 6e 20 77 68 69 | 63 68 20 63 61 73 65 20 |, in whi|ch case |
|00005100| 58 20 3d 20 62 6f 74 74 | 6f 6d 2e 0a 20 2a 2f 0a |X = bott|om.. */.|
|00005110| 53 74 72 50 74 72 20 49 | 6e 53 74 72 69 6e 67 20 |StrPtr I|nString |
|00005120| 28 46 2c 58 2c 44 65 6c | 69 6d 2c 51 75 6f 74 65 |(F,X,Del|im,Quote|
|00005130| 64 29 0a 20 20 20 72 65 | 67 69 73 74 65 72 20 49 |d). re|gister I|
|00005140| 6e 44 65 73 63 20 2a 46 | 3b 0a 20 20 20 4f 62 6a |nDesc *F|;. Obj|
|00005150| 65 63 74 50 74 72 20 58 | 3b 0a 20 20 20 63 68 61 |ectPtr X|;. cha|
|00005160| 72 20 2a 44 65 6c 69 6d | 3b 0a 20 20 20 62 6f 6f |r *Delim|;. boo|
|00005170| 6c 65 61 6e 20 51 75 6f | 74 65 64 3b 0a 20 20 20 |lean Quo|ted;. |
|00005180| 7b 0a 20 20 20 20 20 20 | 43 68 61 72 50 74 72 20 |{. |CharPtr |
|00005190| 55 3b 0a 20 20 20 20 20 | 20 72 65 67 69 73 74 65 |U;. | registe|
|000051a0| 72 20 63 68 61 72 20 43 | 3b 0a 0a 20 20 20 20 20 |r char C|;.. |
|000051b0| 20 52 65 70 54 61 67 20 | 28 58 2c 53 54 52 49 4e | RepTag |(X,STRIN|
|000051c0| 47 29 3b 0a 20 20 20 20 | 20 20 58 2d 3e 53 74 72 |G);. | X->Str|
|000051d0| 69 6e 67 20 3d 20 4e 55 | 4c 4c 3b 0a 20 20 20 20 |ing = NU|LL;. |
|000051e0| 20 20 43 50 49 6e 69 74 | 20 28 26 55 2c 26 58 2d | CPInit| (&U,&X-|
|000051f0| 3e 53 74 72 69 6e 67 29 | 3b 0a 20 20 20 20 20 20 |>String)|;. |
|00005200| 64 6f 20 7b 0a 20 20 20 | 20 20 20 20 20 20 65 78 |do {. | ex|
|00005210| 74 65 72 6e 20 63 68 61 | 72 20 2a 69 6e 64 65 78 |tern cha|r *index|
|00005220| 20 28 29 3b 0a 09 20 43 | 20 3d 20 2a 46 2d 3e 49 | ();.. C| = *F->I|
|00005230| 6e 50 74 72 2b 2b 3b 0a | 09 20 69 66 20 28 21 69 |nPtr++;.|. if (!i|
|00005240| 73 61 6c 6e 75 6d 20 28 | 43 29 20 26 26 20 4e 55 |salnum (|C) && NU|
|00005250| 4c 4c 20 21 3d 20 69 6e | 64 65 78 20 28 44 65 6c |LL != in|dex (Del|
|00005260| 69 6d 2c 43 29 29 20 43 | 20 3d 20 27 5c 30 27 3b |im,C)) C| = '\0';|
|00005270| 0a 09 20 43 50 41 70 70 | 65 6e 64 20 28 26 55 2c |.. CPApp|end (&U,|
|00005280| 43 29 3b 0a 09 20 69 66 | 20 28 53 79 73 45 72 72 |C);.. if| (SysErr|
|00005290| 6f 72 29 20 7b 52 65 70 | 54 61 67 20 28 58 2c 42 |or) {Rep|Tag (X,B|
|000052a0| 4f 54 54 4f 4d 29 3b 20 | 72 65 74 75 72 6e 20 4e |OTTOM); |return N|
|000052b0| 55 4c 4c 3b 7d 0a 20 20 | 20 20 20 20 7d 20 77 68 |ULL;}. | } wh|
|000052c0| 69 6c 65 20 28 43 29 3b | 0a 20 20 20 20 20 20 69 |ile (C);|. i|
|000052d0| 66 20 28 21 51 75 6f 74 | 65 64 29 20 46 2d 3e 49 |f (!Quot|ed) F->I|
|000052e0| 6e 50 74 72 2d 2d 3b 0a | 20 20 20 20 20 20 49 6e |nPtr--;.| In|
|000052f0| 42 6c 61 6e 6b 73 20 28 | 46 29 3b 0a 20 20 20 20 |Blanks (|F);. |
|00005300| 20 20 72 65 74 75 72 6e | 20 58 2d 3e 53 74 72 69 | return| X->Stri|
|00005310| 6e 67 3b 0a 20 20 20 7d | 0a 0a 0a 2f 2a 0a 20 2a |ng;. }|.../*. *|
|00005320| 20 49 6e 4c 69 73 74 0a | 20 2a 0a 20 2a 20 49 6e | InList.| *. * In|
|00005330| 70 75 74 20 61 20 6c 69 | 73 74 0a 20 2a 0a 20 2a |put a li|st. *. *|
|00005340| 20 49 6e 70 75 74 0a 20 | 2a 20 20 20 20 20 46 20 | Input. |* F |
|00005350| 3d 20 69 6e 70 75 74 20 | 64 65 73 63 72 69 70 74 |= input |descript|
|00005360| 6f 72 20 70 6f 69 6e 74 | 69 6e 67 20 74 6f 20 66 |or point|ing to f|
|00005370| 69 72 73 74 20 74 6f 6b | 65 6e 20 61 66 74 65 72 |irst tok|en after|
|00005380| 20 27 3c 27 0a 20 2a 0a | 20 2a 20 4f 75 74 70 75 | '<'. *.| * Outpu|
|00005390| 74 0a 20 2a 20 20 20 20 | 20 72 65 73 75 6c 74 20 |t. * | result |
|000053a0| 3d 20 74 72 75 65 20 69 | 66 66 20 6e 6f 20 65 72 |= true i|ff no er|
|000053b0| 72 6f 72 20 6f 63 63 75 | 72 73 0a 20 2a 20 20 20 |ror occu|rs. * |
|000053c0| 20 20 2a 58 20 3d 20 73 | 65 71 75 65 6e 63 65 2c | *X = s|equence,|
|000053d0| 20 6f 72 20 75 6e 63 68 | 61 6e 67 65 64 20 69 66 | or unch|anged if|
|000053e0| 20 65 72 72 6f 72 20 6f | 63 63 75 72 73 2e 0a 20 | error o|ccurs.. |
|000053f0| 2a 2f 0a 70 72 69 76 61 | 74 65 20 62 6f 6f 6c 65 |*/.priva|te boole|
|00005400| 61 6e 20 49 6e 4c 69 73 | 74 20 28 46 2c 58 29 0a |an InLis|t (F,X).|
|00005410| 20 20 20 72 65 67 69 73 | 74 65 72 20 49 6e 44 65 | regis|ter InDe|
|00005420| 73 63 20 2a 46 3b 0a 20 | 20 20 4f 62 6a 65 63 74 |sc *F;. | Object|
|00005430| 50 74 72 20 58 3b 0a 20 | 20 20 7b 0a 20 20 20 20 |Ptr X;. | {. |
|00005440| 20 20 4c 69 73 74 50 74 | 72 20 52 3d 4e 55 4c 4c | ListPt|r R=NULL|
|00005450| 3b 0a 20 20 20 20 20 20 | 72 65 67 69 73 74 65 72 |;. |register|
|00005460| 20 4d 65 74 61 50 74 72 | 20 41 20 3d 20 26 52 3b | MetaPtr| A = &R;|
|00005470| 0a 0a 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 21 |.. |while (!|
|00005480| 49 73 54 6f 6b 20 28 46 | 2c 22 3e 22 29 29 20 7b |IsTok (F|,">")) {|
|00005490| 0a 09 20 69 66 20 28 21 | 2a 46 2d 3e 49 6e 50 74 |.. if (!|*F->InPt|
|000054a0| 72 29 20 7b 0a 09 20 20 | 20 20 44 65 6c 4c 50 74 |r) {.. | DelLPt|
|000054b0| 72 20 28 52 29 3b 0a 09 | 20 20 20 20 72 65 74 75 |r (R);..| retu|
|000054c0| 72 6e 20 49 6e 45 72 72 | 6f 72 20 28 46 2c 22 75 |rn InErr|or (F,"u|
|000054d0| 6e 66 69 6e 69 73 68 65 | 64 20 73 65 71 75 65 6e |nfinishe|d sequen|
|000054e0| 63 65 22 29 3b 0a 09 20 | 7d 20 20 20 0a 09 20 4e |ce");.. |} .. N|
|000054f0| 65 77 4c 69 73 74 20 28 | 41 2c 31 4c 29 3b 0a 09 |ewList (|A,1L);..|
|00005500| 20 69 66 20 28 53 79 73 | 45 72 72 6f 72 20 7c 7c | if (Sys|Error |||
|00005510| 20 21 49 6e 4f 62 6a 65 | 63 74 20 28 46 2c 26 28 | !InObje|ct (F,&(|
|00005520| 2a 41 29 2d 3e 56 61 6c | 29 29 20 7b 0a 09 20 20 |*A)->Val|)) {.. |
|00005530| 20 20 44 65 6c 4c 50 74 | 72 20 28 52 29 3b 0a 09 | DelLPt|r (R);..|
|00005540| 20 20 20 20 72 65 74 75 | 72 6e 20 30 3b 0a 09 20 | retu|rn 0;.. |
|00005550| 7d 0a 09 20 41 20 3d 20 | 26 20 28 2a 41 29 2d 3e |}.. A = |& (*A)->|
|00005560| 4e 65 78 74 3b 0a 09 20 | 28 76 6f 69 64 29 20 49 |Next;.. |(void) I|
|00005570| 73 54 6f 6b 20 28 46 2c | 22 2c 22 29 3b 0a 20 20 |sTok (F,|",");. |
|00005580| 20 20 20 20 7d 0a 20 20 | 20 20 20 20 52 65 70 54 | }. | RepT|
|00005590| 61 67 20 28 58 2c 4c 49 | 53 54 29 3b 0a 20 20 20 |ag (X,LI|ST);. |
|000055a0| 20 20 20 58 2d 3e 4c 69 | 73 74 20 3d 20 52 3b 0a | X->Li|st = R;.|
|000055b0| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 31 3b 0a | re|turn 1;.|
|000055c0| 20 20 20 7d 0a 0a 2f 2a | 0a 20 2a 20 49 6e 4f 62 | }../*|. * InOb|
|000055d0| 6a 65 63 74 0a 20 2a 0a | 20 2a 20 52 65 61 64 20 |ject. *.| * Read |
|000055e0| 61 6e 20 6f 62 6a 65 63 | 74 2e 0a 20 2a 0a 20 2a |an objec|t.. *. *|
|000055f0| 20 49 6e 70 75 74 0a 20 | 2a 20 20 20 20 20 20 2a | Input. |* *|
|00005600| 46 20 3d 20 69 6e 70 75 | 74 20 64 65 73 63 72 69 |F = inpu|t descri|
|00005610| 70 74 6f 72 20 70 6f 69 | 6e 74 69 6e 67 20 74 6f |ptor poi|nting to|
|00005620| 20 6f 62 6a 65 63 74 0a | 20 2a 0a 20 2a 20 4f 75 | object.| *. * Ou|
|00005630| 74 70 75 74 0a 20 2a 20 | 20 20 20 20 20 2a 46 20 |tput. * | *F |
|00005640| 3d 20 69 6e 70 75 74 20 | 64 65 73 63 72 69 70 74 |= input |descript|
|00005650| 6f 72 20 70 6f 69 6e 74 | 69 6e 67 20 74 6f 20 6e |or point|ing to n|
|00005660| 65 78 74 20 74 6f 6b 65 | 6e 0a 20 2a 09 72 65 73 |ext toke|n. *.res|
|00005670| 75 6c 74 20 3d 20 74 72 | 75 65 20 69 66 66 20 6f |ult = tr|ue iff o|
|00005680| 62 6a 65 63 74 20 69 73 | 20 72 65 61 64 20 73 75 |bject is| read su|
|00005690| 63 63 65 73 73 66 75 6c | 6c 79 2e 0a 20 2a 0a 20 |ccessful|ly.. *. |
|000056a0| 2a 20 41 20 53 79 73 45 | 72 72 6f 72 20 6d 61 79 |* A SysE|rror may|
|000056b0| 20 6f 63 63 75 72 2c 20 | 69 6e 20 77 68 69 63 68 | occur, |in which|
|000056c0| 20 63 61 73 65 20 58 20 | 69 73 20 75 6e 63 68 61 | case X |is uncha|
|000056d0| 6e 67 65 64 2e 0a 20 2a | 2f 0a 62 6f 6f 6c 65 61 |nged.. *|/.boolea|
|000056e0| 6e 20 49 6e 4f 62 6a 65 | 63 74 20 28 46 2c 58 29 |n InObje|ct (F,X)|
|000056f0| 0a 20 20 20 72 65 67 69 | 73 74 65 72 20 49 6e 44 |. regi|ster InD|
|00005700| 65 73 63 20 2a 46 3b 0a | 20 20 20 72 65 67 69 73 |esc *F;.| regis|
|00005710| 74 65 72 20 4f 62 6a 65 | 63 74 50 74 72 20 58 3b |ter Obje|ctPtr X;|
|00005720| 0a 20 20 20 7b 0a 20 20 | 20 20 20 20 69 66 20 28 |. {. | if (|
|00005730| 49 73 54 6f 6b 20 28 46 | 2c 22 3c 22 29 29 20 72 |IsTok (F|,"<")) r|
|00005740| 65 74 75 72 6e 20 49 6e | 4c 69 73 74 20 28 46 2c |eturn In|List (F,|
|00005750| 58 29 3b 0a 0a 20 20 20 | 20 20 20 65 6c 73 65 20 |X);.. | else |
|00005760| 69 66 20 28 49 73 54 6f | 6b 20 28 46 2c 22 28 22 |if (IsTo|k (F,"("|
|00005770| 29 29 20 7b 0a 0a 09 20 | 28 76 6f 69 64 29 20 49 |)) {... |(void) I|
|00005780| 6e 43 6f 6d 70 20 28 46 | 2c 58 2c 4e 49 4c 29 3b |nComp (F|,X,NIL);|
|00005790| 0a 09 20 69 66 20 28 21 | 49 73 54 6f 6b 20 28 46 |.. if (!|IsTok (F|
|000057a0| 2c 22 29 22 29 29 20 72 | 65 74 75 72 6e 20 49 6e |,")")) r|eturn In|
|000057b0| 45 72 72 6f 72 20 28 46 | 2c 22 27 29 27 20 65 78 |Error (F|,"')' ex|
|000057c0| 70 65 63 74 65 64 22 29 | 3b 0a 0a 20 20 20 20 20 |pected")|;.. |
|000057d0| 20 7d 20 65 6c 73 65 20 | 7b 20 0a 0a 09 20 2f 2a | } else |{ ... /*|
|000057e0| 20 49 6e 70 75 74 20 61 | 74 6f 6d 20 2a 2f 0a 0a | Input a|tom */..|
|000057f0| 09 20 73 74 61 74 69 63 | 20 63 68 61 72 20 44 65 |. static| char De|
|00005800| 6c 69 6d 5b 32 5d 20 3d | 20 7b 27 5c 30 27 2c 27 |lim[2] =| {'\0','|
|00005810| 5c 30 27 7d 3b 0a 09 20 | 2a 44 65 6c 69 6d 20 3d |\0'};.. |*Delim =|
|00005820| 20 2a 46 2d 3e 49 6e 50 | 74 72 3b 0a 0a 09 20 69 | *F->InP|tr;... i|
|00005830| 66 20 28 2a 44 65 6c 69 | 6d 20 3d 3d 20 27 5c 22 |f (*Deli|m == '\"|
|00005840| 27 20 7c 7c 20 2a 44 65 | 6c 69 6d 20 3d 3d 20 27 |' || *De|lim == '|
|00005850| 5c 27 27 29 20 7b 0a 09 | 20 20 20 20 46 2d 3e 49 |\'') {..| F->I|
|00005860| 6e 50 74 72 2b 2b 3b 0a | 09 20 20 20 20 28 76 6f |nPtr++;.|. (vo|
|00005870| 69 64 29 20 49 6e 53 74 | 72 69 6e 67 20 28 46 2c |id) InSt|ring (F,|
|00005880| 58 2c 44 65 6c 69 6d 2c | 31 29 3b 0a 09 20 7d 20 |X,Delim,|1);.. } |
|00005890| 65 6c 73 65 20 7b 0a 0a | 09 20 20 20 20 46 50 69 |else {..|. FPi|
|000058a0| 6e 74 20 4b 3b 0a 09 20 | 20 20 20 72 65 67 69 73 |nt K;.. | regis|
|000058b0| 74 65 72 20 53 74 72 50 | 74 72 20 53 20 3d 20 49 |ter StrP|tr S = I|
|000058c0| 6e 53 74 72 69 6e 67 20 | 28 46 2c 58 2c 4f 62 44 |nString |(F,X,ObD|
|000058d0| 65 6c 69 6d 2c 30 29 3b | 0a 09 20 20 20 20 69 66 |elim,0);|.. if|
|000058e0| 20 28 53 20 3d 3d 20 4e | 55 4c 4c 29 20 72 65 74 | (S == N|ULL) ret|
|000058f0| 75 72 6e 20 53 79 73 45 | 72 72 6f 72 20 7c 7c 20 |urn SysE|rror || |
|00005900| 49 6e 45 72 72 6f 72 20 | 28 46 2c 22 6f 62 6a 65 |InError |(F,"obje|
|00005910| 63 74 20 65 78 70 65 63 | 74 65 64 22 29 3b 0a 09 |ct expec|ted");..|
|00005920| 20 20 20 20 69 66 20 28 | 53 2d 3e 53 74 72 43 68 | if (|S->StrCh|
|00005930| 61 72 5b 31 5d 20 3d 3d | 20 27 5c 30 27 29 0a 09 |ar[1] ==| '\0')..|
|00005940| 20 20 20 20 20 20 20 73 | 77 69 74 63 68 20 28 53 | s|witch (S|
|00005950| 2d 3e 53 74 72 43 68 61 | 72 5b 30 5d 29 20 7b 0a |->StrCha|r[0]) {.|
|00005960| 09 09 20 20 63 61 73 65 | 20 27 66 27 3a 0a 09 09 |.. case| 'f':...|
|00005970| 20 20 20 20 20 52 65 70 | 42 6f 6f 6c 20 28 58 2c | Rep|Bool (X,|
|00005980| 30 29 3b 0a 09 09 20 20 | 20 20 20 72 65 74 75 72 |0);... | retur|
|00005990| 6e 20 31 3b 0a 09 09 20 | 20 63 61 73 65 20 27 74 |n 1;... | case 't|
|000059a0| 27 3a 0a 09 09 20 20 20 | 20 20 52 65 70 42 6f 6f |':... | RepBoo|
|000059b0| 6c 20 28 58 2c 31 29 3b | 0a 09 09 20 20 20 20 20 |l (X,1);|... |
|000059c0| 72 65 74 75 72 6e 20 31 | 3b 0a 09 09 20 20 63 61 |return 1|;... ca|
|000059d0| 73 65 20 27 3f 27 3a 0a | 09 09 20 20 20 20 20 52 |se '?':.|.. R|
|000059e0| 65 70 54 61 67 20 28 58 | 2c 42 4f 54 54 4f 4d 29 |epTag (X|,BOTTOM)|
|000059f0| 3b 0a 09 09 20 20 20 20 | 20 72 65 74 75 72 6e 20 |;... | return |
|00005a00| 31 3b 0a 09 20 20 20 20 | 20 20 20 7d 0a 09 20 20 |1;.. | }.. |
|00005a10| 20 20 69 66 20 28 53 74 | 72 54 6f 46 6c 6f 61 74 | if (St|rToFloat|
|00005a20| 20 28 58 29 20 26 26 20 | 21 47 65 74 46 50 49 6e | (X) && |!GetFPIn|
|00005a30| 74 20 28 58 2c 26 4b 29 | 29 20 7b 0a 09 20 20 20 |t (X,&K)|) {.. |
|00005a40| 20 20 20 20 58 2d 3e 54 | 61 67 20 3d 20 49 4e 54 | X->T|ag = INT|
|00005a50| 3b 0a 09 20 20 20 20 20 | 20 20 58 2d 3e 49 6e 74 |;.. | X->Int|
|00005a60| 20 3d 20 4b 3b 0a 09 20 | 20 20 20 7d 20 0a 09 20 | = K;.. | } .. |
|00005a70| 7d 0a 20 20 20 20 20 20 | 7d 0a 20 20 20 20 20 20 |}. |}. |
|00005a80| 72 65 74 75 72 6e 20 31 | 3b 0a 20 20 20 7d 0a 0a |return 1|;. }..|
|00005a90| 2f 2a 0a 20 2a 20 49 6e | 69 74 49 6e 0a 20 2a 0a |/*. * In|itIn. *.|
|00005aa0| 20 2a 20 49 6e 69 74 69 | 61 6c 69 7a 65 20 69 6e | * Initi|alize in|
|00005ab0| 70 75 74 20 64 65 73 63 | 72 69 70 74 6f 72 20 66 |put desc|riptor f|
|00005ac0| 6f 72 20 6e 6f 64 65 20 | 4e 20 61 6e 64 20 66 69 |or node |N and fi|
|00005ad0| 6c 65 20 46 69 6c 65 44 | 65 73 63 2e 0a 20 2a 20 |le FileD|esc.. * |
|00005ae0| 41 64 76 61 6e 63 65 20 | 74 68 65 20 69 6e 70 75 |Advance |the inpu|
|00005af0| 74 20 70 6f 69 6e 74 65 | 72 20 74 6f 20 74 68 65 |t pointe|r to the|
|00005b00| 20 66 69 72 73 74 20 74 | 6f 6b 65 6e 2e 0a 20 2a | first t|oken.. *|
|00005b10| 0a 20 2a 20 49 6e 70 75 | 74 0a 20 2a 09 2a 46 20 |. * Inpu|t. *.*F |
|00005b20| 3d 20 69 6e 70 75 74 20 | 64 65 73 63 72 69 70 74 |= input |descript|
|00005b30| 6f 72 0a 20 2a 09 4d 20 | 3d 20 6d 6f 64 75 6c 65 |or. *.M |= module|
|00005b40| 20 70 6f 69 6e 74 65 72 | 0a 20 2a 09 46 69 6c 65 | pointer|. *.File|
|00005b50| 44 65 73 63 20 3d 20 6f | 70 65 6e 20 66 69 6c 65 |Desc = o|pen file|
|00005b60| 20 64 65 73 63 72 69 70 | 74 6f 72 0a 20 2a 09 4c | descrip|tor. *.L|
|00005b70| 69 6e 65 4e 75 6d 20 3d | 20 30 20 66 6f 72 20 6e |ineNum =| 0 for n|
|00005b80| 6f 72 6d 61 6c 20 69 6e | 70 75 74 2c 20 2d 31 20 |ormal in|put, -1 |
|00005b90| 69 66 20 73 69 6e 67 6c | 65 2d 6c 69 6e 65 20 6d |if singl|e-line m|
|00005ba0| 6f 64 65 0a 20 2a 2f 0a | 76 6f 69 64 20 49 6e 69 |ode. */.|void Ini|
|00005bb0| 74 49 6e 20 28 46 2c 4d | 2c 46 69 6c 65 44 65 73 |tIn (F,M|,FileDes|
|00005bc0| 63 2c 4c 69 6e 65 4e 75 | 6d 29 0a 20 20 20 72 65 |c,LineNu|m). re|
|00005bd0| 67 69 73 74 65 72 20 49 | 6e 44 65 73 63 20 2a 46 |gister I|nDesc *F|
|00005be0| 3b 0a 20 20 20 4e 6f 64 | 65 50 74 72 20 4d 3b 0a |;. Nod|ePtr M;.|
|00005bf0| 20 20 20 46 49 4c 45 20 | 2a 46 69 6c 65 44 65 73 | FILE |*FileDes|
|00005c00| 63 3b 0a 20 20 20 69 6e | 74 20 4c 69 6e 65 4e 75 |c;. in|t LineNu|
|00005c10| 6d 3b 0a 20 20 20 7b 0a | 20 20 20 20 20 20 46 2d |m;. {.| F-|
|00005c20| 3e 49 6e 46 69 6c 65 20 | 3d 20 46 69 6c 65 44 65 |>InFile |= FileDe|
|00005c30| 73 63 3b 0a 20 20 20 20 | 20 20 46 2d 3e 49 6e 4c |sc;. | F->InL|
|00005c40| 69 6e 65 4e 75 6d 3d 20 | 4c 69 6e 65 4e 75 6d 3b |ineNum= |LineNum;|
|00005c50| 0a 20 20 20 20 20 20 46 | 2d 3e 49 6e 50 74 72 20 |. F|->InPtr |
|00005c60| 3d 20 46 2d 3e 49 6e 42 | 75 66 3b 0a 20 20 20 20 |= F->InB|uf;. |
|00005c70| 20 20 2a 46 2d 3e 49 6e | 50 74 72 20 3d 20 27 5c | *F->In|Ptr = '\|
|00005c80| 30 27 3b 0a 20 20 20 20 | 20 20 46 2d 3e 49 6e 44 |0';. | F->InD|
|00005c90| 65 66 4d 6f 64 20 3d 20 | 4d 3b 0a 20 20 20 20 20 |efMod = |M;. |
|00005ca0| 20 46 2d 3e 43 6f 6d 4c | 65 76 65 6c 20 3d 20 30 | F->ComL|evel = 0|
|00005cb0| 3b 0a 20 20 20 20 20 20 | 49 6e 42 6c 61 6e 6b 73 |;. |InBlanks|
|00005cc0| 20 28 46 29 3b 0a 20 20 | 20 7d 0a 0a 0a 2f 2a 2a | (F);. | }.../**|
|00005cd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005ce0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 20 65 6e |********|***** en|
|00005cf0| 64 20 6f 66 20 69 6e 6f | 62 2e 63 20 2a 2a 2a 2a |d of ino|b.c ****|
|00005d00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005d10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0a 0a 53 48 |********|***/..SH|
|00005d20| 41 52 5f 45 4f 46 0a 69 | 66 20 74 65 73 74 20 2d |AR_EOF.i|f test -|
|00005d30| 66 20 27 69 6e 74 65 72 | 70 2f 69 6e 6f 62 2e 68 |f 'inter|p/inob.h|
|00005d40| 27 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|00005d50| 72 3a 20 6f 76 65 72 2d | 77 72 69 74 69 6e 67 20 |r: over-|writing |
|00005d60| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 22 27 |existing| file "'|
|00005d70| 69 6e 74 65 72 70 2f 69 | 6e 6f 62 2e 68 27 22 0a |interp/i|nob.h'".|
|00005d80| 66 69 0a 63 61 74 20 3c | 3c 20 5c 53 48 41 52 5f |fi.cat <|< \SHAR_|
|00005d90| 45 4f 46 20 3e 20 27 69 | 6e 74 65 72 70 2f 69 6e |EOF > 'i|nterp/in|
|00005da0| 6f 62 2e 68 27 0a 0c 0a | 2f 2a 2a 2a 2a 2a 2a 20 |ob.h'...|/****** |
|00005db0| 69 6e 6f 62 2e 68 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |inob.h *|********|
|00005dc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005dd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005de0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2f |********|*******/|
|00005df0| 0a 2f 2a 2a 20 20 20 20 | 20 20 20 20 20 20 20 20 |./** | |
|00005e00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005e10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005e20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005e30| 20 20 20 20 20 20 2a 2a | 2f 0a 2f 2a 2a 20 20 20 | **|/./** |
|00005e40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005e50| 20 55 6e 69 76 65 72 73 | 69 74 79 20 6f 66 20 49 | Univers|ity of I|
|00005e60| 6c 6c 69 6e 6f 69 73 20 | 20 20 20 20 20 20 20 20 |llinois | |
|00005e70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00005e80| 2a 2f 0a 2f 2a 2a 20 20 | 20 20 20 20 20 20 20 20 |*/./** | |
|00005e90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005ea0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005eb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005ec0| 20 20 20 20 20 20 20 20 | 2a 2a 2f 0a 2f 2a 2a 20 | |**/./** |
|00005ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 44 | | D|
|00005ee0| 65 70 61 72 74 6d 65 6e | 74 20 6f 66 20 43 6f 6d |epartmen|t of Com|
|00005ef0| 70 75 74 65 72 20 53 63 | 69 65 6e 63 65 20 20 20 |puter Sc|ience |
|00005f00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f10| 20 2a 2a 2f 0a 2f 2a 2a | 20 20 20 20 20 20 20 20 | **/./**| |
|00005f20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f50| 20 20 20 20 20 20 20 20 | 20 20 2a 2a 2f 0a 2f 2a | | **/./*|
|00005f60| 2a 20 20 20 54 6f 6f 6c | 3a 20 49 46 50 20 20 20 |* Tool|: IFP |
|00005f70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f80| 20 20 20 20 20 20 56 65 | 72 73 69 6f 6e 3a 20 30 | Ve|rsion: 0|
|00005f90| 2e 35 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.5 | |
|00005fa0| 20 20 20 2a 2a 2f 0a 2f | 2a 2a 20 20 20 20 20 20 | **/./|** |
|00005fb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005fc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005fd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005fe0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2a 2f 0a | | **/.|
|00005ff0| 2f 2a 2a 20 20 20 41 75 | 74 68 6f 72 3a 20 20 41 |/** Au|thor: A|
|00006000| 72 63 68 20 44 2e 20 52 | 6f 62 69 73 6f 6e 20 20 |rch D. R|obison |
|00006010| 20 20 20 20 20 20 20 20 | 44 61 74 65 3a 20 20 20 | |Date: |
|00006020| 4d 61 79 20 31 2c 20 31 | 39 38 35 20 20 20 20 20 |May 1, 1|985 |
|00006030| 20 20 20 20 20 2a 2a 2f | 0a 2f 2a 2a 20 20 20 20 | **/|./** |
|00006040| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006050| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006070| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2a | | **|
|00006080| 2f 0a 2f 2a 2a 20 20 20 | 52 65 76 69 73 65 64 20 |/./** |Revised |
|00006090| 62 79 3a 20 41 72 63 68 | 20 44 2e 20 52 6f 62 69 |by: Arch| D. Robi|
|000060a0| 73 6f 6e 20 20 20 20 20 | 20 20 44 61 74 65 3a 20 |son | Date: |
|000060b0| 20 53 65 70 74 20 39 2c | 20 31 39 38 36 20 20 20 | Sept 9,| 1986 |
|000060c0| 20 20 20 20 20 20 20 2a | 2a 2f 0a 2f 2a 2a 20 20 | *|*/./** |
|000060d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000060e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000060f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006100| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006110| 2a 2a 2f 0a 2f 2a 2a 20 | 20 20 50 72 69 6e 63 69 |**/./** | Princi|
|00006120| 70 61 6c 20 49 6e 76 65 | 73 74 69 67 61 74 6f 72 |pal Inve|stigator|
|00006130| 73 3a 20 50 72 6f 66 2e | 20 52 2e 20 48 2e 20 43 |s: Prof.| R. H. C|
|00006140| 61 6d 70 62 65 6c 6c 20 | 20 20 20 20 20 20 20 20 |ampbell | |
|00006150| 20 20 20 20 20 20 20 20 | 20 2a 2a 2f 0a 2f 2a 2a | | **/./**|
|00006160| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006170| 20 20 20 20 20 20 20 20 | 20 20 20 20 50 72 6f 66 | | Prof|
|00006180| 2e 20 57 2e 20 4a 2e 20 | 4b 75 62 69 74 7a 20 20 |. W. J. |Kubitz |
|00006190| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000061a0| 20 20 2a 2a 2f 0a 2f 2a | 2a 20 20 20 20 20 20 20 | **/./*|* |
|000061b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000061c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000061d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000061e0| 20 20 20 20 20 20 20 20 | 20 20 20 2a 2a 2f 0a 2f | | **/./|
|000061f0| 2a 2a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |** | |
|00006200| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006210| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006220| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006230| 20 20 20 20 2a 2a 2f 0a | 2f 2a 2a 2d 2d 2d 2d 2d | **/.|/**-----|
|00006240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2a 2a 2f |--------|-----**/|
|00006280| 0a 2f 2a 2a 20 20 20 28 | 43 29 20 43 6f 70 79 72 |./** (|C) Copyr|
|00006290| 69 67 68 74 20 31 39 38 | 37 20 20 55 6e 69 76 65 |ight 198|7 Unive|
|000062a0| 72 73 69 74 79 20 6f 66 | 20 49 6c 6c 69 6e 6f 69 |rsity of| Illinoi|
|000062b0| 73 20 42 6f 61 72 64 20 | 6f 66 20 54 72 75 73 74 |s Board |of Trust|
|000062c0| 65 65 73 20 20 20 2a 2a | 2f 0a 2f 2a 2a 20 20 20 |ees **|/./** |
|000062d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000062e0| 20 20 20 20 41 6c 6c 20 | 52 69 67 68 74 73 20 52 | All |Rights R|
|000062f0| 65 73 65 72 76 65 64 2e | 20 20 20 20 20 20 20 20 |eserved.| |
|00006300| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00006310| 2a 2f 0a 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |*/./****|********|
|00006320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00006330| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00006340| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00006350| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 0a 23 64 65 |********|**/..#de|
|00006360| 66 69 6e 65 20 49 4e 42 | 55 46 53 49 5a 45 20 32 |fine INB|UFSIZE 2|
|00006370| 35 35 20 20 20 20 20 2f | 2a 20 36 35 20 3c 3d 20 |55 /|* 65 <= |
|00006380| 49 4e 42 55 46 53 49 5a | 45 20 3c 3d 20 32 35 35 |INBUFSIZ|E <= 255|
|00006390| 20 66 6f 72 20 44 4f 53 | 20 2a 2f 0a 0a 2f 2a 0a | for DOS| */../*.|
|000063a0| 20 2a 20 49 6e 44 65 73 | 63 0a 20 2a 0a 20 2a 20 | * InDes|c. *. * |
|000063b0| 49 6e 70 75 74 20 64 65 | 73 63 72 69 70 74 6f 72 |Input de|scriptor|
|000063c0| 2e 0a 20 2a 0a 20 2a 20 | 43 75 72 72 65 6e 74 6c |.. *. * |Currentl|
|000063d0| 79 2c 20 74 68 65 72 65 | 20 61 72 65 20 74 68 72 |y, there| are thr|
|000063e0| 65 65 20 66 6f 72 6d 73 | 20 6f 66 20 49 46 50 20 |ee forms| of IFP |
|000063f0| 69 6e 70 75 74 3a 0a 20 | 2a 0a 20 2a 09 31 2e 20 |input:. |*. *.1. |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.