home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / f / fortran < prev    next >
ArcFS Archive  |  1997-07-02  |  2.4 MB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: ArcFS Archive (archive/arcFS).

You can browse this item here: fortran

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert ArcFS Archive (archive/arcFS) magic Supported
100% file RISC OS archive (ArcFS format) default
99% file data default
100% TrID Acorn ArcFS Archive default
100% gt2 Kopftext: 'Archive' default (weak)
100% detectItEasy Archive: ArcFS default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 41 72 63 68 69 76 65 00 | b4 09 00 00 c4 0b 00 00 |Archive.|........|
|00000010| 28 00 00 00 64 00 00 00 | 00 00 00 00 00 00 00 00 |(...d...|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| 82 47 37 37 00 00 00 00 | 00 00 00 00 ff ff ff ff |.G77....|........|
|00000070| 47 ff ff ff 86 a4 95 a3 | 03 00 00 00 ff ff ff ff |G.......|........|
|00000080| ac 02 00 80 82 21 67 63 | 63 00 00 8a 06 00 a0 e3 |.....!gc|c.......|
|00000090| ff ff ff ff 47 ff ff ff | 73 ad 95 a3 03 00 00 00 |....G...|s.......|
|000000a0| ff ff ff ff 88 02 00 80 | 82 62 69 6e 00 61 69 6e |........|.bin.ain|
|000000b0| 00 00 00 00 ff ff ff ff | 47 ff ff ff 8b ad 95 a3 |........|G.......|
|000000c0| 03 00 00 00 ff ff ff ff | d8 00 00 80 82 66 37 37 |........|.....f77|
|000000d0| 31 00 00 8a 06 00 a0 e3 | af 9e 0f 00 47 f8 ff ff |1.......|....G...|
|000000e0| a1 a6 81 2b 03 00 76 c4 | af 9e 0f 00 6e b8 00 00 |...+..v.|....n...|
|000000f0| 82 67 37 37 00 00 00 8a | 06 00 a0 e3 9f 98 00 00 |.g77....|........|
|00000100| 47 f8 ff ff 21 8d 81 2b | 03 00 7a 81 9f 98 00 00 |G...!..+|..z.....|
|00000110| 41 57 10 00 00 00 51 e3 | 17 00 00 8a 06 00 a0 e3 |AW....Q.|........|
|00000120| 10 30 a0 e3 1e 00 02 ef | 00 80 bd 68 00 20 8c e4 |.0......|...h. ..|
|00000130| 02 c0 a0 e1 34 31 9a e1 | 82 64 6f 63 73 00 69 6e |....41..|.docs.in|
|00000140| 00 00 00 00 ff ff ff ff | 47 ff ff ff 2f af 95 a3 |........|G.../...|
|00000150| 00 00 00 00 ff ff ff ff | b0 01 00 80 82 66 6f 72 |........|.....for|
|00000160| 74 72 61 6e 00 00 a0 e3 | ff ff ff ff 47 ff ff ff |tran....|....G...|
|00000170| 3b af 95 a3 00 00 00 00 | ff ff ff ff 8c 01 00 80 |;.......|........|
|00000180| 83 21 52 65 61 64 6d 65 | 00 00 00 00 08 0c 00 00 |.!Readme|........|
|00000190| 47 ff ff ff 0e 6a 4d 2a | 03 00 75 58 8b 0b 00 00 |G....jM*|..uX....|
|000001a0| 04 f0 10 00 83 67 37 37 | 00 61 69 6e 00 00 00 00 |.....g77|.ain....|
|000001b0| f8 f8 05 00 47 ff ff ff | d4 31 82 2b 33 00 00 00 |....G...|.1.+3...|
|000001c0| dc a1 05 00 b3 fb 10 00 | 00 47 43 43 6d 61 69 6e |........|.GCCmain|
|000001d0| 00 00 00 00 ff ff ff ff | 47 ff ff ff dd a7 95 a3 |........|G.......|
|000001e0| 03 00 00 00 ff ff ff ff | 90 00 00 80 00 00 51 e3 |........|......Q.|
|000001f0| 17 00 00 8a 06 00 a0 e3 | 10 30 a0 e3 1e 00 02 ef |........|.0......|
|00000200| 00 80 bd 68 00 20 8c e4 | 02 c0 a0 e1 34 31 9a e1 |...h. ..|....41..|
|00000210| 82 67 63 63 00 61 69 6e | 00 00 00 00 ff ff ff ff |.gcc.ain|........|
|00000220| 47 ff ff ff f9 af 95 a3 | 03 00 00 00 ff ff ff ff |G.......|........|
|00000230| 64 02 00 80 82 6f 00 e3 | 17 00 00 8a 06 00 a0 e3 |d....o..|........|
|00000240| ff ff ff ff 47 ff ff ff | 34 b1 95 a3 03 00 00 00 |....G...|4.......|
|00000250| ff ff ff ff 40 02 00 80 | 83 6c 69 62 66 32 63 00 |....@...|.libf2c.|
|00000260| 00 00 00 00 78 52 02 00 | 47 fd ff ff 7e b7 81 2b |....xR..|G...~..+|
|00000270| 03 00 ef ca d2 1c 02 00 | b3 9d 16 00 00 47 43 43 |........|.....GCC|
|00000280| 6d 61 69 6e 00 00 00 00 | ff ff ff ff 47 ff ff ff |main....|....G...|
|00000290| dd a7 95 a3 03 00 00 00 | ff ff ff ff 90 00 00 80 |........|........|
|000002a0| 00 00 51 e3 17 00 00 8a | 06 00 a0 e3 10 30 a0 e3 |..Q.....|.....0..|
|000002b0| 1e 00 02 ef 00 80 bd 68 | 00 20 8c e4 02 c0 a0 e1 |.......h|. ......|
|000002c0| 34 31 9a e1 00 47 43 43 | 6d 61 69 6e 00 00 00 00 |41...GCC|main....|
|000002d0| ff ff ff ff 47 ff ff ff | dd a7 95 a3 03 00 00 00 |....G...|........|
|000002e0| ff ff ff ff 90 00 00 80 | 00 00 51 e3 17 00 00 8a |........|..Q.....|
|000002f0| 06 00 a0 e3 10 30 a0 e3 | 1e 00 02 ef 00 80 bd 68 |.....0..|.......h|
|00000300| 00 20 8c e4 02 c0 a0 e1 | 34 31 9a e1 82 47 43 43 |. ......|41...GCC|
|00000310| 6d 61 69 6e 00 00 00 00 | ff ff ff ff 47 ff ff ff |main....|....G...|
|00000320| dd a7 95 a3 03 00 00 00 | ff ff ff ff 6c 09 00 80 |........|....l...|
|00000330| 82 21 67 63 63 00 8f e2 | b4 11 80 e5 ff ff ff ff |.!gcc...|........|
|00000340| 47 ff ff ff 72 b6 95 a3 | 03 00 00 00 ff ff ff ff |G...r...|........|
|00000350| b8 08 00 80 82 21 42 6f | 6f 74 00 2f 73 30 30 00 |.....!Bo|ot./s00.|
|00000360| 89 00 00 00 46 eb ff ff | 04 ac a7 a9 03 00 cb 26 |....F...|.......&|
|00000370| 89 00 00 00 a9 ba 18 00 | 82 21 52 75 6e 00 72 2f |........|.!Run.r/|
|00000380| 73 30 30 00 61 08 00 00 | 47 eb ff ff 63 a1 bd 32 |s00.a...|G...c..2|
|00000390| 03 00 f2 a2 61 08 00 00 | 56 bb 18 00 83 21 53 70 |....a...|V....!Sp|
|000003a0| 72 69 74 65 73 00 30 00 | e4 03 00 00 44 f9 ff ff |rites.0.|....D...|
|000003b0| 9a a2 63 ce 03 00 4b 04 | e3 01 00 00 db c3 18 00 |..c...K.|........|
|000003c0| 82 62 69 6e 00 6f 72 2f | 73 30 30 00 ff ff ff ff |.bin.or/|s00.....|
|000003d0| 47 ff ff ff a9 b6 95 a3 | 03 00 00 00 ff ff ff ff |G.......|........|
|000003e0| 5c 04 00 80 82 61 73 00 | c0 10 8f e2 b4 11 80 e5 |\....as.|........|
|000003f0| 7f 04 01 00 47 f8 ff ff | ce 81 83 2b 03 00 0d 40 |....G...|...+...@|
|00000400| 7f 04 01 00 e2 c5 18 00 | 82 63 70 70 00 10 8f e2 |........|.cpp....|
|00000410| b4 11 80 e5 1f 12 01 00 | 47 f8 ff ff 58 b0 80 2b |........|G...X..+|
|00000420| 03 00 b8 b0 1f 12 01 00 | 85 ca 19 00 83 64 79 6e |........|.....dyn|
|00000430| 5f 6b 69 6c 6c 00 80 e5 | ca 01 00 00 46 fb ff ff |_kill...|....F...|
|00000440| 88 2a 6a ad 03 00 0b 97 | c4 01 00 00 c8 dc 1a 00 |.*j.....|........|
|00000450| 82 67 63 63 00 10 8f e2 | b4 11 80 e5 0f 10 01 00 |.gcc....|........|
|00000460| 47 f8 ff ff 6c df bf 32 | 03 00 a0 a1 0f 10 01 00 |G...l..2|........|
|00000470| b0 de 1a 00 82 6c 64 00 | c0 10 8f e2 b4 11 80 e5 |.....ld.|........|
|00000480| df d9 00 00 47 f8 ff ff | 45 e1 bf 32 03 00 15 d9 |....G...|E..2....|
|00000490| df d9 00 00 e3 ee 1b 00 | 00 10 8c e5 c0 10 8f e2 |........|........|
|000004a0| b4 11 80 e5 b8 11 90 e5 | 0c 10 8c e5 f4 10 8f e2 |........|........|
|000004b0| b8 11 80 e5 00 80 fd e8 | 00 30 8a de 82 64 6f 63 |........|.0...doc|
|000004c0| 73 00 72 2f 73 30 30 00 | ff ff ff ff 47 ff ff ff |s.r/s00.|....G...|
|000004d0| b4 b7 95 a3 03 00 00 00 | ff ff ff ff 7c 05 00 80 |........|....|...|
|000004e0| 83 21 49 6e 74 72 6f 00 | b4 11 80 e5 70 51 00 00 |.!Intro.|....pQ..|
|000004f0| 47 ff ff ff 30 1a b6 32 | 03 00 97 66 b5 4f 00 00 |G...0..2|...f.O..|
|00000500| e6 c8 1c 00 83 62 75 67 | 73 00 8f e2 b4 11 80 e5 |.....bug|s.......|
|00000510| 39 2e 00 00 47 ff ff ff | 6a ff fa 29 03 00 16 ef |9...G...|j..)....|
|00000520| 16 2d 00 00 bf 18 1d 00 | 83 43 4f 50 59 49 4e 47 |.-......|.COPYING|
|00000530| 00 11 80 e5 46 46 00 00 | 46 ff ff ff 6c e0 a1 66 |....FF..|F...l..f|
|00000540| 33 00 f0 20 0d 46 00 00 | f9 45 1d 00 83 43 4f 50 |3.. .F..|.E...COP|
|00000550| 59 49 4e 47 4c 49 42 00 | c3 62 00 00 46 ff ff ff |YINGLIB.|.b..F...|
|00000560| 4c f6 a1 66 33 00 69 c3 | 7e 62 00 00 2a 8c 1d 00 |L..f3.i.|~b..*...|
|00000570| 83 67 63 63 2d 66 61 71 | 00 11 80 e5 de 48 00 00 |.gcc-faq|.....H..|
|00000580| 47 ff ff ff 8a 94 09 2b | 03 00 70 19 9d 47 00 00 |G......+|..p..G..|
|00000590| cc ee 1d 00 83 67 63 63 | 75 73 65 72 00 11 80 e5 |.....gcc|user....|
|000005a0| 0f 2c 08 00 46 ff ff ff | 58 07 9f 42 33 00 00 00 |.,..F...|X..B3...|
|000005b0| a4 d7 07 00 8d 36 1e 00 | 00 10 8c e5 c0 10 8f e2 |.....6..|........|
|000005c0| b4 11 80 e5 b8 11 90 e5 | 0c 10 8c e5 f4 10 8f e2 |........|........|
|000005d0| b8 11 80 e5 00 80 fd e8 | 00 30 8a de 82 67 63 63 |........|.0...gcc|
|000005e0| 00 6f 72 2f 73 30 30 00 | ff ff ff ff 47 ff ff ff |.or/s00.|....G...|
|000005f0| ec ba 95 a3 00 00 00 00 | ff ff ff ff 74 07 00 80 |........|....t...|
|00000600| 82 68 00 e5 c0 10 8f e2 | b4 11 80 e5 ff ff ff ff |.h......|........|
|00000610| 47 ff ff ff f7 ba 95 a3 | 00 00 00 00 ff ff ff ff |G.......|........|
|00000620| e4 06 00 80 83 61 73 73 | 65 72 74 00 73 30 30 00 |.....ass|ert.s00.|
|00000630| ce 05 00 00 46 ff ff ff | 5c 5e cf 43 33 00 c7 b8 |....F...|\^.C3...|
|00000640| c6 05 00 00 55 0e 26 00 | 83 66 69 78 2d 61 72 67 |....U.&.|.fix-arg|
|00000650| 73 00 30 00 21 09 00 00 | 46 ff ff ff 40 c7 13 8f |s.0.!...|F...@...|
|00000660| 03 00 ff 4b ff 07 00 00 | 3f 14 26 00 82 69 73 6f |...K....|?.&..iso|
|00000670| 36 34 36 00 73 30 30 00 | 13 01 00 00 46 ff ff ff |646.s00.|....F...|
|00000680| 1a c3 bf 23 33 00 11 01 | 13 01 00 00 62 1c 26 00 |...#3...|....b.&.|
|00000690| 82 70 72 6f 74 6f 00 2f | 73 30 30 00 89 00 00 00 |.proto./|s00.....|
|000006a0| 42 ff ff ff 94 70 28 90 | 33 00 fa 72 89 00 00 00 |B....p(.|3..r....|
|000006b0| 99 1d 26 00 83 73 74 64 | 61 72 67 00 73 30 30 00 |..&..std|arg.s00.|
|000006c0| 43 14 00 00 46 ff ff ff | e7 dd 58 e1 33 00 11 08 |C...F...|..X.3...|
|000006d0| 2c 14 00 00 46 1e 26 00 | 83 76 61 72 61 72 67 73 |,...F.&.|.varargs|
|000006e0| 00 30 30 00 43 14 00 00 | 46 ff ff ff a3 e1 58 e1 |.00.C...|F.....X.|
|000006f0| 33 00 af 94 2e 14 00 00 | 96 32 26 00 83 5f 47 5f |3.......|.2&.._G_|
|00000700| 63 6f 6e 66 69 67 00 00 | 1b 0f 00 00 47 ff ff ff |config..|....G...|
|00000710| 86 d3 0d 2c 03 00 d6 4e | ff 0e 00 00 e8 46 26 00 |...,...N|.....F&.|
|00000720| 00 72 61 74 66 6f 72 2f | 73 30 30 00 00 ee 00 00 |.ratfor/|s00.....|
|00000730| 47 46 fc ff 82 17 92 a3 | 03 00 00 00 26 b8 00 00 |GF......|....&...|
|00000740| 24 00 00 00 82 6f 00 e5 | c0 10 8f e2 b4 11 80 e5 |$....o..|........|
|00000750| ff ff ff ff 47 ff ff ff | b4 bb 95 a3 03 00 00 00 |....G...|........|
|00000760| ff ff ff ff 50 07 00 80 | 83 6c 69 62 67 63 63 00 |....P...|.libgcc.|
|00000770| 73 30 30 00 24 7e 00 00 | 47 fd ff ff 2e ac 80 2b |s00.$~..|G......+|
|00000780| 03 00 8a a0 3e 76 00 00 | 0b 56 26 00 00 72 61 74 |....>v..|.V&..rat|
|00000790| 66 6f 72 2f 73 30 30 00 | 00 ee 00 00 47 46 fc ff |for/s00.|....GF..|
|000007a0| 82 17 92 a3 03 00 00 00 | 26 b8 00 00 24 00 00 00 |........|&...$...|
|000007b0| 00 10 8c e5 c0 10 8f e2 | b4 11 80 e5 b8 11 90 e5 |........|........|
|000007c0| 0c 10 8c e5 f4 10 8f e2 | b8 11 80 e5 00 80 fd e8 |........|........|
|000007d0| 00 30 8a de 82 73 75 70 | 70 6f 72 74 00 30 30 00 |.0...sup|port.00.|
|000007e0| ff ff ff ff 47 ff ff ff | d6 bb 95 a3 00 00 00 00 |....G...|........|
|000007f0| ff ff ff ff 94 08 00 80 | 82 44 44 45 55 74 69 6c |........|.DDEUtil|
|00000800| 73 43 79 00 ff ff ff ff | 47 ff ff ff f6 bb 95 a3 |sCy.....|G.......|
|00000810| 00 00 00 00 ff ff ff ff | 70 08 00 80 83 21 48 65 |........|p....!He|
|00000820| 6c 70 00 2f 73 30 30 00 | 3b 10 00 00 46 ff ff ff |lp./s00.|;...F...|
|00000830| 87 73 84 29 03 00 da 62 | a0 0d 00 00 6d cc 26 00 |.s.)...b|....m.&.|
|00000840| 83 44 44 45 55 74 69 6c | 73 43 79 00 e0 0a 00 00 |.DDEUtil|sCy.....|
|00000850| 46 fa ff ff f0 d4 83 29 | 03 00 07 19 ce 0a 00 00 |F......)|........|
|00000860| 31 da 26 00 82 49 66 45 | 78 69 73 74 00 30 30 00 |1.&..IfE|xist.00.|
|00000870| 94 00 00 00 45 fc ff ff | 08 dc 5f de 03 00 6e 1f |....E...|.._...n.|
|00000880| 94 00 00 00 23 e5 26 00 | 83 49 6e 69 74 44 44 45 |....#.&.|.InitDDE|
|00000890| 43 79 00 00 af 01 00 00 | 45 eb ff ff a6 c7 61 de |Cy......|E.....a.|
|000008a0| 03 00 34 3d a7 01 00 00 | db e5 26 00 00 72 61 74 |..4=....|..&..rat|
|000008b0| 66 6f 72 2f 73 30 30 00 | 00 ee 00 00 47 46 fc ff |for/s00.|....GF..|
|000008c0| 82 17 92 a3 03 00 00 00 | 26 b8 00 00 24 00 00 00 |........|&...$...|
|000008d0| 00 10 8c e5 c0 10 8f e2 | b4 11 80 e5 b8 11 90 e5 |........|........|
|000008e0| 0c 10 8c e5 f4 10 8f e2 | b8 11 80 e5 00 80 fd e8 |........|........|
|000008f0| 00 30 8a de 00 72 61 74 | 66 6f 72 2f 73 30 30 00 |.0...rat|for/s00.|
|00000900| 00 ee 00 00 47 46 fc ff | 82 17 92 a3 03 00 00 00 |....GF..|........|
|00000910| 26 b8 00 00 24 00 00 00 | 82 43 61 6c 6c 41 53 57 |&...$...|.CallASW|
|00000920| 49 00 80 e5 ff ff ff ff | 47 ff ff ff b9 be 95 a3 |I.......|G.......|
|00000930| 10 00 00 00 ff ff ff ff | 48 09 00 80 83 43 61 6c |........|H....Cal|
|00000940| 6c 41 53 57 49 00 30 00 | d4 01 00 00 47 fa ff ff |lASWI.0.|....G...|
|00000950| 97 f3 38 01 13 00 f9 be | cc 01 00 00 a6 e7 26 00 |..8.....|......&.|
|00000960| 83 52 65 61 64 4d 65 00 | 73 30 30 00 9f 06 00 00 |.ReadMe.|s00.....|
|00000970| 47 ff ff ff e9 09 94 01 | 13 00 03 56 5a 06 00 00 |G.......|...VZ...|
|00000980| 96 e9 26 00 00 72 61 74 | 66 6f 72 2f 73 30 30 00 |..&..rat|for/s00.|
|00000990| 00 ee 00 00 47 46 fc ff | 82 17 92 a3 03 00 00 00 |....GF..|........|
|000009a0| 26 b8 00 00 24 00 00 00 | 00 10 8c e5 c0 10 8f e2 |&...$...|........|
|000009b0| b4 11 80 e5 b8 11 90 e5 | 0c 10 8c e5 f4 10 8f e2 |........|........|
|000009c0| b8 11 80 e5 00 80 fd e8 | 00 30 8a de 83 72 61 74 |........|.0...rat|
|000009d0| 66 6f 72 2f 73 30 30 00 | 00 ee 00 00 47 46 fc ff |for/s00.|....GF..|
|000009e0| 82 17 92 a3 03 00 00 00 | 26 b8 00 00 24 00 00 00 |........|&...$...|
|000009f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000a00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000a10| 00 00 00 00 46 6f 72 2f | 63 2f 67 65 74 6f 70 74 |....For/|c/getopt|
|00000a20| 00 90 44 20 90 03 36 30 | 30 00 00 20 90 05 30 00 |..D ..60|0.. ..0.|
|00000a30| 00 20 90 05 30 00 00 20 | 90 07 32 31 32 30 00 20 |. ..0.. |..2120. |
|00000a40| 34 37 36 37 32 33 37 35 | 32 32 00 20 31 32 33 30 |47672375|22. 1230|
|00000a50| 37 00 20 30 00 90 9c 20 | 90 0a 30 20 00 90 bb 2f |7. 0... |..0 .../|
|00000a60| 2a 0a 20 2a 20 67 65 74 | 6f 70 74 20 2d 20 67 65 |*. * get|opt - ge|
|00000a70| 74 20 6f 70 74 69 6f 6e | 20 6c 65 74 74 65 72 20 |t option| letter |
|00000a80| 66 72 6f 6d 20 61 72 67 | 76 0a 20 2a 2f 0a 0a 23 |from arg|v. */..#|
|00000a90| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|00000aa0| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 69 |>.#inclu|de <stri|
|00000ab0| 6e 67 2e 68 3e 0a 0a 63 | 68 61 72 20 90 0b 2a 6f |ng.h>..c|har ..*o|
|00000ac0| 70 74 61 72 67 3b 09 09 | 2f 2a 20 47 6c 6f 62 61 |ptarg;..|/* Globa|
|00000ad0| 6c 20 61 72 67 75 6d 65 | 6e 74 20 70 6f 69 6e 74 |l argume|nt point|
|00000ae0| 65 72 2e 20 2a 2f 0a 69 | 6e 74 20 90 0d 6f 70 74 |er. */.i|nt ..opt|
|00000af0| 69 6e 64 20 3d 20 30 3b | 09 2f 2a 20 47 6c 6f 62 |ind = 0;|./* Glob|
|00000b00| 61 6c 20 61 72 67 76 20 | 69 6e 64 65 78 2e 20 2a |al argv |index. *|
|00000b10| 2f 0a 0a 73 74 61 74 69 | 63 20 63 68 61 72 20 90 |/..stati|c char .|
|00000b20| 04 2a 73 63 61 6e 20 3d | 20 4e 55 4c 4c 3b 09 2f |.*scan =| NULL;./|
|00000b30| 2a 20 50 72 69 76 61 74 | 65 20 73 63 61 6e 20 70 |* Privat|e scan p|
|00000b40| 6f 69 6e 74 65 72 2e 20 | 2a 2f 0a 0a 23 64 65 66 |ointer. |*/..#def|
|00000b50| 69 6e 65 20 69 6e 64 65 | 78 20 73 74 72 63 68 72 |ine inde|x strchr|
|00000b60| 0a 23 64 65 66 69 6e 65 | 20 72 69 6e 64 65 78 20 |.#define| rindex |
|00000b70| 73 74 72 72 63 68 72 0a | 0a 2f 2a 20 65 78 74 65 |strrchr.|./* exte|
|00000b80| 72 6e 20 63 68 61 72 20 | 90 04 2a 69 6e 64 65 78 |rn char |..*index|
|00000b90| 28 29 3b 20 2a 2f 0a 0a | 69 6e 74 0a 67 65 74 6f |(); */..|int.geto|
|00000ba0| 70 74 28 61 72 67 63 2c | 20 61 72 67 76 2c 20 6f |pt(argc,| argv, o|
|00000bb0| 70 74 73 74 72 69 6e 67 | 29 0a 09 69 6e 74 20 90 |ptstring|)..int .|
|00000bc0| 0d 61 72 67 46 69 6c 65 | 44 61 74 61 83 72 61 74 |.argFile|Data.rat|
|00000bd0| 66 6f 72 2f 73 30 30 00 | 00 ee 00 00 47 fd ff ff |for/s00.|....G...|
|00000be0| 6b aa 95 a3 03 00 00 00 | 3c 74 61 72 5a 24 75 73 |k.......|<tarZ$us|
|00000bf0| 65 3e 2f 66 69 6c 65 73 | 2f 00 90 53 20 90 03 37 |e>/files|/..S ..7|
|00000c00| 30 30 00 00 20 90 05 30 | 00 00 20 90 05 30 00 00 |00.. ..0|.. ..0..|
|00000c10| 20 90 0a 30 00 20 35 31 | 33 32 34 36 34 34 31 31 | ..0. 51|32464411|
|00000c20| 00 20 20 36 35 33 30 00 | 20 35 00 90 ff 00 90 64 |. 6530.| 5.....d|
|00000c30| 3c 74 61 72 5a 24 75 73 | 65 3e 2f 66 69 6c 65 73 |<tarZ$us|e>/files|
|00000c40| 2f 52 61 74 46 6f 72 2f | 00 90 4c 20 90 03 37 30 |/RatFor/|..L ..70|
|00000c50| 30 00 00 20 90 05 30 00 | 00 20 90 05 30 00 00 20 |0.. ..0.|. ..0.. |
|00000c60| 90 0a 30 00 20 35 31 33 | 34 31 37 31 31 33 33 00 |..0. 513|4171133.|
|00000c70| 20 20 37 37 32 33 00 20 | 35 00 90 ff 00 90 64 3c | 7723. |5.....d<|
|00000c80| 74 61 72 5a 24 75 73 65 | 3e 2f 66 69 6c 65 73 2f |tarZ$use|>/files/|
|00000c90| 52 61 74 46 6f 72 2f 63 | 2f 00 90 4a 20 90 03 37 |RatFor/c|/..J ..7|
|00000ca0| 30 30 00 00 20 90 05 30 | 00 00 20 90 05 30 00 00 |00.. ..0|.. ..0..|
|00000cb0| 20 90 0a 30 00 20 35 31 | 33 34 31 37 31 31 33 35 | ..0. 51|34171135|
|00000cc0| 00 20 31 30 31 34 37 00 | 20 35 00 90 ff 00 90 64 |. 10147.| 5.....d|
|00000cd0| 3c 74 61 72 5a 24 75 73 | 65 3e 2f 66 69 6c 65 73 |<tarZ$us|e>/files|
|00000ce0| 2f 52 61 74 46 6f 72 2f | 63 2f 67 65 74 6f 70 74 |/RatFor/|c/getopt|
|00000cf0| 00 90 44 20 90 03 36 30 | 30 00 00 20 90 05 30 00 |..D ..60|0.. ..0.|
|00000d00| 00 20 90 05 30 00 00 20 | 90 07 32 31 32 30 00 20 |. ..0.. |..2120. |
|00000d10| 34 37 36 37 32 33 37 35 | 32 32 00 20 31 32 33 30 |47672375|22. 1230|
|00000d20| 37 00 20 30 00 90 9c 20 | 90 0a 30 20 00 90 bb 2f |7. 0... |..0 .../|
|00000d30| 2a 0a 20 2a 20 67 65 74 | 6f 70 74 20 2d 20 67 65 |*. * get|opt - ge|
|00000d40| 74 20 6f 70 74 69 6f 6e | 20 6c 65 74 74 65 72 20 |t option| letter |
|00000d50| 66 72 6f 6d 20 61 72 67 | 76 0a 20 2a 2f 0a 0a 23 |from arg|v. */..#|
|00000d60| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|00000d70| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 69 |>.#inclu|de <stri|
|00000d80| 6e 67 2e 68 3e 0a 0a 63 | 68 61 72 20 90 0b 2a 6f |ng.h>..c|har ..*o|
|00000d90| 70 74 61 72 67 3b 09 09 | 2f 2a 20 47 6c 6f 62 61 |ptarg;..|/* Globa|
|00000da0| 6c 20 61 72 67 75 6d 65 | 6e 74 20 70 6f 69 6e 74 |l argume|nt point|
|00000db0| 65 72 2e 20 2a 2f 0a 69 | 6e 74 20 90 0d 6f 70 74 |er. */.i|nt ..opt|
|00000dc0| 69 6e 64 20 3d 20 30 3b | 09 2f 2a 20 47 6c 6f 62 |ind = 0;|./* Glob|
|00000dd0| 61 6c 20 61 72 67 76 20 | 69 6e 64 65 78 2e 20 2a |al argv |index. *|
|00000de0| 2f 0a 0a 73 74 61 74 69 | 63 20 63 68 61 72 20 90 |/..stati|c char .|
|00000df0| 04 2a 73 63 61 6e 20 3d | 20 4e 55 4c 4c 3b 09 2f |.*scan =| NULL;./|
|00000e00| 2a 20 50 72 69 76 61 74 | 65 20 73 63 61 6e 20 70 |* Privat|e scan p|
|00000e10| 6f 69 6e 74 65 72 2e 20 | 2a 2f 0a 0a 23 64 65 66 |ointer. |*/..#def|
|00000e20| 69 6e 65 20 69 6e 64 65 | 78 20 73 74 72 63 68 72 |ine inde|x strchr|
|00000e30| 0a 23 64 65 66 69 6e 65 | 20 72 69 6e 64 65 78 20 |.#define| rindex |
|00000e40| 73 74 72 72 63 68 72 0a | 0a 2f 2a 20 65 78 74 65 |strrchr.|./* exte|
|00000e50| 72 6e 20 63 68 61 72 20 | 90 04 2a 69 6e 64 65 78 |rn char |..*index|
|00000e60| 28 29 3b 20 2a 2f 0a 0a | 69 6e 74 0a 67 65 74 6f |(); */..|int.geto|
|00000e70| 70 74 28 61 72 67 63 2c | 20 61 72 67 76 2c 20 6f |pt(argc,| argv, o|
|00000e80| 70 74 73 74 72 69 6e 67 | 29 0a 09 69 6e 74 20 90 |ptstring|)..int .|
|00000e90| 0d 61 72 67 63 3b 0a 09 | 63 68 61 72 20 90 0b 2a |.argc;..|char ..*|
|00000ea0| 61 72 67 76 5b 5d 3b 0a | 63 68 61 72 20 90 0b 2a |argv[];.|char ..*|
|00000eb0| 6f 70 74 73 74 72 69 6e | 67 3b 0a 7b 0a 09 72 65 |optstrin|g;.{..re|
|00000ec0| 67 69 73 74 65 72 20 63 | 68 61 72 20 90 03 63 3b |gister c|har ..c;|
|00000ed0| 0a 09 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 |..regist|er char |
|00000ee0| 20 2a 70 6c 61 63 65 3b | 0a 0a 09 6f 70 74 61 72 | *place;|...optar|
|00000ef0| 67 20 3d 20 4e 55 4c 4c | 3b 0a 0a 09 69 66 20 28 |g = NULL|;...if (|
|00000f00| 73 63 61 6e 20 3d 3d 20 | 4e 55 4c 4c 20 7c 7c 20 |scan == |NULL || |
|00000f10| 2a 73 63 61 6e 20 3d 3d | 20 27 5c 30 27 29 20 7b |*scan ==| '\0') {|
|00000f20| 0a 09 09 69 66 20 28 6f | 70 74 69 6e 64 20 3d 3d |...if (o|ptind ==|
|00000f30| 20 30 29 0a 09 90 03 6f | 70 74 69 6e 64 2b 2b 3b | 0)....o|ptind++;|
|00000f40| 0a 0a 09 09 69 66 20 28 | 6f 70 74 69 6e 64 20 3e |....if (|optind >|
|00000f50| 3d 20 61 72 67 63 20 7c | 7c 20 61 72 67 76 5b 6f |= argc ||| argv[o|
|00000f60| 70 74 69 6e 64 5d 5b 30 | 5d 20 21 3d 20 27 2d 27 |ptind][0|] != '-'|
|00000f70| 20 7c 7c 20 61 72 67 76 | 5b 6f 70 74 69 6e 64 5d | || argv|[optind]|
|00000f80| 5b 31 5d 20 3d 3d 20 27 | 5c 30 27 29 0a 09 90 03 |[1] == '|\0')....|
|00000f90| 72 65 74 75 72 6e 20 28 | 45 4f 46 29 3b 0a 09 09 |return (|EOF);...|
|00000fa0| 69 66 20 28 73 74 72 63 | 6d 70 28 61 72 67 76 5b |if (strc|mp(argv[|
|00000fb0| 6f 70 74 69 6e 64 5d 2c | 20 22 2d 2d 22 29 20 3d |optind],| "--") =|
|00000fc0| 3d 20 30 29 20 7b 0a 09 | 90 03 6f 70 74 69 6e 64 |= 0) {..|..optind|
|00000fd0| 2b 2b 3b 0a 09 90 03 72 | 65 74 75 72 6e 20 28 45 |++;....r|eturn (E|
|00000fe0| 4f 46 29 3b 0a 09 09 7d | 0a 09 09 73 63 61 6e 20 |OF);...}|...scan |
|00000ff0| 3d 20 61 72 67 76 5b 6f | 70 74 69 6e 64 5d 20 2b |= argv[o|ptind] +|
|00001000| 20 31 3b 0a 09 09 6f 70 | 74 69 6e 64 2b 2b 3b 0a | 1;...op|tind++;.|
|00001010| 09 7d 0a 09 63 20 3d 20 | 2a 73 63 61 6e 2b 2b 3b |.}..c = |*scan++;|
|00001020| 0a 09 70 6c 61 63 65 20 | 3d 20 69 6e 64 65 78 28 |..place |= index(|
|00001030| 6f 70 74 73 74 72 69 6e | 67 2c 20 63 29 3b 0a 0a |optstrin|g, c);..|
|00001040| 09 69 66 20 28 70 6c 61 | 63 65 20 3d 3d 20 4e 55 |.if (pla|ce == NU|
|00001050| 4c 4c 20 7c 7c 20 63 20 | 3d 3d 20 27 3a 27 29 20 |LL || c |== ':') |
|00001060| 7b 0a 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |{...fpri|ntf(stde|
|00001070| 72 72 2c 20 22 25 73 3a | 20 75 6e 6b 6e 6f 77 6e |rr, "%s:| unknown|
|00001080| 20 6f 70 74 69 6f 6e 20 | 2d 25 63 5c 6e 22 2c 20 | option |-%c\n", |
|00001090| 61 72 67 76 5b 30 5d 2c | 20 63 29 3b 0a 09 09 72 |argv[0],| c);...r|
|000010a0| 65 74 75 72 6e 20 28 27 | 3f 27 29 3b 0a 09 7d 0a |eturn ('|?');..}.|
|000010b0| 09 70 6c 61 63 65 2b 2b | 3b 0a 09 69 66 20 28 2a |.place++|;..if (*|
|000010c0| 70 6c 61 63 65 20 3d 3d | 20 27 3a 27 29 20 7b 0a |place ==| ':') {.|
|000010d0| 09 09 69 66 20 28 2a 73 | 63 61 6e 20 21 3d 20 27 |..if (*s|can != '|
|000010e0| 5c 30 27 29 20 7b 0a 09 | 90 03 6f 70 74 61 72 67 |\0') {..|..optarg|
|000010f0| 20 3d 20 73 63 61 6e 3b | 0a 09 90 03 73 63 61 6e | = scan;|....scan|
|00001100| 20 3d 20 4e 55 4c 4c 3b | 0a 09 09 7d 20 65 6c 73 | = NULL;|...} els|
|00001110| 65 20 7b 0a 09 90 03 6f | 70 74 61 72 67 20 3d 20 |e {....o|ptarg = |
|00001120| 61 72 67 76 5b 6f 70 74 | 69 6e 64 5d 3b 0a 09 90 |argv[opt|ind];...|
|00001130| 03 6f 70 74 69 6e 64 2b | 2b 3b 0a 09 09 7d 0a 09 |.optind+|+;...}..|
|00001140| 7d 0a 09 72 65 74 75 72 | 6e 20 28 63 29 3b 0a 7d |}..retur|n (c);.}|
|00001150| 0a 00 90 ff 00 90 b1 3c | 74 61 72 5a 24 75 73 65 |.......<|tarZ$use|
|00001160| 3e 2f 66 69 6c 65 73 2f | 52 61 74 46 6f 72 2f 63 |>/files/|RatFor/c|
|00001170| 2f 6c 6f 6f 6b 75 70 00 | 90 44 20 90 03 36 30 30 |/lookup.|.D ..600|
|00001180| 00 00 20 90 05 30 00 00 | 20 90 05 30 00 00 20 90 |.. ..0..| ..0.. .|
|00001190| 07 33 30 31 35 00 20 34 | 37 36 37 32 33 37 35 31 |.3015. 4|76723751|
|000011a0| 34 00 20 31 32 33 32 33 | 00 20 30 00 90 9c 20 90 |4. 12323|. 0... .|
|000011b0| 0a 30 20 00 90 bb 23 69 | 6e 63 6c 75 64 65 20 3c |.0 ...#i|nclude <|
|000011c0| 73 74 64 69 6f 2e 68 3e | 0a 23 69 6e 63 6c 75 64 |stdio.h>|.#includ|
|000011d0| 65 20 22 6c 6f 6f 6b 75 | 70 2e 68 22 0a 0a 73 74 |e "looku|p.h"..st|
|000011e0| 61 74 69 63 0a 73 74 72 | 75 63 74 20 68 61 73 68 |atic.str|uct hash|
|000011f0| 6c 69 73 74 20 2a 68 61 | 73 68 74 61 62 5b 48 41 |list *ha|shtab[HA|
|00001200| 53 48 4d 41 58 5d 3b 0a | 0a 2f 2a 0a 20 2a 20 66 |SHMAX];.|./*. * f|
|00001210| 72 6f 6d 20 4b 26 52 20 | 22 54 68 65 20 43 20 50 |rom K&R |"The C P|
|00001220| 72 6f 67 72 61 6d 6d 69 | 6e 67 20 6c 61 6e 67 75 |rogrammi|ng langu|
|00001230| 61 67 65 22 20 54 61 62 | 6c 65 20 6c 6f 6f 6b 75 |age" Tab|le looku|
|00001240| 70 20 72 6f 75 74 69 6e | 65 73 0a 20 2a 20 0a 20 |p routin|es. * . |
|00001250| 2a 20 68 61 73 68 20 2d | 20 66 6f 72 20 61 20 68 |* hash -| for a h|
|00001260| 61 73 68 20 76 61 6c 75 | 65 20 66 6f 72 20 73 74 |ash valu|e for st|
|00001270| 72 69 6e 67 20 73 0a 20 | 2a 20 0a 20 2a 2f 0a 68 |ring s. |* . */.h|
|00001280| 61 73 68 28 73 29 0a 09 | 63 68 61 72 20 90 0b 2a |ash(s)..|char ..*|
|00001290| 73 3b 0a 7b 0a 09 69 6e | 74 20 90 0d 68 61 73 68 |s;.{..in|t ..hash|
|000012a0| 76 61 6c 3b 0a 0a 09 66 | 6f 72 20 28 68 61 73 68 |val;...f|or (hash|
|000012b0| 76 61 6c 20 3d 20 30 3b | 20 2a 73 20 21 3d 20 27 |val = 0;| *s != '|
|000012c0| 5c 30 27 3b 29 0a 09 09 | 68 61 73 68 76 61 6c 20 |\0';)...|hashval |
|000012d0| 2b 3d 20 2a 73 2b 2b 3b | 0a 09 72 65 74 75 72 6e |+= *s++;|..return|
|000012e0| 20 28 68 61 73 68 76 61 | 6c 20 25 20 48 41 53 48 | (hashva|l % HASH|
|000012f0| 4d 41 58 29 3b 0a 7d 0a | 0a 2f 2a 0a 20 2a 20 6c |MAX);.}.|./*. * l|
|00001300| 6f 6f 6b 75 70 20 2d 20 | 6c 6f 6f 6b 75 70 20 66 |ookup - |lookup f|
|00001310| 6f 72 20 61 20 73 74 72 | 69 6e 67 20 73 20 69 6e |or a str|ing s in|
|00001320| 20 74 68 65 20 68 61 73 | 68 20 74 61 62 6c 65 0a | the has|h table.|
|00001330| 20 2a 20 0a 20 2a 2f 0a | 73 74 72 75 63 74 20 68 | * . */.|struct h|
|00001340| 61 73 68 6c 69 73 74 0a | 20 90 0f 2a 0a 6c 6f 6f |ashlist.| ..*.loo|
|00001350| 6b 75 70 28 73 29 0a 09 | 63 68 61 72 20 90 0b 2a |kup(s)..|char ..*|
|00001360| 73 3b 0a 7b 0a 09 73 74 | 72 75 63 74 20 68 61 73 |s;.{..st|ruct has|
|00001370| 68 6c 69 73 74 20 2a 6e | 70 3b 0a 0a 09 66 6f 72 |hlist *n|p;...for|
|00001380| 20 28 6e 70 20 3d 20 68 | 61 73 68 74 61 62 5b 68 | (np = h|ashtab[h|
|00001390| 61 73 68 28 73 29 5d 3b | 20 6e 70 20 21 3d 20 4e |ash(s)];| np != N|
|000013a0| 55 4c 4c 3b 20 6e 70 20 | 3d 20 6e 70 2d 3e 6e 65 |ULL; np |= np->ne|
|000013b0| 78 74 29 0a 09 09 69 66 | 20 28 73 74 72 63 6d 70 |xt)...if| (strcmp|
|000013c0| 28 73 2c 20 6e 70 2d 3e | 6e 61 6d 65 29 20 3d 3d |(s, np->|name) ==|
|000013d0| 20 30 29 0a 09 90 03 72 | 65 74 75 72 6e 20 28 6e | 0)....r|eturn (n|
|000013e0| 70 29 3b 09 2f 2a 20 66 | 6f 75 6e 64 20 90 05 2a |p);./* f|ound ..*|
|000013f0| 2f 0a 09 72 65 74 75 72 | 6e 20 28 4e 55 4c 4c 29 |/..retur|n (NULL)|
|00001400| 3b 09 09 2f 2a 20 6e 6f | 74 20 66 6f 75 6e 64 20 |;../* no|t found |
|00001410| 2a 2f 0a 7d 0a 0a 2f 2a | 0a 20 2a 20 69 6e 73 74 |*/.}../*|. * inst|
|00001420| 61 6c 6c 20 2d 20 69 6e | 73 74 61 6c 6c 20 61 20 |all - in|stall a |
|00001430| 73 74 72 69 6e 67 20 6e | 61 6d 65 20 69 6e 20 68 |string n|ame in h|
|00001440| 61 73 68 74 61 62 6c 65 | 20 61 6e 64 20 69 74 73 |ashtable| and its|
|00001450| 20 76 61 6c 75 65 20 64 | 65 66 0a 20 2a 20 0a 20 | value d|ef. * . |
|00001460| 2a 2f 0a 73 74 72 75 63 | 74 20 68 61 73 68 6c 69 |*/.struc|t hashli|
|00001470| 73 74 0a 20 90 0f 2a 0a | 69 6e 73 74 61 6c 6c 28 |st. ..*.|install(|
|00001480| 6e 61 6d 65 2c 20 64 65 | 66 29 0a 09 63 68 61 72 |name, de|f)..char|
|00001490| 20 90 0b 2a 6e 61 6d 65 | 3b 0a 09 63 68 61 72 20 | ..*name|;..char |
|000014a0| 90 0b 2a 64 65 66 3b 0a | 7b 0a 09 69 6e 74 20 90 |..*def;.|{..int .|
|000014b0| 0d 68 61 73 68 76 61 6c | 3b 0a 09 73 74 72 75 63 |.hashval|;..struc|
|000014c0| 74 20 68 61 73 68 6c 69 | 73 74 20 2a 6e 70 2c 20 |t hashli|st *np, |
|000014d0| 2a 6c 6f 6f 6b 75 70 28 | 29 3b 0a 09 63 68 61 72 |*lookup(|);..char|
|000014e0| 20 90 0b 2a 73 74 72 73 | 61 76 65 28 29 2c 20 2a | ..*strs|ave(), *|
|000014f0| 6d 61 6c 6c 6f 63 28 29 | 3b 0a 0a 09 69 66 20 28 |malloc()|;...if (|
|00001500| 28 6e 70 20 3d 20 6c 6f | 6f 6b 75 70 28 6e 61 6d |(np = lo|okup(nam|
|00001510| 65 29 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 09 2f |e)) == N|ULL) {./|
|00001520| 2a 20 6e 6f 74 20 66 6f | 75 6e 64 2e 2e 20 2a 2f |* not fo|und.. */|
|00001530| 0a 09 09 6e 70 20 3d 20 | 28 73 74 72 75 63 74 20 |...np = |(struct |
|00001540| 68 61 73 68 6c 69 73 74 | 20 2a 29 20 6d 61 6c 6c |hashlist| *) mall|
|00001550| 6f 63 28 73 69 7a 65 6f | 66 28 2a 6e 70 29 29 3b |oc(sizeo|f(*np));|
|00001560| 0a 09 09 69 66 20 28 6e | 70 20 3d 3d 20 4e 55 4c |...if (n|p == NUL|
|00001570| 4c 29 0a 09 90 03 72 65 | 74 75 72 6e 20 28 4e 55 |L)....re|turn (NU|
|00001580| 4c 4c 29 3b 0a 09 09 69 | 66 20 28 28 6e 70 2d 3e |LL);...i|f ((np->|
|00001590| 6e 61 6d 65 20 3d 20 73 | 74 72 73 61 76 65 28 6e |name = s|trsave(n|
|000015a0| 61 6d 65 29 29 20 3d 3d | 20 4e 55 4c 4c 29 0a 09 |ame)) ==| NULL)..|
|000015b0| 90 03 72 65 74 75 72 6e | 20 28 4e 55 4c 4c 29 3b |..return| (NULL);|
|000015c0| 0a 09 09 68 61 73 68 76 | 61 6c 20 3d 20 68 61 73 |...hashv|al = has|
|000015d0| 68 28 6e 70 2d 3e 6e 61 | 6d 65 29 3b 0a 09 09 6e |h(np->na|me);...n|
|000015e0| 70 2d 3e 6e 65 78 74 20 | 3d 20 68 61 73 68 74 61 |p->next |= hashta|
|000015f0| 62 5b 68 61 73 68 76 61 | 6c 5d 3b 0a 09 09 68 61 |b[hashva|l];...ha|
|00001600| 73 68 74 61 62 5b 68 61 | 73 68 76 61 6c 5d 20 3d |shtab[ha|shval] =|
|00001610| 20 6e 70 3b 0a 09 7d 20 | 65 6c 73 65 09 90 03 2f | np;..} |else.../|
|00001620| 2a 20 66 6f 75 6e 64 2e | 2e 20 90 05 2a 2f 0a 09 |* found.|. ..*/..|
|00001630| 09 66 72 65 65 28 6e 70 | 2d 3e 64 65 66 29 3b 09 |.free(np|->def);.|
|00001640| 2f 2a 20 66 72 65 65 20 | 70 72 65 76 2e 20 20 2a |/* free |prev. *|
|00001650| 2f 0a 09 69 66 20 28 28 | 6e 70 2d 3e 64 65 66 20 |/..if ((|np->def |
|00001660| 3d 20 73 74 72 73 61 76 | 65 28 64 65 66 29 29 20 |= strsav|e(def)) |
|00001670| 3d 3d 20 4e 55 4c 4c 29 | 0a 09 09 72 65 74 75 72 |== NULL)|...retur|
|00001680| 6e 20 28 4e 55 4c 4c 29 | 3b 0a 09 72 65 74 75 72 |n (NULL)|;..retur|
|00001690| 6e 20 28 6e 70 29 3b 0a | 7d 0a 0a 2f 2a 0a 20 2a |n (np);.|}../*. *|
|000016a0| 20 73 74 72 73 61 76 65 | 20 2d 20 73 61 76 65 20 | strsave| - save |
|000016b0| 73 74 72 69 6e 67 20 73 | 20 73 6f 6d 65 77 68 65 |string s| somewhe|
|000016c0| 72 65 0a 20 2a 20 0a 20 | 2a 2f 0a 63 68 61 72 0a |re. * . |*/.char.|
|000016d0| 20 90 0f 2a 0a 73 74 72 | 73 61 76 65 28 73 29 0a | ..*.str|save(s).|
|000016e0| 09 63 68 61 72 20 90 0b | 2a 73 3b 0a 7b 0a 09 63 |.char ..|*s;.{..c|
|000016f0| 68 61 72 20 90 0b 2a 70 | 2c 20 2a 6d 61 6c 6c 6f |har ..*p|, *mallo|
|00001700| 63 28 29 3b 0a 0a 09 69 | 66 20 28 28 70 20 3d 20 |c();...i|f ((p = |
|00001710| 6d 61 6c 6c 6f 63 28 73 | 74 72 6c 65 6e 28 73 29 |malloc(s|trlen(s)|
|00001720| 20 2b 20 31 29 29 20 21 | 3d 20 4e 55 4c 4c 29 0a | + 1)) !|= NULL).|
|00001730| 09 09 73 74 72 63 70 79 | 28 70 2c 20 73 29 3b 0a |..strcpy|(p, s);.|
|00001740| 09 72 65 74 75 72 6e 20 | 28 70 29 3b 0a 7d 0a 00 |.return |(p);.}..|
|00001750| 90 ff 00 90 f4 3c 74 61 | 72 5a 24 75 73 65 3e 2f |.....<ta|rZ$use>/|
|00001760| 66 69 6c 65 73 2f 52 61 | 74 46 6f 72 2f 63 2f 72 |files/Ra|tFor/c/r|
|00001770| 61 74 34 00 90 46 20 90 | 03 36 30 30 00 00 20 90 |at4..F .|.600.. .|
|00001780| 05 30 00 00 20 90 05 30 | 00 00 20 90 05 31 30 35 |.0.. ..0|.. ..105|
|00001790| 37 34 31 00 20 34 37 36 | 37 32 33 37 34 33 31 00 |741. 476|7237431.|
|000017a0| 20 31 31 37 33 33 00 20 | 30 00 90 9c 20 90 0a 30 | 11733. |0... ..0|
|000017b0| 20 00 90 bb 2f 2a 0a 20 | 2a 20 72 61 74 66 6f 72 | .../*. |* ratfor|
|000017c0| 20 2d 20 41 20 72 61 74 | 66 6f 72 20 70 72 65 2d | - A rat|for pre-|
|000017d0| 70 72 6f 63 65 73 73 6f | 72 20 69 6e 20 43 2e 20 |processo|r in C. |
|000017e0| 44 65 72 69 76 65 64 20 | 66 72 6f 6d 20 61 20 70 |Derived |from a p|
|000017f0| 72 65 2d 70 72 6f 63 65 | 73 73 6f 72 0a 20 2a 20 |re-proce|ssor. * |
|00001800| 64 69 73 74 72 69 62 75 | 74 65 64 20 62 79 20 74 |distribu|ted by t|
|00001810| 68 65 20 55 6e 69 76 65 | 72 73 69 74 79 20 6f 66 |he Unive|rsity of|
|00001820| 20 41 72 69 7a 6f 6e 61 | 2e 20 43 6c 6f 73 65 6c | Arizona|. Closel|
|00001830| 79 20 63 6f 72 72 65 73 | 70 6f 6e 64 73 20 74 6f |y corres|ponds to|
|00001840| 20 74 68 65 0a 20 2a 20 | 70 72 65 2d 70 72 6f 63 | the. * |pre-proc|
|00001850| 65 73 73 6f 72 20 64 65 | 73 63 72 69 62 65 64 20 |essor de|scribed |
|00001860| 69 6e 20 74 68 65 20 22 | 53 4f 46 54 57 41 52 45 |in the "|SOFTWARE|
|00001870| 20 54 4f 4f 4c 53 22 20 | 62 6f 6f 6b 2e 0a 20 2a | TOOLS" |book.. *|
|00001880| 20 0a 20 2a 20 42 79 3a | 20 6f 7a 0a 20 2a 20 0a | . * By:| oz. * .|
|00001890| 20 2a 20 4e 6f 74 20 64 | 65 69 76 65 64 20 66 72 | * Not d|eived fr|
|000018a0| 6f 6d 20 41 54 26 54 20 | 63 6f 64 65 2e 0a 20 2a |om AT&T |code.. *|
|000018b0| 20 0a 20 2a 20 54 68 69 | 73 20 63 6f 64 65 20 69 | . * Thi|s code i|
|000018c0| 73 20 69 6e 20 74 68 65 | 20 70 75 62 6c 69 63 20 |s in the| public |
|000018d0| 64 6f 6d 61 69 6e 2e 20 | 49 6e 20 6f 74 68 65 72 |domain. |In other|
|000018e0| 20 77 6f 72 64 73 2c 20 | 61 6c 6c 20 72 69 67 68 | words, |all righ|
|000018f0| 74 73 20 61 72 65 20 67 | 72 61 6e 74 65 64 20 74 |ts are g|ranted t|
|00001900| 6f 0a 20 2a 20 61 6c 6c | 20 72 65 63 69 70 69 65 |o. * all| recipie|
|00001910| 6e 74 73 2c 20 22 70 75 | 62 6c 69 63 22 20 61 74 |nts, "pu|blic" at|
|00001920| 20 6c 61 72 67 65 2e 0a | 20 2a 20 0a 20 2a 20 4d | large..| * . * M|
|00001930| 6f 64 69 66 69 63 61 74 | 69 6f 6e 20 68 69 73 74 |odificat|ion hist|
|00001940| 6f 72 79 3a 0a 20 2a 20 | 0a 20 2a 20 4a 75 6e 65 |ory:. * |. * June|
|00001950| 20 31 39 38 35 20 2d 20 | 4b 65 6e 20 59 61 70 27 | 1985 - |Ken Yap'|
|00001960| 73 20 6d 6f 64 73 20 66 | 6f 72 20 46 37 37 20 6f |s mods f|or F77 o|
|00001970| 75 74 70 75 74 2e 20 43 | 75 72 72 65 6e 74 6c 79 |utput. C|urrently|
|00001980| 20 61 76 61 69 6c 61 62 | 6c 65 20 74 68 72 75 20 | availab|le thru |
|00001990| 23 64 65 66 69 6e 65 0a | 20 2a 20 46 37 37 2e 20 |#define.| * F77. |
|000019a0| 2d 20 54 77 6f 20 6d 69 | 6e 6f 72 20 62 75 67 2d |- Two mi|nor bug-|
|000019b0| 66 69 78 65 73 20 66 6f | 72 20 73 61 6e 65 20 6f |fixes fo|r sane o|
|000019c0| 75 74 70 75 74 2e 20 4a | 75 6e 65 20 31 39 38 35 |utput. J|une 1985|
|000019d0| 20 2d 20 49 6d 70 72 6f | 76 65 20 66 72 6f 6e 74 | - Impro|ve front|
|000019e0| 2d 65 6e 64 0a 20 2a 20 | 77 69 74 68 20 67 65 74 |-end. * |with get|
|000019f0| 6f 70 74 28 29 2e 20 55 | 73 65 72 20 6d 61 79 20 |opt(). U|ser may |
|00001a00| 73 70 65 63 69 66 79 20 | 2d 6c 20 6e 20 66 6f 72 |specify |-l n for|
|00001a10| 20 73 74 61 72 74 69 6e | 67 20 6c 61 62 65 6c 2e | startin|g label.|
|00001a20| 20 2d 20 52 65 74 72 6f | 66 69 74 20 73 77 69 74 | - Retro|fit swit|
|00001a30| 63 68 0a 20 2a 20 73 74 | 61 74 65 6d 65 6e 74 20 |ch. * st|atement |
|00001a40| 68 61 6e 64 6c 69 6e 67 | 2e 20 54 68 69 73 20 63 |handling|. This c|
|00001a50| 6f 64 65 20 69 73 20 62 | 6f 72 72 6f 77 65 64 20 |ode is b|orrowed |
|00001a60| 66 72 6f 6d 20 74 68 65 | 20 53 57 54 4f 4f 4c 53 |from the| SWTOOLS|
|00001a70| 20 52 61 74 66 6f 72 2e | 0a 20 2a 20 0a 20 2a 2f | Ratfor.|. * . */|
|00001a80| 0a 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |..#inclu|de <stdi|
|00001a90| 6f 2e 68 3e 0a 23 69 6e | 63 6c 75 64 65 20 22 72 |o.h>.#in|clude "r|
|00001aa0| 61 74 64 65 66 2e 68 22 | 0a 23 69 6e 63 6c 75 64 |atdef.h"|.#includ|
|00001ab0| 65 20 22 72 61 74 63 6f | 6d 2e 68 22 0a 0a 2f 2a |e "ratco|m.h"../*|
|00001ac0| 20 6b 65 79 77 6f 72 64 | 73 3a 20 2a 2f 0a 0a 63 | keyword|s: */..c|
|00001ad0| 68 61 72 20 90 0c 73 64 | 6f 5b 33 5d 20 3d 20 7b |har ..sd|o[3] = {|
|00001ae0| 0a 4c 45 54 44 2c 20 4c | 45 54 4f 2c 20 45 4f 53 |.LETD, L|ETO, EOS|
|00001af0| 7d 3b 0a 63 68 61 72 20 | 90 0c 76 64 6f 5b 32 5d |};.char |..vdo[2]|
|00001b00| 20 3d 20 7b 0a 4c 45 58 | 44 4f 2c 20 45 4f 53 7d | = {.LEX|DO, EOS}|
|00001b10| 3b 0a 0a 63 68 61 72 20 | 90 0c 73 69 66 5b 33 5d |;..char |..sif[3]|
|00001b20| 20 3d 20 7b 0a 4c 45 54 | 49 2c 20 4c 45 54 46 2c | = {.LET|I, LETF,|
|00001b30| 20 45 4f 53 7d 3b 0a 63 | 68 61 72 20 90 0c 76 69 | EOS};.c|har ..vi|
|00001b40| 66 5b 32 5d 20 3d 20 7b | 0a 4c 45 58 49 46 2c 20 |f[2] = {|.LEXIF, |
|00001b50| 45 4f 53 7d 3b 0a 0a 63 | 68 61 72 20 90 0c 73 65 |EOS};..c|har ..se|
|00001b60| 6c 73 65 5b 35 5d 20 3d | 20 7b 0a 4c 45 54 45 2c |lse[5] =| {.LETE,|
|00001b70| 20 4c 45 54 4c 2c 20 4c | 45 54 53 2c 20 4c 45 54 | LETL, L|ETS, LET|
|00001b80| 45 2c 20 45 4f 53 7d 3b | 0a 63 68 61 72 20 90 0c |E, EOS};|.char ..|
|00001b90| 76 65 6c 73 65 5b 32 5d | 20 3d 20 7b 0a 4c 45 58 |velse[2]| = {.LEX|
|00001ba0| 45 4c 53 45 2c 20 45 4f | 53 7d 3b 0a 0a 23 69 66 |ELSE, EO|S};..#if|
|00001bb0| 64 65 66 20 46 37 37 0a | 63 68 61 72 20 90 0c 73 |def F77.|char ..s|
|00001bc0| 74 68 65 6e 5b 35 5d 20 | 3d 20 7b 0a 4c 45 54 54 |then[5] |= {.LETT|
|00001bd0| 2c 20 4c 45 54 48 2c 20 | 4c 45 54 45 2c 20 4c 45 |, LETH, |LETE, LE|
|00001be0| 54 4e 2c 20 45 4f 53 7d | 3b 0a 0a 63 68 61 72 20 |TN, EOS}|;..char |
|00001bf0| 90 0c 73 65 6e 64 69 66 | 5b 36 5d 20 3d 20 7b 0a |..sendif|[6] = {.|
|00001c00| 4c 45 54 45 2c 20 4c 45 | 54 4e 2c 20 4c 45 54 44 |LETE, LE|TN, LETD|
|00001c10| 2c 20 4c 45 54 49 2c 20 | 4c 45 54 46 2c 20 45 4f |, LETI, |LETF, EO|
|00001c20| 53 7d 3b 0a 0a 23 65 6e | 64 69 66 20 46 37 37 0a |S};..#en|dif F77.|
|00001c30| 63 68 61 72 20 90 0c 73 | 77 68 69 6c 65 5b 36 5d |char ..s|while[6]|
|00001c40| 20 3d 20 7b 0a 4c 45 54 | 57 2c 20 4c 45 54 48 2c | = {.LET|W, LETH,|
|00001c50| 20 4c 45 54 49 2c 20 4c | 45 54 4c 2c 20 4c 45 54 | LETI, L|ETL, LET|
|00001c60| 45 2c 20 45 4f 53 7d 3b | 0a 63 68 61 72 20 90 0c |E, EOS};|.char ..|
|00001c70| 76 77 68 69 6c 65 5b 32 | 5d 20 3d 20 7b 0a 4c 45 |vwhile[2|] = {.LE|
|00001c80| 58 57 48 49 4c 45 2c 20 | 45 4f 53 7d 3b 0a 0a 63 |XWHILE, |EOS};..c|
|00001c90| 68 61 72 20 90 0c 73 62 | 72 65 61 6b 5b 36 5d 20 |har ..sb|reak[6] |
|00001ca0| 3d 20 7b 0a 4c 45 54 42 | 2c 20 4c 45 54 52 2c 20 |= {.LETB|, LETR, |
|00001cb0| 4c 45 54 45 2c 20 4c 45 | 54 41 2c 20 4c 45 54 4b |LETE, LE|TA, LETK|
|00001cc0| 2c 20 45 4f 53 7d 3b 0a | 63 68 61 72 20 90 0c 76 |, EOS};.|char ..v|
|00001cd0| 62 72 65 61 6b 5b 32 5d | 20 3d 20 7b 0a 4c 45 58 |break[2]| = {.LEX|
|00001ce0| 42 52 45 41 4b 2c 20 45 | 4f 53 7d 3b 0a 0a 63 68 |BREAK, E|OS};..ch|
|00001cf0| 61 72 20 90 0c 73 6e 65 | 78 74 5b 35 5d 20 3d 20 |ar ..sne|xt[5] = |
|00001d00| 7b 0a 4c 45 54 4e 2c 20 | 4c 45 54 45 2c 20 4c 45 |{.LETN, |LETE, LE|
|00001d10| 54 58 2c 20 4c 45 54 54 | 2c 20 45 4f 53 7d 3b 0a |TX, LETT|, EOS};.|
|00001d20| 63 68 61 72 20 90 0c 76 | 6e 65 78 74 5b 32 5d 20 |char ..v|next[2] |
|00001d30| 3d 20 7b 0a 4c 45 58 4e | 45 58 54 2c 20 45 4f 53 |= {.LEXN|EXT, EOS|
|00001d40| 7d 3b 0a 0a 63 68 61 72 | 20 90 0c 73 66 6f 72 5b |};..char| ..sfor[|
|00001d50| 34 5d 20 3d 20 7b 0a 4c | 45 54 46 2c 20 4c 45 54 |4] = {.L|ETF, LET|
|00001d60| 4f 2c 20 4c 45 54 52 2c | 20 45 4f 53 7d 3b 0a 63 |O, LETR,| EOS};.c|
|00001d70| 68 61 72 20 90 0c 76 66 | 6f 72 5b 32 5d 20 3d 20 |har ..vf|or[2] = |
|00001d80| 7b 0a 4c 45 58 46 4f 52 | 2c 20 45 4f 53 7d 3b 0a |{.LEXFOR|, EOS};.|
|00001d90| 0a 63 68 61 72 20 90 0c | 73 72 65 70 74 5b 37 5d |.char ..|srept[7]|
|00001da0| 20 3d 20 7b 0a 4c 45 54 | 52 2c 20 4c 45 54 45 2c | = {.LET|R, LETE,|
|00001db0| 20 4c 45 54 50 2c 20 4c | 45 54 45 2c 20 4c 45 54 | LETP, L|ETE, LET|
|00001dc0| 41 2c 20 4c 45 54 54 2c | 20 45 4f 53 7d 3b 0a 63 |A, LETT,| EOS};.c|
|00001dd0| 68 61 72 20 90 0c 76 72 | 65 70 74 5b 32 5d 20 3d |har ..vr|ept[2] =|
|00001de0| 20 7b 0a 4c 45 58 52 45 | 50 45 41 54 2c 20 45 4f | {.LEXRE|PEAT, EO|
|00001df0| 53 7d 3b 0a 0a 63 68 61 | 72 20 90 0c 73 75 6e 74 |S};..cha|r ..sunt|
|00001e00| 69 6c 5b 36 5d 20 3d 20 | 7b 0a 4c 45 54 55 2c 20 |il[6] = |{.LETU, |
|00001e10| 4c 45 54 4e 2c 20 4c 45 | 54 54 2c 20 4c 45 54 49 |LETN, LE|TT, LETI|
|00001e20| 2c 20 4c 45 54 4c 2c 20 | 45 4f 53 7d 3b 0a 63 68 |, LETL, |EOS};.ch|
|00001e30| 61 72 20 90 0c 76 75 6e | 74 69 6c 5b 32 5d 20 3d |ar ..vun|til[2] =|
|00001e40| 20 7b 0a 4c 45 58 55 4e | 54 49 4c 2c 20 45 4f 53 | {.LEXUN|TIL, EOS|
|00001e50| 7d 3b 0a 0a 63 68 61 72 | 20 90 0c 73 73 77 69 74 |};..char| ..sswit|
|00001e60| 63 68 5b 37 5d 20 3d 20 | 7b 0a 4c 45 54 53 2c 20 |ch[7] = |{.LETS, |
|00001e70| 4c 45 54 57 2c 20 4c 45 | 54 49 2c 20 4c 45 54 54 |LETW, LE|TI, LETT|
|00001e80| 2c 20 4c 45 54 43 2c 20 | 4c 45 54 48 2c 20 45 4f |, LETC, |LETH, EO|
|00001e90| 53 7d 3b 0a 63 68 61 72 | 20 90 0c 76 73 77 69 74 |S};.char| ..vswit|
|00001ea0| 63 68 5b 32 5d 20 3d 20 | 7b 0a 4c 45 58 53 57 49 |ch[2] = |{.LEXSWI|
|00001eb0| 54 43 48 2c 20 45 4f 53 | 7d 3b 0a 0a 63 68 61 72 |TCH, EOS|};..char|
|00001ec0| 20 90 0c 73 63 61 73 65 | 5b 35 5d 20 3d 20 7b 0a | ..scase|[5] = {.|
|00001ed0| 4c 45 54 43 2c 20 4c 45 | 54 41 2c 20 4c 45 54 53 |LETC, LE|TA, LETS|
|00001ee0| 2c 20 4c 45 54 45 2c 20 | 45 4f 53 7d 3b 0a 63 68 |, LETE, |EOS};.ch|
|00001ef0| 61 72 20 90 0c 76 63 61 | 73 65 5b 32 5d 20 3d 20 |ar ..vca|se[2] = |
|00001f00| 7b 0a 4c 45 58 43 41 53 | 45 2c 20 45 4f 53 7d 3b |{.LEXCAS|E, EOS};|
|00001f10| 0a 0a 63 68 61 72 20 90 | 0c 73 64 65 66 61 75 6c |..char .|.sdefaul|
|00001f20| 74 5b 38 5d 20 3d 20 7b | 0a 4c 45 54 44 2c 20 4c |t[8] = {|.LETD, L|
|00001f30| 45 54 45 2c 20 4c 45 54 | 46 2c 20 4c 45 54 41 2c |ETE, LET|F, LETA,|
|00001f40| 20 4c 45 54 55 2c 20 4c | 45 54 4c 2c 20 4c 45 54 | LETU, L|ETL, LET|
|00001f50| 54 2c 20 45 4f 53 7d 3b | 0a 63 68 61 72 20 90 0c |T, EOS};|.char ..|
|00001f60| 76 64 65 66 61 75 6c 74 | 5b 32 5d 20 3d 20 7b 0a |vdefault|[2] = {.|
|00001f70| 4c 45 58 44 45 46 41 55 | 4c 54 2c 20 45 4f 53 7d |LEXDEFAU|LT, EOS}|
|00001f80| 3b 0a 0a 63 68 61 72 20 | 90 0c 73 72 65 74 5b 37 |;..char |..sret[7|
|00001f90| 5d 20 3d 20 7b 0a 4c 45 | 54 52 2c 20 4c 45 54 45 |] = {.LE|TR, LETE|
|00001fa0| 2c 20 4c 45 54 54 2c 20 | 4c 45 54 55 2c 20 4c 45 |, LETT, |LETU, LE|
|00001fb0| 54 52 2c 20 4c 45 54 4e | 2c 20 45 4f 53 7d 3b 0a |TR, LETN|, EOS};.|
|00001fc0| 63 68 61 72 20 90 0c 76 | 72 65 74 5b 32 5d 20 3d |char ..v|ret[2] =|
|00001fd0| 20 7b 0a 4c 45 58 52 45 | 54 55 52 4e 2c 20 45 4f | {.LEXRE|TURN, EO|
|00001fe0| 53 7d 3b 0a 0a 63 68 61 | 72 20 90 0c 73 73 74 72 |S};..cha|r ..sstr|
|00001ff0| 5b 37 5d 20 3d 20 7b 0a | 4c 45 54 53 2c 20 4c 45 |[7] = {.|LETS, LE|
|00002000| 54 54 2c 20 4c 45 54 52 | 2c 20 4c 45 54 49 2c 20 |TT, LETR|, LETI, |
|00002010| 4c 45 54 4e 2c 20 4c 45 | 54 47 2c 20 45 4f 53 7d |LETN, LE|TG, EOS}|
|00002020| 3b 0a 63 68 61 72 20 90 | 0c 76 73 74 72 5b 32 5d |;.char .|.vstr[2]|
|00002030| 20 3d 20 7b 0a 4c 45 58 | 53 54 52 49 4e 47 2c 20 | = {.LEX|STRING, |
|00002040| 45 4f 53 7d 3b 0a 0a 63 | 68 61 72 20 90 0c 64 65 |EOS};..c|har ..de|
|00002050| 66 74 79 70 5b 32 5d 20 | 3d 20 7b 0a 44 45 46 54 |ftyp[2] |= {.DEFT|
|00002060| 59 50 45 2c 20 45 4f 53 | 7d 3b 0a 0a 2f 2a 20 63 |YPE, EOS|};../* c|
|00002070| 6f 6e 73 74 61 6e 74 20 | 73 74 72 69 6e 67 73 20 |onstant |strings |
|00002080| 2a 2f 0a 0a 63 68 61 72 | 20 90 0b 2a 65 72 72 6d |*/..char| ..*errm|
|00002090| 73 67 20 3d 20 22 65 72 | 72 6f 72 20 61 74 20 6c |sg = "er|ror at l|
|000020a0| 69 6e 65 20 22 3b 0a 63 | 68 61 72 20 90 0b 2a 69 |ine ";.c|har ..*i|
|000020b0| 6e 20 3d 20 22 20 69 6e | 20 22 3b 0a 63 68 61 72 |n = " in| ";.char|
|000020c0| 20 90 0b 2a 69 66 6e 6f | 74 20 3d 20 22 69 66 28 | ..*ifno|t = "if(|
|000020d0| 2e 6e 6f 74 2e 22 3b 0a | 63 68 61 72 20 90 0b 2a |.not.";.|char ..*|
|000020e0| 69 6e 63 6c 20 3d 20 22 | 69 6e 63 6c 75 64 65 22 |incl = "|include"|
|000020f0| 3b 0a 63 68 61 72 20 90 | 0b 2a 66 6e 63 6e 20 3d |;.char .|.*fncn =|
|00002100| 20 22 66 75 6e 63 74 69 | 6f 6e 22 3b 0a 63 68 61 | "functi|on";.cha|
|00002110| 72 20 90 0b 2a 64 65 66 | 20 3d 20 22 64 65 66 69 |r ..*def| = "defi|
|00002120| 6e 65 22 3b 0a 63 68 61 | 72 20 90 0b 2a 62 64 65 |ne";.cha|r ..*bde|
|00002130| 66 20 3d 20 22 44 45 46 | 49 4e 45 22 3b 0a 63 68 |f = "DEF|INE";.ch|
|00002140| 61 72 20 90 0b 2a 63 6f | 6e 74 69 6e 20 3d 20 22 |ar ..*co|ntin = "|
|00002150| 63 6f 6e 74 69 6e 75 65 | 22 3b 0a 63 68 61 72 20 |continue|";.char |
|00002160| 90 0b 2a 72 67 6f 74 6f | 20 3d 20 22 67 6f 74 6f |..*rgoto| = "goto|
|00002170| 20 22 3b 0a 63 68 61 72 | 20 90 0b 2a 64 61 74 20 | ";.char| ..*dat |
|00002180| 3d 20 22 64 61 74 61 20 | 22 3b 0a 63 68 61 72 20 |= "data |";.char |
|00002190| 90 0b 2a 65 6f 73 73 20 | 3d 20 22 45 4f 53 2f 22 |..*eoss |= "EOS/"|
|000021a0| 3b 0a 0a 65 78 74 65 72 | 6e 20 63 68 61 72 20 90 |;..exter|n char .|
|000021b0| 05 6e 67 65 74 63 68 28 | 29 3b 0a 63 68 61 72 20 |.ngetch(|);.char |
|000021c0| 90 0b 2a 70 72 6f 67 6e | 61 6d 65 3b 0a 69 6e 74 |..*progn|ame;.int|
|000021d0| 20 90 0d 73 74 61 72 74 | 6c 61 62 20 3d 20 32 33 | ..start|lab = 23|
|000021e0| 30 90 03 3b 09 2f 2a 20 | 64 65 66 61 75 6c 74 20 |0..;./* |default |
|000021f0| 73 74 61 72 74 20 6c 61 | 62 65 6c 20 2a 2f 0a 0a |start la|bel */..|
|00002200| 2f 2a 0a 20 2a 20 4d 20 | 41 20 49 20 4e 20 90 03 |/*. * M |A I N ..|
|00002210| 4c 20 49 20 4e 20 45 20 | 20 26 20 20 49 20 4e 20 |L I N E | & I N |
|00002220| 49 20 54 0a 20 2a 2f 0a | 0a 6d 61 69 6e 28 61 72 |I T. */.|.main(ar|
|00002230| 67 63 2c 20 61 72 67 76 | 29 0a 09 69 6e 74 20 90 |gc, argv|)..int .|
|00002240| 0d 61 72 67 63 3b 0a 09 | 63 68 61 72 20 90 0b 2a |.argc;..|char ..*|
|00002250| 61 72 67 76 5b 5d 3b 0a | 7b 0a 09 69 6e 74 20 90 |argv[];.|{..int .|
|00002260| 0d 63 2c 20 65 72 72 66 | 6c 67 20 3d 20 30 3b 0a |.c, errf|lg = 0;.|
|00002270| 09 65 78 74 65 72 6e 20 | 69 6e 74 20 90 06 6f 70 |.extern |int ..op|
|00002280| 74 69 6e 64 3b 0a 09 65 | 78 74 65 72 6e 20 63 68 |tind;..e|xtern ch|
|00002290| 61 72 20 90 04 2a 6f 70 | 74 61 72 67 3b 0a 0a 09 |ar ..*op|targ;...|
|000022a0| 70 72 6f 67 6e 61 6d 65 | 20 3d 20 61 72 67 76 5b |progname| = argv[|
|000022b0| 30 5d 3b 0a 0a 09 77 68 | 69 6c 65 20 28 28 63 20 |0];...wh|ile ((c |
|000022c0| 3d 20 67 65 74 6f 70 74 | 28 61 72 67 63 2c 20 61 |= getopt|(argc, a|
|000022d0| 72 67 76 2c 20 22 43 68 | 6e 3a 6f 3a 36 3a 22 29 |rgv, "Ch|n:o:6:")|
|000022e0| 29 20 21 3d 20 45 4f 46 | 29 0a 09 09 73 77 69 74 |) != EOF|)...swit|
|000022f0| 63 68 20 28 63 29 20 7b | 0a 09 09 63 61 73 65 20 |ch (c) {|...case |
|00002300| 27 43 27 3a 0a 09 90 03 | 2f 2a 20 6e 6f 74 20 77 |'C':....|/* not w|
|00002310| 72 69 74 74 65 6e 20 79 | 65 74 20 2a 2f 0a 09 90 |ritten y|et */...|
|00002320| 03 62 72 65 61 6b 3b 0a | 09 09 63 61 73 65 20 27 |.break;.|..case '|
|00002330| 68 27 3a 0a 09 90 03 2f | 2a 20 6e 6f 74 20 77 72 |h':..../|* not wr|
|00002340| 69 74 74 65 6e 20 79 65 | 74 20 2a 2f 0a 09 90 03 |itten ye|t */....|
|00002350| 62 72 65 61 6b 3b 0a 09 | 09 63 61 73 65 20 27 6c |break;..|.case 'l|
|00002360| 27 3a 09 2f 2a 20 75 73 | 65 72 20 73 65 74 73 20 |':./* us|er sets |
|00002370| 6c 61 62 65 6c 20 2a 2f | 0a 09 90 03 73 74 61 72 |label */|....star|
|00002380| 74 6c 61 62 20 3d 20 61 | 74 6f 69 28 6f 70 74 61 |tlab = a|toi(opta|
|00002390| 72 67 29 3b 0a 09 90 03 | 62 72 65 61 6b 3b 0a 09 |rg);....|break;..|
|000023a0| 09 63 61 73 65 20 27 6f | 27 3a 0a 09 90 03 69 66 |.case 'o|':....if|
|000023b0| 20 28 28 66 72 65 6f 70 | 65 6e 28 6f 70 74 61 72 | ((freop|en(optar|
|000023c0| 67 2c 20 22 77 22 2c 20 | 73 74 64 6f 75 74 29 29 |g, "w", |stdout))|
|000023d0| 20 3d 3d 20 4e 55 4c 4c | 29 0a 09 90 04 65 72 72 | == NULL|)....err|
|000023e0| 6f 72 28 22 63 61 6e 27 | 74 20 77 72 69 74 65 20 |or("can'|t write |
|000023f0| 25 73 5c 6e 22 2c 20 6f | 70 74 61 72 67 29 3b 0a |%s\n", o|ptarg);.|
|00002400| 09 90 03 62 72 65 61 6b | 3b 0a 09 09 63 61 73 65 |...break|;...case|
|00002410| 20 27 36 27 3a 0a 09 90 | 03 2f 2a 20 6e 6f 74 20 | '6':...|./* not |
|00002420| 77 72 69 74 74 65 6e 20 | 79 65 74 20 2a 2f 0a 09 |written |yet */..|
|00002430| 90 03 62 72 65 61 6b 3b | 0a 09 09 64 65 66 61 75 |..break;|...defau|
|00002440| 6c 74 3a 0a 09 90 03 2b | 2b 65 72 72 66 6c 67 3b |lt:....+|+errflg;|
|00002450| 0a 09 09 7d 0a 0a 09 69 | 66 20 28 65 72 72 66 6c |...}...i|f (errfl|
|00002460| 67 29 20 7b 0a 09 09 66 | 70 72 69 6e 74 66 28 73 |g) {...f|printf(s|
|00002470| 74 64 65 72 72 2c 0a 09 | 09 20 90 05 22 75 73 61 |tderr,..|. .."usa|
|00002480| 67 65 3a 20 25 73 20 5b | 2d 43 5d 5b 2d 68 78 5d |ge: %s [|-C][-hx]|
|00002490| 5b 2d 6c 20 6e 5d 5b 2d | 6f 20 66 69 6c 65 5d 5b |[-l n][-|o file][|
|000024a0| 2d 36 78 5d 20 5b 66 69 | 6c 65 2e 90 03 5d 5c 6e |-6x] [fi|le...]\n|
|000024b0| 22 29 3b 0a 09 09 65 78 | 69 74 28 31 29 3b 0a 09 |");...ex|it(1);..|
|000024c0| 7d 0a 09 2f 2a 0a 09 20 | 2a 20 70 72 65 73 65 6e |}../*.. |* presen|
|000024d0| 74 20 76 65 72 73 69 6f | 6e 20 63 61 6e 20 6f 6e |t versio|n can on|
|000024e0| 6c 79 20 70 72 6f 63 65 | 73 73 20 6f 6e 65 20 66 |ly proce|ss one f|
|000024f0| 69 6c 65 2c 20 73 61 64 | 6c 79 2e 0a 09 20 2a 2f |ile, sad|ly... */|
|00002500| 0a 09 69 66 20 28 6f 70 | 74 69 6e 64 20 3e 3d 20 |..if (op|tind >= |
|00002510| 61 72 67 63 29 0a 09 09 | 69 6e 66 69 6c 65 5b 30 |argc)...|infile[0|
|00002520| 5d 20 3d 20 73 74 64 69 | 6e 3b 0a 09 65 6c 73 65 |] = stdi|n;..else|
|00002530| 20 69 66 20 28 28 69 6e | 66 69 6c 65 5b 30 5d 20 | if ((in|file[0] |
|00002540| 3d 20 66 6f 70 65 6e 28 | 61 72 67 76 5b 6f 70 74 |= fopen(|argv[opt|
|00002550| 69 6e 64 5d 2c 20 22 72 | 22 29 29 20 3d 3d 20 4e |ind], "r|")) == N|
|00002560| 55 4c 4c 29 0a 09 09 65 | 72 72 6f 72 28 22 63 61 |ULL)...e|rror("ca|
|00002570| 6e 6e 6f 74 20 72 65 61 | 64 20 25 73 5c 6e 22 2c |nnot rea|d %s\n",|
|00002580| 20 61 72 67 76 5b 6f 70 | 74 69 6e 64 5d 29 3b 0a | argv[op|tind]);.|
|00002590| 0a 09 69 6e 69 74 76 61 | 72 73 28 29 3b 0a 0a 09 |..initva|rs();...|
|000025a0| 70 61 72 73 65 28 29 3b | 09 09 2f 2a 20 63 61 6c |parse();|../* cal|
|000025b0| 6c 20 70 61 72 73 65 72 | 2e 2e 20 2a 2f 0a 0a 09 |l parser|.. */...|
|000025c0| 65 78 69 74 28 31 29 3b | 0a 7d 0a 0a 2f 2a 0a 20 |exit(1);|.}../*. |
|000025d0| 2a 20 69 6e 69 74 69 61 | 6c 69 73 65 0a 20 2a 2f |* initia|lise. */|
|000025e0| 0a 69 6e 69 74 76 61 72 | 73 28 29 0a 7b 0a 09 69 |.initvar|s().{..i|
|000025f0| 6e 74 20 90 0d 69 3b 0a | 0a 09 6f 75 74 70 20 3d |nt ..i;.|..outp =|
|00002600| 20 30 3b 09 09 2f 2a 20 | 6f 75 74 70 75 74 20 63 | 0;../* |output c|
|00002610| 68 61 72 61 63 74 65 72 | 20 70 6f 69 6e 74 65 72 |haracter| pointer|
|00002620| 20 2a 2f 0a 09 6c 65 76 | 65 6c 20 3d 20 30 3b 09 | */..lev|el = 0;.|
|00002630| 09 2f 2a 20 66 69 6c 65 | 20 63 6f 6e 74 72 6f 6c |./* file| control|
|00002640| 20 2a 2f 0a 09 6c 69 6e | 65 63 74 5b 30 5d 20 3d | */..lin|ect[0] =|
|00002650| 20 31 3b 09 09 2f 2a 20 | 6c 69 6e 65 20 63 6f 75 | 1;../* |line cou|
|00002660| 6e 74 20 6f 66 20 66 69 | 72 73 74 20 66 69 6c 65 |nt of fi|rst file|
|00002670| 20 2a 2f 0a 09 66 6e 61 | 6d 70 20 3d 20 30 3b 0a | */..fna|mp = 0;.|
|00002680| 09 66 6e 61 6d 65 73 5b | 30 5d 20 3d 20 45 4f 53 |.fnames[|0] = EOS|
|00002690| 3b 0a 09 62 70 20 3d 20 | 2d 31 3b 09 09 2f 2a 20 |;..bp = |-1;../* |
|000026a0| 70 75 73 68 62 61 63 6b | 20 62 75 66 66 65 72 20 |pushback| buffer |
|000026b0| 70 6f 69 6e 74 65 72 20 | 2a 2f 0a 09 66 6f 72 64 |pointer |*/..ford|
|000026c0| 65 70 20 3d 20 30 3b 09 | 09 2f 2a 20 66 6f 72 20 |ep = 0;.|./* for |
|000026d0| 73 74 61 63 6b 20 2a 2f | 0a 09 73 77 74 6f 70 20 |stack */|..swtop |
|000026e0| 3d 20 30 3b 09 09 2f 2a | 20 73 77 69 74 63 68 20 |= 0;../*| switch |
|000026f0| 73 74 61 63 6b 20 69 6e | 64 65 78 20 2a 2f 0a 09 |stack in|dex */..|
|00002700| 73 77 6c 61 73 74 20 3d | 20 31 3b 09 09 2f 2a 20 |swlast =| 1;../* |
|00002710| 73 77 69 74 63 68 20 73 | 74 61 63 6b 20 69 6e 64 |switch s|tack ind|
|00002720| 65 78 20 2a 2f 0a 09 66 | 6f 72 20 28 69 20 3d 20 |ex */..f|or (i = |
|00002730| 30 3b 20 69 20 3c 3d 20 | 31 32 36 3b 20 69 2b 2b |0; i <= |126; i++|
|00002740| 29 0a 09 09 74 61 62 70 | 74 72 5b 69 5d 20 3d 20 |)...tabp|tr[i] = |
|00002750| 30 3b 0a 09 69 6e 73 74 | 61 6c 6c 28 64 65 66 2c |0;..inst|all(def,|
|00002760| 20 64 65 66 74 79 70 29 | 3b 09 2f 2a 20 64 65 66 | deftyp)|;./* def|
|00002770| 61 75 6c 74 20 64 65 66 | 69 6e 69 74 69 6f 6e 73 |ault def|initions|
|00002780| 20 2a 2f 0a 09 69 6e 73 | 74 61 6c 6c 28 62 64 65 | */..ins|tall(bde|
|00002790| 66 2c 20 64 65 66 74 79 | 70 29 3b 0a 09 66 63 6e |f, defty|p);..fcn|
|000027a0| 61 6d 65 5b 30 5d 20 3d | 20 45 4f 53 3b 09 2f 2a |ame[0] =| EOS;./*|
|000027b0| 20 63 75 72 72 65 6e 74 | 20 66 75 6e 63 74 69 6f | current| functio|
|000027c0| 6e 20 6e 61 6d 65 20 2a | 2f 0a 09 6c 61 62 65 6c |n name *|/..label|
|000027d0| 20 3d 20 73 74 61 72 74 | 6c 61 62 3b 09 2f 2a 20 | = start|lab;./* |
|000027e0| 6e 65 78 74 20 67 65 6e | 65 72 61 74 65 64 20 6c |next gen|erated l|
|000027f0| 61 62 65 6c 20 2a 2f 0a | 7d 0a 0a 2f 2a 0a 20 2a |abel */.|}../*. *|
|00002800| 20 50 20 41 20 52 20 53 | 20 45 20 52 0a 20 2a 2f | P A R S| E R. */|
|00002810| 0a 0a 70 61 72 73 65 28 | 29 0a 7b 0a 09 63 68 61 |..parse(|).{..cha|
|00002820| 72 20 90 0c 6c 65 78 73 | 74 72 5b 4d 41 58 54 4f |r ..lexs|tr[MAXTO|
|00002830| 4b 5d 3b 0a 09 69 6e 74 | 20 90 0d 6c 61 62 2c 20 |K];..int| ..lab, |
|00002840| 6c 61 62 76 61 6c 5b 4d | 41 58 53 54 41 43 4b 5d |labval[M|AXSTACK]|
|00002850| 2c 20 6c 65 78 74 79 70 | 5b 4d 41 58 53 54 41 43 |, lextyp|[MAXSTAC|
|00002860| 4b 5d 2c 20 73 70 2c 20 | 69 2c 20 74 6f 6b 65 6e |K], sp, |i, token|
|00002870| 3b 0a 0a 09 73 70 20 3d | 20 30 3b 0a 09 6c 65 78 |;...sp =| 0;..lex|
|00002880| 74 79 70 5b 30 5d 20 3d | 20 45 4f 46 3b 0a 09 66 |typ[0] =| EOF;..f|
|00002890| 6f 72 20 28 74 6f 6b 65 | 6e 20 3d 20 6c 65 78 28 |or (toke|n = lex(|
|000028a0| 6c 65 78 73 74 72 29 3b | 20 74 6f 6b 65 6e 20 21 |lexstr);| token !|
|000028b0| 3d 20 45 4f 46 3b 20 74 | 6f 6b 65 6e 20 3d 20 6c |= EOF; t|oken = l|
|000028c0| 65 78 28 6c 65 78 73 74 | 72 29 29 20 7b 0a 09 09 |ex(lexst|r)) {...|
|000028d0| 69 66 20 28 74 6f 6b 65 | 6e 20 3d 3d 20 4c 45 58 |if (toke|n == LEX|
|000028e0| 49 46 29 0a 09 90 03 69 | 66 63 6f 64 65 28 26 6c |IF)....i|fcode(&l|
|000028f0| 61 62 29 3b 0a 09 09 65 | 6c 73 65 20 69 66 20 28 |ab);...e|lse if (|
|00002900| 74 6f 6b 65 6e 20 3d 3d | 20 4c 45 58 44 4f 29 0a |token ==| LEXDO).|
|00002910| 09 90 03 64 6f 63 6f 64 | 65 28 26 6c 61 62 29 3b |...docod|e(&lab);|
|00002920| 0a 09 09 65 6c 73 65 20 | 69 66 20 28 74 6f 6b 65 |...else |if (toke|
|00002930| 6e 20 3d 3d 20 4c 45 58 | 57 48 49 4c 45 29 0a 09 |n == LEX|WHILE)..|
|00002940| 90 03 77 68 69 6c 65 63 | 28 26 6c 61 62 29 3b 0a |..whilec|(&lab);.|
|00002950| 09 09 65 6c 73 65 20 69 | 66 20 28 74 6f 6b 65 6e |..else i|f (token|
|00002960| 20 3d 3d 20 4c 45 58 46 | 4f 52 29 0a 09 90 03 66 | == LEXF|OR)....f|
|00002970| 6f 72 63 6f 64 28 26 6c | 61 62 29 3b 0a 09 09 65 |orcod(&l|ab);...e|
|00002980| 6c 73 65 20 69 66 20 28 | 74 6f 6b 65 6e 20 3d 3d |lse if (|token ==|
|00002990| 20 4c 45 58 52 45 50 45 | 41 54 29 0a 09 90 03 72 | LEXREPE|AT)....r|
|000029a0| 65 70 63 6f 64 28 26 6c | 61 62 29 3b 0a 09 09 65 |epcod(&l|ab);...e|
|000029b0| 6c 73 65 20 69 66 20 28 | 74 6f 6b 65 6e 20 3d 3d |lse if (|token ==|
|000029c0| 20 4c 45 58 53 57 49 54 | 43 48 29 0a 09 90 03 73 | LEXSWIT|CH)....s|
|000029d0| 77 63 6f 64 65 28 26 6c | 61 62 29 3b 0a 09 09 65 |wcode(&l|ab);...e|
|000029e0| 6c 73 65 20 69 66 20 28 | 74 6f 6b 65 6e 20 3d 3d |lse if (|token ==|
|000029f0| 20 4c 45 58 43 41 53 45 | 20 7c 7c 20 74 6f 6b 65 | LEXCASE| || toke|
|00002a00| 6e 20 3d 3d 20 4c 45 58 | 44 45 46 41 55 4c 54 29 |n == LEX|DEFAULT)|
|00002a10| 20 7b 0a 09 90 03 66 6f | 72 20 28 69 20 3d 20 73 | {....fo|r (i = s|
|00002a20| 70 3b 20 69 20 3e 3d 20 | 30 3b 20 69 2d 2d 29 0a |p; i >= |0; i--).|
|00002a30| 09 90 04 69 66 20 28 6c | 65 78 74 79 70 5b 69 5d |...if (l|extyp[i]|
|00002a40| 20 3d 3d 20 4c 45 58 53 | 57 49 54 43 48 29 0a 09 | == LEXS|WITCH)..|
|00002a50| 90 05 62 72 65 61 6b 3b | 0a 09 90 03 69 66 20 28 |..break;|....if (|
|00002a60| 69 20 3c 20 30 29 0a 09 | 90 04 73 79 6e 65 72 72 |i < 0)..|..synerr|
|00002a70| 28 22 69 6c 6c 65 67 61 | 6c 20 63 61 73 65 20 6f |("illega|l case o|
|00002a80| 66 20 64 65 66 61 75 6c | 74 2e 22 29 3b 0a 09 90 |f defaul|t.");...|
|00002a90| 03 65 6c 73 65 0a 09 90 | 04 63 61 73 63 6f 64 28 |.else...|.cascod(|
|00002aa0| 6c 61 62 76 61 6c 5b 69 | 5d 2c 20 74 6f 6b 65 6e |labval[i|], token|
|00002ab0| 29 3b 0a 09 09 7d 20 65 | 6c 73 65 20 69 66 20 28 |);...} e|lse if (|
|00002ac0| 74 6f 6b 65 6e 20 3d 3d | 20 4c 45 58 44 49 47 49 |token ==| LEXDIGI|
|00002ad0| 54 53 29 0a 09 90 03 6c | 61 62 65 6c 63 28 6c 65 |TS)....l|abelc(le|
|00002ae0| 78 73 74 72 29 3b 0a 09 | 09 65 6c 73 65 20 69 66 |xstr);..|.else if|
|00002af0| 20 28 74 6f 6b 65 6e 20 | 3d 3d 20 4c 45 58 45 4c | (token |== LEXEL|
|00002b00| 53 45 29 20 7b 0a 09 90 | 03 69 66 20 28 6c 65 78 |SE) {...|.if (lex|
|00002b10| 74 79 70 5b 73 70 5d 20 | 3d 3d 20 4c 45 58 49 46 |typ[sp] |== LEXIF|
|00002b20| 29 0a 09 90 04 65 6c 73 | 65 69 66 28 6c 61 62 76 |)....els|eif(labv|
|00002b30| 61 6c 5b 73 70 5d 29 3b | 0a 09 90 03 65 6c 73 65 |al[sp]);|....else|
|00002b40| 0a 09 90 04 73 79 6e 65 | 72 72 28 22 69 6c 6c 65 |....syne|rr("ille|
|00002b50| 67 61 6c 20 65 6c 73 65 | 2e 22 29 3b 0a 09 09 7d |gal else|.");...}|
|00002b60| 0a 09 09 69 66 20 28 74 | 6f 6b 65 6e 20 3d 3d 20 |...if (t|oken == |
|00002b70| 4c 45 58 49 46 20 7c 7c | 20 74 6f 6b 65 6e 20 3d |LEXIF ||| token =|
|00002b80| 3d 20 4c 45 58 45 4c 53 | 45 20 7c 7c 20 74 6f 6b |= LEXELS|E || tok|
|00002b90| 65 6e 20 3d 3d 20 4c 45 | 58 57 48 49 4c 45 0a 09 |en == LE|XWHILE..|
|00002ba0| 09 20 90 04 7c 7c 20 74 | 6f 6b 65 6e 20 3d 3d 20 |. ..|| t|oken == |
|00002bb0| 4c 45 58 46 4f 52 20 7c | 7c 20 74 6f 6b 65 6e 20 |LEXFOR ||| token |
|00002bc0| 3d 3d 20 4c 45 58 52 45 | 50 45 41 54 0a 09 09 20 |== LEXRE|PEAT... |
|00002bd0| 90 04 7c 7c 20 74 6f 6b | 65 6e 20 3d 3d 20 4c 45 |..|| tok|en == LE|
|00002be0| 58 44 4f 20 7c 7c 20 74 | 6f 6b 65 6e 20 3d 3d 20 |XDO || t|oken == |
|00002bf0| 4c 45 58 44 49 47 49 54 | 53 0a 09 09 20 90 04 7c |LEXDIGIT|S... ..||
|00002c00| 7c 20 74 6f 6b 65 6e 20 | 3d 3d 20 4c 45 58 53 57 || token |== LEXSW|
|00002c10| 49 54 43 48 20 7c 7c 20 | 74 6f 6b 65 6e 20 3d 3d |ITCH || |token ==|
|00002c20| 20 4c 42 52 41 43 45 29 | 20 7b 0a 09 90 03 73 70 | LBRACE)| {....sp|
|00002c30| 2b 2b 3b 09 2f 2a 20 62 | 65 67 69 6e 6e 69 6e 67 |++;./* b|eginning|
|00002c40| 20 6f 66 20 73 74 61 74 | 65 6d 65 6e 74 20 2a 2f | of stat|ement */|
|00002c50| 0a 09 90 03 69 66 20 28 | 73 70 20 3e 20 4d 41 58 |....if (|sp > MAX|
|00002c60| 53 54 41 43 4b 29 0a 09 | 90 04 62 61 64 65 72 72 |STACK)..|..baderr|
|00002c70| 28 22 73 74 61 63 6b 20 | 6f 76 65 72 66 6c 6f 77 |("stack |overflow|
|00002c80| 20 69 6e 20 70 61 72 73 | 65 72 2e 22 29 3b 0a 09 | in pars|er.");..|
|00002c90| 90 03 6c 65 78 74 79 70 | 5b 73 70 5d 20 3d 20 74 |..lextyp|[sp] = t|
|00002ca0| 6f 6b 65 6e 3b 09 2f 2a | 20 73 74 61 63 6b 20 74 |oken;./*| stack t|
|00002cb0| 79 70 65 20 61 6e 64 20 | 76 61 6c 75 65 20 2a 2f |ype and |value */|
|00002cc0| 0a 09 90 03 6c 61 62 76 | 61 6c 5b 73 70 5d 20 3d |....labv|al[sp] =|
|00002cd0| 20 6c 61 62 3b 0a 09 09 | 7d 20 65 6c 73 65 20 69 | lab;...|} else i|
|00002ce0| 66 20 28 74 6f 6b 65 6e | 20 21 3d 20 4c 45 58 43 |f (token| != LEXC|
|00002cf0| 41 53 45 20 26 26 20 74 | 6f 6b 65 6e 20 21 3d 20 |ASE && t|oken != |
|00002d00| 4c 45 58 44 45 46 41 55 | 4c 54 29 20 7b 0a 09 90 |LEXDEFAU|LT) {...|
|00002d10| 03 2f 2a 0a 09 90 03 20 | 2a 20 65 6e 64 20 6f 66 |./*.... |* end of|
|00002d20| 20 73 74 61 74 65 6d 65 | 6e 74 20 2d 20 70 72 65 | stateme|nt - pre|
|00002d30| 70 61 72 65 20 74 6f 20 | 75 6e 73 74 61 63 6b 0a |pare to |unstack.|
|00002d40| 09 90 03 20 2a 2f 0a 09 | 90 03 69 66 20 28 74 6f |... */..|..if (to|
|00002d50| 6b 65 6e 20 3d 3d 20 52 | 42 52 41 43 45 29 20 7b |ken == R|BRACE) {|
|00002d60| 0a 09 90 04 69 66 20 28 | 6c 65 78 74 79 70 5b 73 |....if (|lextyp[s|
|00002d70| 70 5d 20 3d 3d 20 4c 42 | 52 41 43 45 29 0a 09 90 |p] == LB|RACE)...|
|00002d80| 05 73 70 2d 2d 3b 0a 09 | 90 04 65 6c 73 65 20 69 |.sp--;..|..else i|
|00002d90| 66 20 28 6c 65 78 74 79 | 70 5b 73 70 5d 20 3d 3d |f (lexty|p[sp] ==|
|00002da0| 20 4c 45 58 53 57 49 54 | 43 48 29 20 7b 0a 09 90 | LEXSWIT|CH) {...|
|00002db0| 05 73 77 65 6e 64 28 6c | 61 62 76 61 6c 5b 73 70 |.swend(l|abval[sp|
|00002dc0| 5d 29 3b 0a 09 90 05 73 | 70 2d 2d 3b 0a 09 90 04 |]);....s|p--;....|
|00002dd0| 7d 20 65 6c 73 65 0a 09 | 90 05 73 79 6e 65 72 72 |} else..|..synerr|
|00002de0| 28 22 69 6c 6c 65 67 61 | 6c 20 72 69 67 68 74 20 |("illega|l right |
|00002df0| 62 72 61 63 65 2e 22 29 | 3b 0a 09 90 03 7d 20 65 |brace.")|;....} e|
|00002e00| 6c 73 65 20 69 66 20 28 | 74 6f 6b 65 6e 20 3d 3d |lse if (|token ==|
|00002e10| 20 4c 45 58 4f 54 48 45 | 52 29 0a 09 90 04 6f 74 | LEXOTHE|R)....ot|
|00002e20| 68 65 72 63 28 6c 65 78 | 73 74 72 29 3b 0a 09 90 |herc(lex|str);...|
|00002e30| 03 65 6c 73 65 20 69 66 | 20 28 74 6f 6b 65 6e 20 |.else if| (token |
|00002e40| 3d 3d 20 4c 45 58 42 52 | 45 41 4b 20 7c 7c 20 74 |== LEXBR|EAK || t|
|00002e50| 6f 6b 65 6e 20 3d 3d 20 | 4c 45 58 4e 45 58 54 29 |oken == |LEXNEXT)|
|00002e60| 0a 09 90 04 62 72 6b 6e | 78 74 28 73 70 2c 20 6c |....brkn|xt(sp, l|
|00002e70| 65 78 74 79 70 2c 20 6c | 61 62 76 61 6c 2c 20 74 |extyp, l|abval, t|
|00002e80| 6f 6b 65 6e 29 3b 0a 09 | 90 03 65 6c 73 65 20 69 |oken);..|..else i|
|00002e90| 66 20 28 74 6f 6b 65 6e | 20 3d 3d 20 4c 45 58 52 |f (token| == LEXR|
|00002ea0| 45 54 55 52 4e 29 0a 09 | 90 04 72 65 74 63 6f 64 |ETURN)..|..retcod|
|00002eb0| 28 29 3b 0a 09 90 03 65 | 6c 73 65 20 69 66 20 28 |();....e|lse if (|
|00002ec0| 74 6f 6b 65 6e 20 3d 3d | 20 4c 45 58 53 54 52 49 |token ==| LEXSTRI|
|00002ed0| 4e 47 29 0a 09 90 04 73 | 74 72 64 63 6c 28 29 3b |NG)....s|trdcl();|
|00002ee0| 0a 09 90 03 74 6f 6b 65 | 6e 20 3d 20 6c 65 78 28 |....toke|n = lex(|
|00002ef0| 6c 65 78 73 74 72 29 3b | 09 2f 2a 20 70 65 65 6b |lexstr);|./* peek|
|00002f00| 20 61 74 20 6e 65 78 74 | 20 74 6f 6b 65 6e 20 2a | at next| token *|
|00002f10| 2f 0a 09 90 03 70 62 73 | 74 72 28 6c 65 78 73 74 |/....pbs|tr(lexst|
|00002f20| 72 29 3b 0a 09 90 03 75 | 6e 73 74 61 6b 28 26 73 |r);....u|nstak(&s|
|00002f30| 70 2c 20 6c 65 78 74 79 | 70 2c 20 6c 61 62 76 61 |p, lexty|p, labva|
|00002f40| 6c 2c 20 74 6f 6b 65 6e | 29 3b 0a 09 09 7d 0a 09 |l, token|);...}..|
|00002f50| 7d 0a 09 69 66 20 28 73 | 70 20 21 3d 20 30 29 0a |}..if (s|p != 0).|
|00002f60| 09 09 73 79 6e 65 72 72 | 28 22 75 6e 65 78 70 65 |..synerr|("unexpe|
|00002f70| 63 74 65 64 20 45 4f 46 | 2e 22 29 3b 0a 7d 0a 0a |cted EOF|.");.}..|
|00002f80| 2f 2a 0a 20 2a 20 4c 20 | 45 20 58 20 49 20 43 20 |/*. * L |E X I C |
|00002f90| 41 20 4c 20 20 41 20 4e | 20 41 20 4c 20 59 20 53 |A L A N| A L Y S|
|00002fa0| 20 45 20 52 0a 20 2a 2f | 0a 0a 2f 2a 0a 20 2a 20 | E R. */|../*. * |
|00002fb0| 61 6c 6c 64 69 67 20 2d | 20 72 65 74 75 72 6e 20 |alldig -| return |
|00002fc0| 59 45 53 20 69 66 20 73 | 74 72 20 69 73 20 61 6c |YES if s|tr is al|
|00002fd0| 6c 20 64 69 67 69 74 73 | 0a 20 2a 20 0a 20 2a 2f |l digits|. * . */|
|00002fe0| 0a 69 6e 74 0a 61 6c 6c | 64 69 67 28 73 74 72 29 |.int.all|dig(str)|
|00002ff0| 0a 09 63 68 61 72 20 90 | 0c 73 74 72 5b 5d 3b 0a |..char .|.str[];.|
|00003000| 7b 0a 09 69 6e 74 20 90 | 0d 69 2c 20 6a 3b 0a 0a |{..int .|.i, j;..|
|00003010| 09 6a 20 3d 20 4e 4f 3b | 0a 09 69 66 20 28 73 74 |.j = NO;|..if (st|
|00003020| 72 5b 30 5d 20 3d 3d 20 | 45 4f 53 29 0a 09 09 72 |r[0] == |EOS)...r|
|00003030| 65 74 75 72 6e 20 28 6a | 29 3b 0a 09 66 6f 72 20 |eturn (j|);..for |
|00003040| 28 69 20 3d 20 30 3b 20 | 73 74 72 5b 69 5d 20 21 |(i = 0; |str[i] !|
|00003050| 3d 20 45 4f 53 3b 20 69 | 2b 2b 29 0a 09 09 69 66 |= EOS; i|++)...if|
|00003060| 20 28 74 79 70 65 28 73 | 74 72 5b 69 5d 29 20 21 | (type(s|tr[i]) !|
|00003070| 3d 20 44 49 47 49 54 29 | 0a 09 90 03 72 65 74 75 |= DIGIT)|....retu|
|00003080| 72 6e 20 28 6a 29 3b 0a | 09 6a 20 3d 20 59 45 53 |rn (j);.|.j = YES|
|00003090| 3b 0a 09 72 65 74 75 72 | 6e 20 28 6a 29 3b 0a 7d |;..retur|n (j);.}|
|000030a0| 0a 90 03 2f 2a 0a 20 2a | 20 62 61 6c 70 61 72 20 |.../*. *| balpar |
|000030b0| 2d 20 63 6f 70 79 20 62 | 61 6c 61 6e 63 65 64 20 |- copy b|alanced |
|000030c0| 70 61 72 65 6e 20 73 74 | 72 69 6e 67 0a 20 2a 20 |paren st|ring. * |
|000030d0| 0a 20 2a 2f 0a 62 61 6c | 70 61 72 28 29 0a 7b 0a |. */.bal|par().{.|
|000030e0| 09 63 68 61 72 20 90 0c | 74 6f 6b 65 6e 5b 4d 41 |.char ..|token[MA|
|000030f0| 58 54 4f 4b 5d 3b 0a 09 | 69 6e 74 20 90 0d 74 2c |XTOK];..|int ..t,|
|00003100| 20 6e 6c 70 61 72 3b 0a | 0a 09 69 66 20 28 67 6e | nlpar;.|..if (gn|
|00003110| 62 74 6f 6b 28 74 6f 6b | 65 6e 2c 20 4d 41 58 54 |btok(tok|en, MAXT|
|00003120| 4f 4b 29 20 21 3d 20 4c | 50 41 52 45 4e 29 20 7b |OK) != L|PAREN) {|
|00003130| 0a 09 09 73 79 6e 65 72 | 72 28 22 6d 69 73 73 69 |...syner|r("missi|
|00003140| 6e 67 20 6c 65 66 74 20 | 70 61 72 65 6e 2e 22 29 |ng left |paren.")|
|00003150| 3b 0a 09 09 72 65 74 75 | 72 6e 3b 0a 09 7d 0a 09 |;...retu|rn;..}..|
|00003160| 6f 75 74 73 74 72 28 74 | 6f 6b 65 6e 29 3b 0a 09 |outstr(t|oken);..|
|00003170| 6e 6c 70 61 72 20 3d 20 | 31 3b 0a 09 64 6f 20 7b |nlpar = |1;..do {|
|00003180| 0a 09 09 74 20 3d 20 67 | 65 74 74 6f 6b 28 74 6f |...t = g|ettok(to|
|00003190| 6b 65 6e 2c 20 4d 41 58 | 54 4f 4b 29 3b 0a 09 09 |ken, MAX|TOK);...|
|000031a0| 69 66 20 28 74 20 3d 3d | 20 53 45 4d 49 43 4f 4c |if (t ==| SEMICOL|
|000031b0| 20 7c 7c 20 74 20 3d 3d | 20 4c 42 52 41 43 45 20 | || t ==| LBRACE |
|000031c0| 7c 7c 20 74 20 3d 3d 20 | 52 42 52 41 43 45 20 7c ||| t == |RBRACE ||
|000031d0| 7c 20 74 20 3d 3d 20 45 | 4f 46 29 20 7b 0a 09 90 || t == E|OF) {...|
|000031e0| 03 70 62 73 74 72 28 74 | 6f 6b 65 6e 29 3b 0a 09 |.pbstr(t|oken);..|
|000031f0| 90 03 62 72 65 61 6b 3b | 0a 09 09 7d 0a 09 09 69 |..break;|...}...i|
|00003200| 66 20 28 74 20 3d 3d 20 | 4e 45 57 4c 49 4e 45 29 |f (t == |NEWLINE)|
|00003210| 09 2f 2a 20 64 65 6c 65 | 74 65 20 6e 65 77 6c 69 |./* dele|te newli|
|00003220| 6e 65 73 20 2a 2f 0a 09 | 90 03 74 6f 6b 65 6e 5b |nes */..|..token[|
|00003230| 30 5d 20 3d 20 45 4f 53 | 3b 0a 09 09 65 6c 73 65 |0] = EOS|;...else|
|00003240| 20 69 66 20 28 74 20 3d | 3d 20 4c 50 41 52 45 4e | if (t =|= LPAREN|
|00003250| 29 0a 09 90 03 6e 6c 70 | 61 72 2b 2b 3b 0a 09 09 |)....nlp|ar++;...|
|00003260| 65 6c 73 65 20 69 66 20 | 28 74 20 3d 3d 20 52 50 |else if |(t == RP|
|00003270| 41 52 45 4e 29 0a 09 90 | 03 6e 6c 70 61 72 2d 2d |AREN)...|.nlpar--|
|00003280| 3b 0a 09 09 2f 2a 20 65 | 6c 73 65 20 6e 6f 74 68 |;.../* e|lse noth|
|00003290| 69 6e 67 20 73 70 65 63 | 69 61 6c 20 2a 2f 0a 09 |ing spec|ial */..|
|000032a0| 09 6f 75 74 73 74 72 28 | 74 6f 6b 65 6e 29 3b 0a |.outstr(|token);.|
|000032b0| 09 7d 0a 09 77 68 69 6c | 65 20 28 6e 6c 70 61 72 |.}..whil|e (nlpar|
|000032c0| 20 3e 20 30 29 3b 0a 09 | 69 66 20 28 6e 6c 70 61 | > 0);..|if (nlpa|
|000032d0| 72 20 21 3d 20 30 29 0a | 09 09 73 79 6e 65 72 72 |r != 0).|..synerr|
|000032e0| 28 22 6d 69 73 73 69 6e | 67 20 70 61 72 65 6e 74 |("missin|g parent|
|000032f0| 68 65 73 69 73 20 69 6e | 20 63 6f 6e 64 69 74 69 |hesis in| conditi|
|00003300| 6f 6e 2e 22 29 3b 0a 7d | 0a 0a 2f 2a 0a 20 2a 20 |on.");.}|../*. * |
|00003310| 64 65 66 74 6f 6b 20 2d | 20 67 65 74 20 74 6f 6b |deftok -| get tok|
|00003320| 65 6e 3b 20 70 72 6f 63 | 65 73 73 20 6d 61 63 72 |en; proc|ess macr|
|00003330| 6f 20 63 61 6c 6c 73 20 | 61 6e 64 20 69 6e 76 6f |o calls |and invo|
|00003340| 63 61 74 69 6f 6e 73 0a | 20 2a 20 0a 20 2a 2f 0a |cations.| * . */.|
|00003350| 69 6e 74 0a 64 65 66 74 | 6f 6b 28 74 6f 6b 65 6e |int.deft|ok(token|
|00003360| 2c 20 74 6f 6b 73 69 7a | 2c 20 66 64 29 0a 09 63 |, toksiz|, fd)..c|
|00003370| 68 61 72 20 90 0c 74 6f | 6b 65 6e 5b 5d 3b 0a 69 |har ..to|ken[];.i|
|00003380| 6e 74 20 90 0d 74 6f 6b | 73 69 7a 3b 0a 46 49 4c |nt ..tok|siz;.FIL|
|00003390| 45 20 90 0b 2a 66 64 3b | 0a 7b 0a 09 63 68 61 72 |E ..*fd;|.{..char|
|000033a0| 20 90 0c 64 65 66 6e 5b | 4d 41 58 44 45 46 5d 3b | ..defn[|MAXDEF];|
|000033b0| 0a 09 69 6e 74 20 90 0d | 74 3b 0a 0a 09 66 6f 72 |..int ..|t;...for|
|000033c0| 20 28 74 20 3d 20 67 74 | 6f 6b 28 74 6f 6b 65 6e | (t = gt|ok(token|
|000033d0| 2c 20 74 6f 6b 73 69 7a | 2c 20 66 64 29 3b 20 74 |, toksiz|, fd); t|
|000033e0| 20 21 3d 20 45 4f 46 3b | 20 74 20 3d 20 67 74 6f | != EOF;| t = gto|
|000033f0| 6b 28 74 6f 6b 65 6e 2c | 20 74 6f 6b 73 69 7a 2c |k(token,| toksiz,|
|00003400| 20 66 64 29 29 20 7b 0a | 09 09 69 66 20 28 74 20 | fd)) {.|..if (t |
|00003410| 21 3d 20 41 4c 50 48 41 | 29 09 2f 2a 20 6e 6f 6e |!= ALPHA|)./* non|
|00003420| 2d 61 6c 70 68 61 20 2a | 2f 0a 09 90 03 62 72 65 |-alpha *|/....bre|
|00003430| 61 6b 3b 0a 09 09 69 66 | 20 28 6c 6f 6f 6b 28 74 |ak;...if| (look(t|
|00003440| 6f 6b 65 6e 2c 20 64 65 | 66 6e 29 20 3d 3d 20 4e |oken, de|fn) == N|
|00003450| 4f 29 09 2f 2a 20 75 6e | 64 65 66 69 6e 65 64 20 |O)./* un|defined |
|00003460| 2a 2f 0a 09 90 03 62 72 | 65 61 6b 3b 0a 09 09 69 |*/....br|eak;...i|
|00003470| 66 20 28 64 65 66 6e 5b | 30 5d 20 3d 3d 20 44 45 |f (defn[|0] == DE|
|00003480| 46 54 59 50 45 29 20 7b | 09 2f 2a 20 67 65 74 20 |FTYPE) {|./* get |
|00003490| 64 65 66 69 6e 69 74 69 | 6f 6e 20 2a 2f 0a 09 90 |definiti|on */...|
|000034a0| 03 67 65 74 64 65 66 28 | 74 6f 6b 65 6e 2c 20 74 |.getdef(|token, t|
|000034b0| 6f 6b 73 69 7a 2c 20 64 | 65 66 6e 2c 20 4d 41 58 |oksiz, d|efn, MAX|
|000034c0| 44 45 46 2c 20 66 64 29 | 3b 0a 09 90 03 69 6e 73 |DEF, fd)|;....ins|
|000034d0| 74 61 6c 6c 28 74 6f 6b | 65 6e 2c 20 64 65 66 6e |tall(tok|en, defn|
|000034e0| 29 3b 0a 09 09 7d 20 65 | 6c 73 65 0a 09 90 03 70 |);...} e|lse....p|
|000034f0| 62 73 74 72 28 64 65 66 | 6e 29 3b 09 2f 2a 20 70 |bstr(def|n);./* p|
|00003500| 75 73 68 20 72 65 70 6c | 61 63 65 6d 65 6e 74 20 |ush repl|acement |
|00003510| 6f 6e 74 6f 20 69 6e 70 | 75 74 20 2a 2f 0a 09 7d |onto inp|ut */..}|
|00003520| 0a 09 69 66 20 28 74 20 | 3d 3d 20 41 4c 50 48 41 |..if (t |== ALPHA|
|00003530| 29 09 09 2f 2a 20 63 6f | 6e 76 65 72 74 20 74 6f |)../* co|nvert to|
|00003540| 20 73 69 6e 67 6c 65 20 | 63 61 73 65 20 2a 2f 0a | single |case */.|
|00003550| 09 09 66 6f 6c 64 28 74 | 6f 6b 65 6e 29 3b 0a 09 |..fold(t|oken);..|
|00003560| 72 65 74 75 72 6e 20 28 | 74 29 3b 0a 7d 0a 90 03 |return (|t);.}...|
|00003570| 2f 2a 0a 20 2a 20 65 61 | 74 75 70 20 2d 20 70 72 |/*. * ea|tup - pr|
|00003580| 6f 63 65 73 73 20 72 65 | 73 74 20 6f 66 20 73 74 |ocess re|st of st|
|00003590| 61 74 65 6d 65 6e 74 3b | 20 69 6e 74 65 72 70 72 |atement;| interpr|
|000035a0| 65 74 20 63 6f 6e 74 69 | 6e 75 61 74 69 6f 6e 73 |et conti|nuations|
|000035b0| 0a 20 2a 20 0a 20 2a 2f | 0a 65 61 74 75 70 28 29 |. * . */|.eatup()|
|000035c0| 0a 7b 0a 0a 09 63 68 61 | 72 20 90 0c 70 74 6f 6b |.{...cha|r ..ptok|
|000035d0| 65 6e 5b 4d 41 58 54 4f | 4b 5d 2c 20 74 6f 6b 65 |en[MAXTO|K], toke|
|000035e0| 6e 5b 4d 41 58 54 4f 4b | 5d 3b 0a 09 69 6e 74 20 |n[MAXTOK|];..int |
|000035f0| 90 0d 6e 6c 70 61 72 2c | 20 74 3b 0a 0a 09 6e 6c |..nlpar,| t;...nl|
|00003600| 70 61 72 20 3d 20 30 3b | 0a 09 64 6f 20 7b 0a 09 |par = 0;|..do {..|
|00003610| 09 74 20 3d 20 67 65 74 | 74 6f 6b 28 74 6f 6b 65 |.t = get|tok(toke|
|00003620| 6e 2c 20 4d 41 58 54 4f | 4b 29 3b 0a 09 09 69 66 |n, MAXTO|K);...if|
|00003630| 20 28 74 20 3d 3d 20 53 | 45 4d 49 43 4f 4c 20 7c | (t == S|EMICOL ||
|00003640| 7c 20 74 20 3d 3d 20 4e | 45 57 4c 49 4e 45 29 0a || t == N|EWLINE).|
|00003650| 09 90 03 62 72 65 61 6b | 3b 0a 09 09 69 66 20 28 |...break|;...if (|
|00003660| 74 20 3d 3d 20 52 42 52 | 41 43 45 20 7c 7c 20 74 |t == RBR|ACE || t|
|00003670| 20 3d 3d 20 4c 42 52 41 | 43 45 29 20 7b 0a 09 90 | == LBRA|CE) {...|
|00003680| 03 70 62 73 74 72 28 74 | 6f 6b 65 6e 29 3b 0a 09 |.pbstr(t|oken);..|
|00003690| 90 03 62 72 65 61 6b 3b | 0a 09 09 7d 0a 09 09 69 |..break;|...}...i|
|000036a0| 66 20 28 74 20 3d 3d 20 | 45 4f 46 29 20 7b 0a 09 |f (t == |EOF) {..|
|000036b0| 90 03 73 79 6e 65 72 72 | 28 22 75 6e 65 78 70 65 |..synerr|("unexpe|
|000036c0| 63 74 65 64 20 45 4f 46 | 2e 22 29 3b 0a 09 90 03 |cted EOF|.");....|
|000036d0| 70 62 73 74 72 28 74 6f | 6b 65 6e 29 3b 0a 09 90 |pbstr(to|ken);...|
|000036e0| 03 62 72 65 61 6b 3b 0a | 09 09 7d 0a 09 09 69 66 |.break;.|..}...if|
|000036f0| 20 28 74 20 3d 3d 20 43 | 4f 4d 4d 41 20 7c 7c 20 | (t == C|OMMA || |
|00003700| 74 20 3d 3d 20 50 4c 55 | 53 0a 09 09 20 90 04 7c |t == PLU|S... ..||
|00003710| 7c 20 74 20 3d 3d 20 4d | 49 4e 55 53 20 7c 7c 20 || t == M|INUS || |
|00003720| 74 20 3d 3d 20 53 54 41 | 52 20 7c 7c 20 74 20 3d |t == STA|R || t =|
|00003730| 3d 20 4c 50 41 52 45 4e | 0a 09 09 20 90 04 7c 7c |= LPAREN|... ..|||
|00003740| 20 74 20 3d 3d 20 41 4e | 44 20 7c 7c 20 74 20 3d | t == AN|D || t =|
|00003750| 3d 20 42 41 52 20 7c 7c | 20 74 20 3d 3d 20 42 41 |= BAR ||| t == BA|
|00003760| 4e 47 0a 09 09 20 90 04 | 7c 7c 20 74 20 3d 3d 20 |NG... ..||| t == |
|00003770| 45 51 55 41 4c 53 20 7c | 7c 20 74 20 3d 3d 20 55 |EQUALS ||| t == U|
|00003780| 4e 44 45 52 4c 49 4e 45 | 29 20 7b 0a 09 90 03 77 |NDERLINE|) {....w|
|00003790| 68 69 6c 65 20 28 67 65 | 74 74 6f 6b 28 70 74 6f |hile (ge|ttok(pto|
|000037a0| 6b 65 6e 2c 20 4d 41 58 | 54 4f 4b 29 20 3d 3d 20 |ken, MAX|TOK) == |
|000037b0| 4e 45 57 4c 49 4e 45 29 | 3b 0a 09 90 03 70 62 73 |NEWLINE)|;....pbs|
|000037c0| 74 72 28 70 74 6f 6b 65 | 6e 29 3b 0a 09 90 03 69 |tr(ptoke|n);....i|
|000037d0| 66 20 28 74 20 3d 3d 20 | 55 4e 44 45 52 4c 49 4e |f (t == |UNDERLIN|
|000037e0| 45 29 0a 09 90 04 74 6f | 6b 65 6e 5b 30 5d 20 3d |E)....to|ken[0] =|
|000037f0| 20 45 4f 53 3b 0a 09 09 | 7d 0a 09 09 69 66 20 28 | EOS;...|}...if (|
|00003800| 74 20 3d 3d 20 4c 50 41 | 52 45 4e 29 0a 09 90 03 |t == LPA|REN)....|
|00003810| 6e 6c 70 61 72 2b 2b 3b | 0a 09 09 65 6c 73 65 20 |nlpar++;|...else |
|00003820| 69 66 20 28 74 20 3d 3d | 20 52 50 41 52 45 4e 29 |if (t ==| RPAREN)|
|00003830| 0a 09 90 03 6e 6c 70 61 | 72 2d 2d 3b 0a 09 09 6f |....nlpa|r--;...o|
|00003840| 75 74 73 74 72 28 74 6f | 6b 65 6e 29 3b 0a 0a 09 |utstr(to|ken);...|
|00003850| 7d 20 77 68 69 6c 65 20 | 28 6e 6c 70 61 72 20 3e |} while |(nlpar >|
|00003860| 3d 20 30 29 3b 0a 0a 09 | 69 66 20 28 6e 6c 70 61 |= 0);...|if (nlpa|
|00003870| 72 20 21 3d 20 30 29 0a | 09 09 73 79 6e 65 72 72 |r != 0).|..synerr|
|00003880| 28 22 75 6e 62 61 6c 61 | 6e 63 65 64 20 70 61 72 |("unbala|nced par|
|00003890| 65 6e 74 68 65 73 65 73 | 2e 22 29 3b 0a 7d 0a 0a |entheses|.");.}..|
|000038a0| 2f 2a 0a 20 2a 20 67 65 | 74 64 65 66 20 28 66 6f |/*. * ge|tdef (fo|
|000038b0| 72 20 6e 6f 20 61 72 67 | 75 6d 65 6e 74 73 29 20 |r no arg|uments) |
|000038c0| 2d 20 67 65 74 20 6e 61 | 6d 65 20 61 6e 64 20 64 |- get na|me and d|
|000038d0| 65 66 69 6e 69 74 69 6f | 6e 0a 20 2a 20 0a 20 2a |efinitio|n. * . *|
|000038e0| 2f 0a 67 65 74 64 65 66 | 28 74 6f 6b 65 6e 2c 20 |/.getdef|(token, |
|000038f0| 74 6f 6b 73 69 7a 2c 20 | 64 65 66 6e 2c 20 64 65 |toksiz, |defn, de|
|00003900| 66 73 69 7a 2c 20 66 64 | 29 0a 09 63 68 61 72 20 |fsiz, fd|)..char |
|00003910| 90 0c 74 6f 6b 65 6e 5b | 5d 3b 0a 69 6e 74 20 90 |..token[|];.int .|
|00003920| 0d 74 6f 6b 73 69 7a 3b | 0a 63 68 61 72 20 90 0c |.toksiz;|.char ..|
|00003930| 64 65 66 6e 5b 5d 3b 0a | 69 6e 74 20 90 0d 64 65 |defn[];.|int ..de|
|00003940| 66 73 69 7a 3b 0a 46 49 | 4c 45 20 90 0b 2a 66 64 |fsiz;.FI|LE ..*fd|
|00003950| 3b 0a 7b 0a 09 69 6e 74 | 20 90 0d 69 2c 20 6e 6c |;.{..int| ..i, nl|
|00003960| 70 61 72 2c 20 74 3b 0a | 09 63 68 61 72 20 90 0c |par, t;.|.char ..|
|00003970| 63 2c 20 70 74 6f 6b 65 | 6e 5b 4d 41 58 54 4f 4b |c, ptoke|n[MAXTOK|
|00003980| 5d 3b 0a 0a 09 73 6b 70 | 62 6c 6b 28 66 64 29 3b |];...skp|blk(fd);|
|00003990| 0a 09 2f 2a 0a 09 20 2a | 20 64 65 66 69 6e 65 28 |../*.. *| define(|
|000039a0| 6e 61 6d 65 2c 64 65 66 | 6e 29 20 6f 72 20 64 65 |name,def|n) or de|
|000039b0| 66 69 6e 65 20 6e 61 6d | 65 20 64 65 66 6e 0a 09 |fine nam|e defn..|
|000039c0| 20 2a 20 0a 09 20 2a 2f | 0a 09 69 66 20 28 28 74 | * .. */|..if ((t|
|000039d0| 20 3d 20 67 74 6f 6b 28 | 70 74 6f 6b 65 6e 2c 20 | = gtok(|ptoken, |
|000039e0| 4d 41 58 54 4f 4b 2c 20 | 66 64 29 29 20 21 3d 20 |MAXTOK, |fd)) != |
|000039f0| 4c 50 41 52 45 4e 29 20 | 7b 3b 0a 09 09 74 20 3d |LPAREN) |{;...t =|
|00003a00| 20 42 4c 41 4e 4b 3b 09 | 2f 2a 20 64 65 66 69 6e | BLANK;.|/* defin|
|00003a10| 65 20 6e 61 6d 65 20 64 | 65 66 6e 20 2a 2f 0a 09 |e name d|efn */..|
|00003a20| 09 70 62 73 74 72 28 70 | 74 6f 6b 65 6e 29 3b 0a |.pbstr(p|token);.|
|00003a30| 09 7d 0a 09 73 6b 70 62 | 6c 6b 28 66 64 29 3b 0a |.}..skpb|lk(fd);.|
|00003a40| 09 69 66 20 28 67 74 6f | 6b 28 74 6f 6b 65 6e 2c |.if (gto|k(token,|
|00003a50| 20 74 6f 6b 73 69 7a 2c | 20 66 64 29 20 21 3d 20 | toksiz,| fd) != |
|00003a60| 41 4c 50 48 41 29 0a 09 | 09 62 61 64 65 72 72 28 |ALPHA)..|.baderr(|
|00003a70| 22 6e 6f 6e 2d 61 6c 70 | 68 61 6e 75 6d 65 72 69 |"non-alp|hanumeri|
|00003a80| 63 20 6e 61 6d 65 2e 22 | 29 3b 0a 09 73 6b 70 62 |c name."|);..skpb|
|00003a90| 6c 6b 28 66 64 29 3b 0a | 09 63 20 3d 20 28 63 68 |lk(fd);.|.c = (ch|
|00003aa0| 61 72 29 20 67 74 6f 6b | 28 70 74 6f 6b 65 6e 2c |ar) gtok|(ptoken,|
|00003ab0| 20 4d 41 58 54 4f 4b 2c | 20 66 64 29 3b 0a 09 69 | MAXTOK,| fd);..i|
|00003ac0| 66 20 28 74 20 3d 3d 20 | 42 4c 41 4e 4b 29 20 7b |f (t == |BLANK) {|
|00003ad0| 09 2f 2a 20 64 65 66 69 | 6e 65 20 6e 61 6d 65 20 |./* defi|ne name |
|00003ae0| 64 65 66 6e 20 2a 2f 0a | 09 09 70 62 73 74 72 28 |defn */.|..pbstr(|
|00003af0| 70 74 6f 6b 65 6e 29 3b | 0a 09 09 69 20 3d 20 30 |ptoken);|...i = 0|
|00003b00| 3b 0a 09 09 64 6f 20 7b | 0a 09 90 03 63 20 3d 20 |;...do {|....c = |
|00003b10| 6e 67 65 74 63 68 28 26 | 63 2c 20 66 64 29 3b 0a |ngetch(&|c, fd);.|
|00003b20| 09 90 03 69 66 20 28 69 | 20 3e 20 64 65 66 73 69 |...if (i| > defsi|
|00003b30| 7a 29 0a 09 90 04 62 61 | 64 65 72 72 28 22 64 65 |z)....ba|derr("de|
|00003b40| 66 69 6e 69 74 69 6f 6e | 20 74 6f 6f 20 6c 6f 6e |finition| too lon|
|00003b50| 67 2e 22 29 3b 0a 09 90 | 03 64 65 66 6e 5b 69 2b |g.");...|.defn[i+|
|00003b60| 2b 5d 20 3d 20 63 3b 0a | 09 09 7d 0a 09 09 77 68 |+] = c;.|..}...wh|
|00003b70| 69 6c 65 20 28 63 20 21 | 3d 20 53 48 41 52 50 20 |ile (c !|= SHARP |
|00003b80| 26 26 20 63 20 21 3d 20 | 4e 45 57 4c 49 4e 45 20 |&& c != |NEWLINE |
|00003b90| 26 26 20 63 20 21 3d 20 | 45 4f 46 29 3b 0a 09 09 |&& c != |EOF);...|
|00003ba0| 69 66 20 28 63 20 3d 3d | 20 53 48 41 52 50 29 0a |if (c ==| SHARP).|
|00003bb0| 09 90 03 70 75 74 62 61 | 6b 28 63 29 3b 0a 09 7d |...putba|k(c);..}|
|00003bc0| 20 65 6c 73 65 20 69 66 | 20 28 74 20 3d 3d 20 4c | else if| (t == L|
|00003bd0| 50 41 52 45 4e 29 20 7b | 09 2f 2a 20 64 65 66 69 |PAREN) {|./* defi|
|00003be0| 6e 65 20 28 6e 61 6d 65 | 2c 20 64 65 66 6e 29 20 |ne (name|, defn) |
|00003bf0| 2a 2f 0a 09 09 69 66 20 | 28 63 20 21 3d 20 43 4f |*/...if |(c != CO|
|00003c00| 4d 4d 41 29 0a 09 90 03 | 62 61 64 65 72 72 28 22 |MMA)....|baderr("|
|00003c10| 6d 69 73 73 69 6e 67 20 | 63 6f 6d 6d 61 20 69 6e |missing |comma in|
|00003c20| 20 64 65 66 69 6e 65 2e | 22 29 3b 0a 09 09 2f 2a | define.|");.../*|
|00003c30| 20 65 6c 73 65 20 67 6f | 74 20 28 6e 61 6d 65 2c | else go|t (name,|
|00003c40| 20 2a 2f 0a 09 09 6e 6c | 70 61 72 20 3d 20 30 3b | */...nl|par = 0;|
|00003c50| 0a 09 09 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 6e |...for (|i = 0; n|
|00003c60| 6c 70 61 72 20 3e 3d 20 | 30 3b 20 69 2b 2b 29 0a |lpar >= |0; i++).|
|00003c70| 09 90 03 69 66 20 28 69 | 20 3e 20 64 65 66 73 69 |...if (i| > defsi|
|00003c80| 7a 29 0a 09 90 04 62 61 | 64 65 72 72 28 22 64 65 |z)....ba|derr("de|
|00003c90| 66 69 6e 69 74 69 6f 6e | 20 74 6f 6f 20 6c 6f 6e |finition| too lon|
|00003ca0| 67 2e 22 29 3b 0a 09 90 | 03 65 6c 73 65 20 69 66 |g.");...|.else if|
|00003cb0| 20 28 6e 67 65 74 63 68 | 28 26 64 65 66 6e 5b 69 | (ngetch|(&defn[i|
|00003cc0| 5d 2c 20 66 64 29 20 3d | 3d 20 45 4f 46 29 0a 09 |], fd) =|= EOF)..|
|00003cd0| 90 04 62 61 64 65 72 72 | 28 22 6d 69 73 73 69 6e |..baderr|("missin|
|00003ce0| 67 20 72 69 67 68 74 20 | 70 61 72 65 6e 2e 22 29 |g right |paren.")|
|00003cf0| 3b 0a 09 90 03 65 6c 73 | 65 20 69 66 20 28 64 65 |;....els|e if (de|
|00003d00| 66 6e 5b 69 5d 20 3d 3d | 20 4c 50 41 52 45 4e 29 |fn[i] ==| LPAREN)|
|00003d10| 0a 09 90 04 6e 6c 70 61 | 72 2b 2b 3b 0a 09 90 03 |....nlpa|r++;....|
|00003d20| 65 6c 73 65 20 69 66 20 | 28 64 65 66 6e 5b 69 5d |else if |(defn[i]|
|00003d30| 20 3d 3d 20 52 50 41 52 | 45 4e 29 0a 09 90 04 6e | == RPAR|EN)....n|
|00003d40| 6c 70 61 72 2d 2d 3b 0a | 09 09 2f 2a 20 65 6c 73 |lpar--;.|../* els|
|00003d50| 65 20 6e 6f 72 6d 61 6c | 20 63 68 61 72 61 63 74 |e normal| charact|
|00003d60| 65 72 20 69 6e 20 64 65 | 66 6e 5b 69 5d 20 2a 2f |er in de|fn[i] */|
|00003d70| 0a 09 7d 20 65 6c 73 65 | 0a 09 09 62 61 64 65 72 |..} else|...bader|
|00003d80| 72 28 22 67 65 74 64 65 | 66 20 69 73 20 63 6f 6e |r("getde|f is con|
|00003d90| 66 75 73 65 64 2e 22 29 | 3b 0a 09 64 65 66 6e 5b |fused.")|;..defn[|
|00003da0| 69 20 2d 20 31 5d 20 3d | 20 45 4f 53 3b 0a 7d 0a |i - 1] =| EOS;.}.|
|00003db0| 0a 2f 2a 0a 20 2a 20 67 | 65 74 74 6f 6b 20 2d 20 |./*. * g|ettok - |
|00003dc0| 67 65 74 20 74 6f 6b 65 | 6e 2e 20 68 61 6e 64 6c |get toke|n. handl|
|00003dd0| 65 73 20 66 69 6c 65 20 | 69 6e 63 6c 75 73 69 6f |es file |inclusio|
|00003de0| 6e 20 61 6e 64 20 6c 69 | 6e 65 20 6e 75 6d 62 65 |n and li|ne numbe|
|00003df0| 72 73 0a 20 2a 20 0a 20 | 2a 2f 0a 69 6e 74 0a 67 |rs. * . |*/.int.g|
|00003e00| 65 74 74 6f 6b 28 74 6f | 6b 65 6e 2c 20 74 6f 6b |ettok(to|ken, tok|
|00003e10| 73 69 7a 29 0a 09 63 68 | 61 72 20 90 0c 74 6f 6b |siz)..ch|ar ..tok|
|00003e20| 65 6e 5b 5d 3b 0a 69 6e | 74 20 90 0d 74 6f 6b 73 |en[];.in|t ..toks|
|00003e30| 69 7a 3b 0a 7b 0a 09 69 | 6e 74 20 90 0d 74 2c 20 |iz;.{..i|nt ..t, |
|00003e40| 69 3b 0a 09 69 6e 74 20 | 90 0d 74 6f 6b 3b 0a 09 |i;..int |..tok;..|
|00003e50| 63 68 61 72 20 90 0c 6e | 61 6d 65 5b 4d 41 58 4e |char ..n|ame[MAXN|
|00003e60| 41 4d 45 5d 3b 0a 0a 09 | 66 6f 72 20 28 3b 20 6c |AME];...|for (; l|
|00003e70| 65 76 65 6c 20 3e 3d 20 | 30 3b 20 6c 65 76 65 6c |evel >= |0; level|
|00003e80| 2d 2d 29 20 7b 0a 09 09 | 66 6f 72 20 28 74 6f 6b |--) {...|for (tok|
|00003e90| 20 3d 20 64 65 66 74 6f | 6b 28 74 6f 6b 65 6e 2c | = defto|k(token,|
|00003ea0| 20 74 6f 6b 73 69 7a 2c | 20 69 6e 66 69 6c 65 5b | toksiz,| infile[|
|00003eb0| 6c 65 76 65 6c 5d 29 3b | 20 74 6f 6b 20 21 3d 20 |level]);| tok != |
|00003ec0| 45 4f 46 3b 0a 09 09 20 | 90 05 74 6f 6b 20 3d 20 |EOF;... |..tok = |
|00003ed0| 64 65 66 74 6f 6b 28 74 | 6f 6b 65 6e 2c 20 74 6f |deftok(t|oken, to|
|00003ee0| 6b 73 69 7a 2c 20 69 6e | 66 69 6c 65 5b 6c 65 76 |ksiz, in|file[lev|
|00003ef0| 65 6c 5d 29 29 20 7b 0a | 09 90 03 69 66 20 28 65 |el])) {.|...if (e|
|00003f00| 71 75 61 6c 28 74 6f 6b | 65 6e 2c 20 66 6e 63 6e |qual(tok|en, fncn|
|00003f10| 29 20 3d 3d 20 59 45 53 | 29 20 7b 0a 09 90 04 73 |) == YES|) {....s|
|00003f20| 6b 70 62 6c 6b 28 69 6e | 66 69 6c 65 5b 6c 65 76 |kpblk(in|file[lev|
|00003f30| 65 6c 5d 29 3b 0a 09 90 | 04 74 20 3d 20 64 65 66 |el]);...|.t = def|
|00003f40| 74 6f 6b 28 66 63 6e 61 | 6d 65 2c 20 4d 41 58 4e |tok(fcna|me, MAXN|
|00003f50| 41 4d 45 2c 20 69 6e 66 | 69 6c 65 5b 6c 65 76 65 |AME, inf|ile[leve|
|00003f60| 6c 5d 29 3b 0a 09 90 04 | 70 62 73 74 72 28 66 63 |l]);....|pbstr(fc|
|00003f70| 6e 61 6d 65 29 3b 0a 09 | 90 04 69 66 20 28 74 20 |name);..|..if (t |
|00003f80| 21 3d 20 41 4c 50 48 41 | 29 0a 09 90 05 73 79 6e |!= ALPHA|)....syn|
|00003f90| 65 72 72 28 22 6d 69 73 | 73 69 6e 67 20 66 75 6e |err("mis|sing fun|
|00003fa0| 63 74 69 6f 6e 20 6e 61 | 6d 65 2e 22 29 3b 0a 09 |ction na|me.");..|
|00003fb0| 90 04 70 75 74 62 61 6b | 28 42 4c 41 4e 4b 29 3b |..putbak|(BLANK);|
|00003fc0| 0a 09 90 04 72 65 74 75 | 72 6e 20 28 74 6f 6b 29 |....retu|rn (tok)|
|00003fd0| 3b 0a 09 90 03 7d 20 65 | 6c 73 65 20 69 66 20 28 |;....} e|lse if (|
|00003fe0| 65 71 75 61 6c 28 74 6f | 6b 65 6e 2c 20 69 6e 63 |equal(to|ken, inc|
|00003ff0| 6c 29 20 3d 3d 20 4e 4f | 29 0a 09 90 04 72 65 74 |l) == NO|)....ret|
|00004000| 75 72 6e 20 28 74 6f 6b | 29 3b 0a 09 90 03 66 6f |urn (tok|);....fo|
|00004010| 72 20 28 69 20 3d 20 30 | 3b 3b 20 69 20 3d 20 73 |r (i = 0|;; i = s|
|00004020| 74 72 6c 65 6e 28 6e 61 | 6d 65 29 29 20 7b 0a 09 |trlen(na|me)) {..|
|00004030| 90 04 74 20 3d 20 64 65 | 66 74 6f 6b 28 26 6e 61 |..t = de|ftok(&na|
|00004040| 6d 65 5b 69 5d 2c 20 4d | 41 58 4e 41 4d 45 2c 20 |me[i], M|AXNAME, |
|00004050| 69 6e 66 69 6c 65 5b 6c | 65 76 65 6c 5d 29 3b 0a |infile[l|evel]);.|
|00004060| 09 90 04 69 66 20 28 74 | 20 3d 3d 20 4e 45 57 4c |...if (t| == NEWL|
|00004070| 49 4e 45 20 7c 7c 20 74 | 20 3d 3d 20 53 45 4d 49 |INE || t| == SEMI|
|00004080| 43 4f 4c 29 20 7b 0a 09 | 90 05 70 62 73 74 72 28 |COL) {..|..pbstr(|
|00004090| 26 6e 61 6d 65 5b 69 5d | 29 3b 0a 09 90 05 62 72 |&name[i]|);....br|
|000040a0| 65 61 6b 3b 0a 09 90 04 | 7d 0a 09 90 03 7d 0a 09 |eak;....|}....}..|
|000040b0| 90 03 6e 61 6d 65 5b 69 | 5d 20 3d 20 45 4f 53 3b |..name[i|] = EOS;|
|000040c0| 0a 09 90 03 69 66 20 28 | 6e 61 6d 65 5b 31 5d 20 |....if (|name[1] |
|000040d0| 3d 3d 20 53 51 55 4f 54 | 45 29 20 7b 0a 09 90 04 |== SQUOT|E) {....|
|000040e0| 6f 75 74 74 61 62 28 29 | 3b 0a 09 90 04 6f 75 74 |outtab()|;....out|
|000040f0| 73 74 72 28 74 6f 6b 65 | 6e 29 3b 0a 09 90 04 6f |str(toke|n);....o|
|00004100| 75 74 73 74 72 28 6e 61 | 6d 65 29 3b 0a 09 90 04 |utstr(na|me);....|
|00004110| 6f 75 74 64 6f 6e 28 29 | 3b 0a 09 90 04 65 61 74 |outdon()|;....eat|
|00004120| 75 70 28 29 3b 0a 09 90 | 04 72 65 74 75 72 6e 20 |up();...|.return |
|00004130| 28 74 6f 6b 29 3b 0a 09 | 90 03 7d 0a 09 90 03 69 |(tok);..|..}....i|
|00004140| 66 20 28 6c 65 76 65 6c | 20 3e 3d 20 4e 46 49 4c |f (level| >= NFIL|
|00004150| 45 53 29 0a 09 90 04 73 | 79 6e 65 72 72 28 22 69 |ES)....s|ynerr("i|
|00004160| 6e 63 6c 75 64 65 73 20 | 6e 65 73 74 65 64 20 74 |ncludes |nested t|
|00004170| 6f 6f 20 64 65 65 70 6c | 79 2e 22 29 3b 0a 09 90 |oo deepl|y.");...|
|00004180| 03 65 6c 73 65 20 7b 0a | 09 90 04 69 6e 66 69 6c |.else {.|...infil|
|00004190| 65 5b 6c 65 76 65 6c 20 | 2b 20 31 5d 20 3d 20 66 |e[level |+ 1] = f|
|000041a0| 6f 70 65 6e 28 6e 61 6d | 65 2c 20 22 72 22 29 3b |open(nam|e, "r");|
|000041b0| 0a 09 90 04 6c 69 6e 65 | 63 74 5b 6c 65 76 65 6c |....line|ct[level|
|000041c0| 20 2b 20 31 5d 20 3d 20 | 31 3b 0a 09 90 04 69 66 | + 1] = |1;....if|
|000041d0| 20 28 69 6e 66 69 6c 65 | 5b 6c 65 76 65 6c 20 2b | (infile|[level +|
|000041e0| 20 31 5d 20 3d 3d 20 4e | 55 4c 4c 29 0a 09 90 05 | 1] == N|ULL)....|
|000041f0| 73 79 6e 65 72 72 28 22 | 63 61 6e 27 74 20 6f 70 |synerr("|can't op|
|00004200| 65 6e 20 69 6e 63 6c 75 | 64 65 2e 22 29 3b 0a 09 |en inclu|de.");..|
|00004210| 90 04 65 6c 73 65 20 7b | 0a 09 90 05 6c 65 76 65 |..else {|....leve|
|00004220| 6c 2b 2b 3b 0a 09 90 05 | 69 66 20 28 66 6e 61 6d |l++;....|if (fnam|
|00004230| 70 20 2b 20 69 20 3c 3d | 20 4d 41 58 46 4e 41 4d |p + i <=| MAXFNAM|
|00004240| 45 53 29 20 7b 0a 09 90 | 06 73 63 6f 70 79 28 6e |ES) {...|.scopy(n|
|00004250| 61 6d 65 2c 20 30 2c 20 | 66 6e 61 6d 65 73 2c 20 |ame, 0, |fnames, |
|00004260| 66 6e 61 6d 70 29 3b 0a | 09 90 06 66 6e 61 6d 70 |fnamp);.|...fnamp|
|00004270| 20 3d 20 66 6e 61 6d 70 | 20 2b 20 69 3b 09 2f 2a | = fnamp| + i;./*|
|00004280| 20 70 75 73 68 20 66 69 | 6c 65 20 6e 61 6d 65 20 | push fi|le name |
|00004290| 73 74 61 63 6b 20 2a 2f | 0a 09 90 05 7d 0a 09 90 |stack */|....}...|
|000042a0| 04 7d 0a 09 90 03 7d 0a | 09 09 7d 0a 09 09 69 66 |.}....}.|..}...if|
|000042b0| 20 28 6c 65 76 65 6c 20 | 3e 20 30 29 20 7b 2f 2a | (level |> 0) {/*|
|000042c0| 20 63 6c 6f 73 65 20 69 | 6e 63 6c 75 64 65 20 61 | close i|nclude a|
|000042d0| 6e 64 20 70 6f 70 20 66 | 69 6c 65 20 6e 61 6d 65 |nd pop f|ile name|
|000042e0| 20 73 74 61 63 6b 20 2a | 2f 0a 09 90 03 66 63 6c | stack *|/....fcl|
|000042f0| 6f 73 65 28 69 6e 66 69 | 6c 65 5b 6c 65 76 65 6c |ose(infi|le[level|
|00004300| 5d 29 3b 0a 09 90 03 66 | 6f 72 20 28 66 6e 61 6d |]);....f|or (fnam|
|00004310| 70 2d 2d 3b 20 66 6e 61 | 6d 70 20 3e 20 30 3b 20 |p--; fna|mp > 0; |
|00004320| 66 6e 61 6d 70 2d 2d 29 | 0a 09 90 04 69 66 20 28 |fnamp--)|....if (|
|00004330| 66 6e 61 6d 65 73 5b 66 | 6e 61 6d 70 20 2d 20 31 |fnames[f|namp - 1|
|00004340| 5d 20 3d 3d 20 45 4f 53 | 29 0a 09 90 05 62 72 65 |] == EOS|)....bre|
|00004350| 61 6b 3b 0a 09 09 7d 0a | 09 7d 0a 09 74 6f 6b 65 |ak;...}.|.}..toke|
|00004360| 6e 5b 30 5d 20 3d 20 45 | 4f 46 3b 09 09 2f 2a 20 |n[0] = E|OF;../* |
|00004370| 69 6e 20 63 61 73 65 20 | 63 61 6c 6c 65 64 20 6d |in case |called m|
|00004380| 6f 72 65 20 74 68 61 6e | 20 6f 6e 63 65 20 2a 2f |ore than| once */|
|00004390| 0a 09 74 6f 6b 65 6e 5b | 31 5d 20 3d 20 45 4f 53 |..token[|1] = EOS|
|000043a0| 3b 0a 09 74 6f 6b 20 3d | 20 45 4f 46 3b 0a 09 72 |;..tok =| EOF;..r|
|000043b0| 65 74 75 72 6e 20 28 74 | 6f 6b 29 3b 0a 7d 0a 0a |eturn (t|ok);.}..|
|000043c0| 2f 2a 0a 20 2a 20 67 6e | 62 74 6f 6b 20 2d 20 67 |/*. * gn|btok - g|
|000043d0| 65 74 20 6e 6f 6e 62 6c | 61 6e 6b 20 74 6f 6b 65 |et nonbl|ank toke|
|000043e0| 6e 0a 20 2a 20 0a 20 2a | 2f 0a 69 6e 74 0a 67 6e |n. * . *|/.int.gn|
|000043f0| 62 74 6f 6b 28 74 6f 6b | 65 6e 2c 20 74 6f 6b 73 |btok(tok|en, toks|
|00004400| 69 7a 29 0a 09 63 68 61 | 72 20 90 0c 74 6f 6b 65 |iz)..cha|r ..toke|
|00004410| 6e 5b 5d 3b 0a 69 6e 74 | 20 90 0d 74 6f 6b 73 69 |n[];.int| ..toksi|
|00004420| 7a 3b 0a 7b 0a 09 69 6e | 74 20 90 0d 74 6f 6b 3b |z;.{..in|t ..tok;|
|00004430| 0a 0a 09 73 6b 70 62 6c | 6b 28 69 6e 66 69 6c 65 |...skpbl|k(infile|
|00004440| 5b 6c 65 76 65 6c 5d 29 | 3b 0a 09 74 6f 6b 20 3d |[level])|;..tok =|
|00004450| 20 67 65 74 74 6f 6b 28 | 74 6f 6b 65 6e 2c 20 74 | gettok(|token, t|
|00004460| 6f 6b 73 69 7a 29 3b 0a | 09 72 65 74 75 72 6e 20 |oksiz);.|.return |
|00004470| 28 74 6f 6b 29 3b 0a 7d | 0a 0a 2f 2a 0a 20 2a 20 |(tok);.}|../*. * |
|00004480| 67 74 6f 6b 20 2d 20 67 | 65 74 20 74 6f 6b 65 6e |gtok - g|et token|
|00004490| 20 66 6f 72 20 52 61 74 | 66 6f 72 0a 20 2a 20 0a | for Rat|for. * .|
|000044a0| 20 2a 2f 0a 69 6e 74 0a | 67 74 6f 6b 28 6c 65 78 | */.int.|gtok(lex|
|000044b0| 73 74 72 2c 20 74 6f 6b | 73 69 7a 2c 20 66 64 29 |str, tok|siz, fd)|
|000044c0| 0a 09 63 68 61 72 20 90 | 0c 6c 65 78 73 74 72 5b |..char .|.lexstr[|
|000044d0| 5d 3b 0a 69 6e 74 20 90 | 0d 74 6f 6b 73 69 7a 3b |];.int .|.toksiz;|
|000044e0| 0a 46 49 4c 45 20 90 0b | 2a 66 64 3b 0a 7b 0a 09 |.FILE ..|*fd;.{..|
|000044f0| 69 6e 74 20 90 0d 69 2c | 20 62 2c 20 6e 2c 20 74 |int ..i,| b, n, t|
|00004500| 6f 6b 3b 0a 09 63 68 61 | 72 20 90 0c 63 3b 0a 09 |ok;..cha|r ..c;..|
|00004510| 63 20 3d 20 6e 67 65 74 | 63 68 28 26 6c 65 78 73 |c = nget|ch(&lexs|
|00004520| 74 72 5b 30 5d 2c 20 66 | 64 29 3b 0a 09 69 66 20 |tr[0], f|d);..if |
|00004530| 28 63 20 3d 3d 20 42 4c | 41 4e 4b 20 7c 7c 20 63 |(c == BL|ANK || c|
|00004540| 20 3d 3d 20 54 41 42 29 | 20 7b 0a 09 09 6c 65 78 | == TAB)| {...lex|
|00004550| 73 74 72 5b 30 5d 20 3d | 20 42 4c 41 4e 4b 3b 0a |str[0] =| BLANK;.|
|00004560| 09 09 77 68 69 6c 65 20 | 28 63 20 3d 3d 20 42 4c |..while |(c == BL|
|00004570| 41 4e 4b 20 7c 7c 20 63 | 20 3d 3d 20 54 41 42 29 |ANK || c| == TAB)|
|00004580| 09 2f 2a 20 63 6f 6d 70 | 72 65 73 73 20 6d 61 6e |./* comp|ress man|
|00004590| 79 20 62 6c 61 6e 6b 73 | 20 74 6f 0a 09 90 06 20 |y blanks| to.... |
|000045a0| 2a 20 6f 6e 65 20 2a 2f | 0a 09 90 03 63 20 3d 20 |* one */|....c = |
|000045b0| 6e 67 65 74 63 68 28 26 | 63 2c 20 66 64 29 3b 0a |ngetch(&|c, fd);.|
|000045c0| 09 09 69 66 20 28 63 20 | 3d 3d 20 53 48 41 52 50 |..if (c |== SHARP|
|000045d0| 29 0a 09 90 03 77 68 69 | 6c 65 20 28 6e 67 65 74 |)....whi|le (nget|
|000045e0| 63 68 28 26 63 2c 20 66 | 64 29 20 21 3d 20 4e 45 |ch(&c, f|d) != NE|
|000045f0| 57 4c 49 4e 45 29 09 2f | 2a 20 73 74 72 69 70 20 |WLINE)./|* strip |
|00004600| 63 6f 6d 6d 65 6e 74 73 | 20 2a 2f 0a 09 90 04 3b |comments| */....;|
|00004610| 0a 09 09 69 66 20 28 63 | 20 21 3d 20 4e 45 57 4c |...if (c| != NEWL|
|00004620| 49 4e 45 29 0a 09 90 03 | 70 75 74 62 61 6b 28 63 |INE)....|putbak(c|
|00004630| 29 3b 0a 09 09 65 6c 73 | 65 0a 09 90 03 6c 65 78 |);...els|e....lex|
|00004640| 73 74 72 5b 30 5d 20 3d | 20 4e 45 57 4c 49 4e 45 |str[0] =| NEWLINE|
|00004650| 3b 0a 09 09 6c 65 78 73 | 74 72 5b 31 5d 20 3d 20 |;...lexs|tr[1] = |
|00004660| 45 4f 53 3b 0a 09 09 72 | 65 74 75 72 6e 20 28 28 |EOS;...r|eturn ((|
|00004670| 69 6e 74 29 20 6c 65 78 | 73 74 72 5b 30 5d 29 3b |int) lex|str[0]);|
|00004680| 0a 09 7d 0a 09 69 20 3d | 20 30 3b 0a 09 74 6f 6b |..}..i =| 0;..tok|
|00004690| 20 3d 20 74 79 70 65 28 | 63 29 3b 0a 09 69 66 20 | = type(|c);..if |
|000046a0| 28 74 6f 6b 20 3d 3d 20 | 4c 45 54 54 45 52 29 20 |(tok == |LETTER) |
|000046b0| 7b 09 2f 2a 20 61 6c 70 | 68 61 20 2a 2f 0a 09 09 |{./* alp|ha */...|
|000046c0| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < |
|000046d0| 74 6f 6b 73 69 7a 20 2d | 20 33 3b 20 69 2b 2b 29 |toksiz -| 3; i++)|
|000046e0| 20 7b 0a 09 90 03 74 6f | 6b 20 3d 20 74 79 70 65 | {....to|k = type|
|000046f0| 28 6e 67 65 74 63 68 28 | 26 6c 65 78 73 74 72 5b |(ngetch(|&lexstr[|
|00004700| 69 20 2b 20 31 5d 2c 20 | 66 64 29 29 3b 0a 09 90 |i + 1], |fd));...|
|00004710| 03 2f 2a 20 54 65 73 74 | 20 66 6f 72 20 44 4f 4c |./* Test| for DOL|
|00004720| 4c 41 52 20 61 64 64 65 | 64 20 62 79 20 42 4d 2c |LAR adde|d by BM,|
|00004730| 20 37 2d 31 35 2d 38 30 | 20 2a 2f 0a 09 90 03 69 | 7-15-80| */....i|
|00004740| 66 20 28 74 6f 6b 20 21 | 3d 20 4c 45 54 54 45 52 |f (tok !|= LETTER|
|00004750| 20 26 26 20 74 6f 6b 20 | 21 3d 20 44 49 47 49 54 | && tok |!= DIGIT|
|00004760| 0a 09 90 03 20 90 04 26 | 26 20 74 6f 6b 20 21 3d |.... ..&|& tok !=|
|00004770| 20 55 4e 44 45 52 4c 49 | 4e 45 20 26 26 20 74 6f | UNDERLI|NE && to|
|00004780| 6b 20 21 3d 20 44 4f 4c | 4c 41 52 0a 09 90 03 20 |k != DOL|LAR.... |
|00004790| 90 04 26 26 20 74 6f 6b | 20 21 3d 20 50 45 52 49 |..&& tok| != PERI|
|000047a0| 4f 44 29 0a 09 90 04 62 | 72 65 61 6b 3b 0a 09 09 |OD)....b|reak;...|
|000047b0| 7d 0a 09 09 70 75 74 62 | 61 6b 28 6c 65 78 73 74 |}...putb|ak(lexst|
|000047c0| 72 5b 69 20 2b 20 31 5d | 29 3b 0a 09 09 74 6f 6b |r[i + 1]|);...tok|
|000047d0| 20 3d 20 41 4c 50 48 41 | 3b 0a 09 7d 20 65 6c 73 | = ALPHA|;..} els|
|000047e0| 65 20 69 66 20 28 74 6f | 6b 20 3d 3d 20 44 49 47 |e if (to|k == DIG|
|000047f0| 49 54 29 20 7b 09 2f 2a | 20 64 69 67 69 74 73 20 |IT) {./*| digits |
|00004800| 2a 2f 0a 09 09 62 20 3d | 20 63 20 2d 20 44 49 47 |*/...b =| c - DIG|
|00004810| 30 3b 09 2f 2a 20 69 6e | 20 63 61 73 65 20 61 6c |0;./* in| case al|
|00004820| 74 65 72 6e 61 74 65 20 | 62 61 73 65 20 6e 75 6d |ternate |base num|
|00004830| 62 65 72 20 2a 2f 0a 09 | 09 66 6f 72 20 28 69 20 |ber */..|.for (i |
|00004840| 3d 20 30 3b 20 69 20 3c | 20 74 6f 6b 73 69 7a 20 |= 0; i <| toksiz |
|00004850| 2d 20 33 3b 20 69 2b 2b | 29 20 7b 0a 09 90 03 69 |- 3; i++|) {....i|
|00004860| 66 20 28 74 79 70 65 28 | 6e 67 65 74 63 68 28 26 |f (type(|ngetch(&|
|00004870| 6c 65 78 73 74 72 5b 69 | 20 2b 20 31 5d 2c 20 66 |lexstr[i| + 1], f|
|00004880| 64 29 29 20 21 3d 20 44 | 49 47 49 54 29 0a 09 90 |d)) != D|IGIT)...|
|00004890| 04 62 72 65 61 6b 3b 0a | 09 90 03 62 20 3d 20 31 |.break;.|...b = 1|
|000048a0| 30 20 2a 20 62 20 2b 20 | 6c 65 78 73 74 72 5b 69 |0 * b + |lexstr[i|
|000048b0| 20 2b 20 31 5d 20 2d 20 | 44 49 47 30 3b 0a 09 09 | + 1] - |DIG0;...|
|000048c0| 7d 0a 09 09 69 66 20 28 | 6c 65 78 73 74 72 5b 69 |}...if (|lexstr[i|
|000048d0| 20 2b 20 31 5d 20 3d 3d | 20 52 41 44 49 58 20 26 | + 1] ==| RADIX &|
|000048e0| 26 20 62 20 3e 3d 20 32 | 20 26 26 20 62 20 3c 3d |& b >= 2| && b <=|
|000048f0| 20 33 36 29 20 7b 0a 09 | 90 03 2f 2a 20 6e 25 64 | 36) {..|../* n%d|
|00004900| 90 03 2e 90 03 20 2a 2f | 0a 09 90 03 66 6f 72 20 |..... */|....for |
|00004910| 28 6e 20 3d 20 30 3b 3b | 20 6e 20 3d 20 62 20 2a |(n = 0;;| n = b *|
|00004920| 20 6e 20 2b 20 63 20 2d | 20 44 49 47 30 29 20 7b | n + c -| DIG0) {|
|00004930| 0a 09 90 04 63 20 3d 20 | 6e 67 65 74 63 68 28 26 |....c = |ngetch(&|
|00004940| 6c 65 78 73 74 72 5b 30 | 5d 2c 20 66 64 29 3b 0a |lexstr[0|], fd);.|
|00004950| 09 90 04 69 66 20 28 63 | 20 3e 3d 20 4c 45 54 41 |...if (c| >= LETA|
|00004960| 20 26 26 20 63 20 3c 3d | 20 4c 45 54 5a 29 0a 09 | && c <=| LETZ)..|
|00004970| 90 05 63 20 3d 20 63 20 | 2d 20 4c 45 54 41 20 2b |..c = c |- LETA +|
|00004980| 20 44 49 47 39 20 2b 20 | 31 3b 0a 09 90 04 65 6c | DIG9 + |1;....el|
|00004990| 73 65 20 69 66 20 28 63 | 20 3e 3d 20 42 49 47 41 |se if (c| >= BIGA|
|000049a0| 20 26 26 20 63 20 3c 3d | 20 42 49 47 5a 29 0a 09 | && c <=| BIGZ)..|
|000049b0| 90 05 63 20 3d 20 63 20 | 2d 20 42 49 47 41 20 2b |..c = c |- BIGA +|
|000049c0| 20 44 49 47 39 20 2b 20 | 31 3b 0a 09 90 04 69 66 | DIG9 + |1;....if|
|000049d0| 20 28 63 20 3c 20 44 49 | 47 30 20 7c 7c 20 63 20 | (c < DI|G0 || c |
|000049e0| 3e 3d 20 44 49 47 30 20 | 2b 20 62 29 0a 09 90 05 |>= DIG0 |+ b)....|
|000049f0| 62 72 65 61 6b 3b 0a 09 | 90 03 7d 0a 09 90 03 70 |break;..|..}....p|
|00004a00| 75 74 62 61 6b 28 6c 65 | 78 73 74 72 5b 30 5d 29 |utbak(le|xstr[0])|
|00004a10| 3b 0a 09 90 03 69 20 3d | 20 69 74 6f 63 28 6e 2c |;....i =| itoc(n,|
|00004a20| 20 6c 65 78 73 74 72 2c | 20 74 6f 6b 73 69 7a 29 | lexstr,| toksiz)|
|00004a30| 3b 0a 09 09 7d 20 65 6c | 73 65 0a 09 90 03 70 75 |;...} el|se....pu|
|00004a40| 74 62 61 6b 28 6c 65 78 | 73 74 72 5b 69 20 2b 20 |tbak(lex|str[i + |
|00004a50| 31 5d 29 3b 0a 09 09 74 | 6f 6b 20 3d 20 44 49 47 |1]);...t|ok = DIG|
|00004a60| 49 54 3b 0a 09 7d 0a 23 | 69 66 64 65 66 20 53 51 |IT;..}.#|ifdef SQ|
|00004a70| 55 41 52 45 42 0a 09 65 | 6c 73 65 20 69 66 20 28 |UAREB..e|lse if (|
|00004a80| 63 20 3d 3d 20 4c 42 52 | 41 43 4b 29 20 7b 09 2f |c == LBR|ACK) {./|
|00004a90| 2a 20 61 6c 6c 6f 77 20 | 5b 20 66 6f 72 20 7b 20 |* allow |[ for { |
|00004aa0| 2a 2f 0a 09 09 6c 65 78 | 73 74 72 5b 30 5d 20 3d |*/...lex|str[0] =|
|00004ab0| 20 4c 42 52 41 43 45 3b | 0a 09 09 74 6f 6b 20 3d | LBRACE;|...tok =|
|00004ac0| 20 4c 42 52 41 43 45 3b | 0a 09 7d 20 65 6c 73 65 | LBRACE;|..} else|
|00004ad0| 20 69 66 20 28 63 20 3d | 3d 20 52 42 52 41 43 4b | if (c =|= RBRACK|
|00004ae0| 29 20 7b 09 2f 2a 20 61 | 6c 6c 6f 77 20 5d 20 66 |) {./* a|llow ] f|
|00004af0| 6f 72 20 7d 20 2a 2f 0a | 09 09 6c 65 78 73 74 72 |or } */.|..lexstr|
|00004b00| 5b 30 5d 20 3d 20 52 42 | 52 41 43 45 3b 0a 09 09 |[0] = RB|RACE;...|
|00004b10| 74 6f 6b 20 3d 20 52 42 | 52 41 43 45 3b 0a 09 7d |tok = RB|RACE;..}|
|00004b20| 0a 23 65 6e 64 69 66 0a | 09 65 6c 73 65 20 69 66 |.#endif.|.else if|
|00004b30| 20 28 63 20 3d 3d 20 53 | 51 55 4f 54 45 20 7c 7c | (c == S|QUOTE |||
|00004b40| 20 63 20 3d 3d 20 44 51 | 55 4f 54 45 29 20 7b 0a | c == DQ|UOTE) {.|
|00004b50| 09 09 66 6f 72 20 28 69 | 20 3d 20 31 3b 20 6e 67 |..for (i| = 1; ng|
|00004b60| 65 74 63 68 28 26 6c 65 | 78 73 74 72 5b 69 5d 2c |etch(&le|xstr[i],|
|00004b70| 20 66 64 29 20 21 3d 20 | 6c 65 78 73 74 72 5b 30 | fd) != |lexstr[0|
|00004b80| 5d 3b 20 69 2b 2b 29 20 | 7b 0a 09 90 03 69 66 20 |]; i++) |{....if |
|00004b90| 28 6c 65 78 73 74 72 5b | 69 5d 20 3d 3d 20 55 4e |(lexstr[|i] == UN|
|00004ba0| 44 45 52 4c 49 4e 45 29 | 0a 09 90 04 69 66 20 28 |DERLINE)|....if (|
|00004bb0| 6e 67 65 74 63 68 28 26 | 63 2c 20 66 64 29 20 3d |ngetch(&|c, fd) =|
|00004bc0| 3d 20 4e 45 57 4c 49 4e | 45 29 20 7b 0a 09 90 05 |= NEWLIN|E) {....|
|00004bd0| 77 68 69 6c 65 20 28 63 | 20 3d 3d 20 4e 45 57 4c |while (c| == NEWL|
|00004be0| 49 4e 45 20 7c 7c 20 63 | 20 3d 3d 20 42 4c 41 4e |INE || c| == BLAN|
|00004bf0| 4b 20 7c 7c 20 63 20 3d | 3d 20 54 41 42 29 0a 09 |K || c =|= TAB)..|
|00004c00| 90 06 63 20 3d 20 6e 67 | 65 74 63 68 28 26 63 2c |..c = ng|etch(&c,|
|00004c10| 20 66 64 29 3b 0a 09 90 | 05 6c 65 78 73 74 72 5b | fd);...|.lexstr[|
|00004c20| 69 5d 20 3d 20 63 3b 0a | 09 90 04 7d 20 65 6c 73 |i] = c;.|...} els|
|00004c30| 65 0a 09 90 05 70 75 74 | 62 61 6b 28 63 29 3b 0a |e....put|bak(c);.|
|00004c40| 09 90 03 69 66 20 28 6c | 65 78 73 74 72 5b 69 5d |...if (l|exstr[i]|
|00004c50| 20 3d 3d 20 4e 45 57 4c | 49 4e 45 20 7c 7c 20 69 | == NEWL|INE || i|
|00004c60| 20 3e 3d 20 74 6f 6b 73 | 69 7a 20 2d 20 31 29 20 | >= toks|iz - 1) |
|00004c70| 7b 0a 09 90 04 73 79 6e | 65 72 72 28 22 6d 69 73 |{....syn|err("mis|
|00004c80| 73 69 6e 67 20 71 75 6f | 74 65 2e 22 29 3b 0a 09 |sing quo|te.");..|
|00004c90| 90 04 6c 65 78 73 74 72 | 5b 69 5d 20 3d 20 6c 65 |..lexstr|[i] = le|
|00004ca0| 78 73 74 72 5b 30 5d 3b | 0a 09 90 04 70 75 74 62 |xstr[0];|....putb|
|00004cb0| 61 6b 28 4e 45 57 4c 49 | 4e 45 29 3b 0a 09 90 04 |ak(NEWLI|NE);....|
|00004cc0| 62 72 65 61 6b 3b 0a 09 | 90 03 7d 0a 09 09 7d 0a |break;..|..}...}.|
|00004cd0| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 63 20 3d 3d |.} else |if (c ==|
|00004ce0| 20 53 48 41 52 50 29 20 | 7b 2f 2a 20 73 74 72 69 | SHARP) |{/* stri|
|00004cf0| 70 20 63 6f 6d 6d 65 6e | 74 73 20 2a 2f 0a 09 09 |p commen|ts */...|
|00004d00| 77 68 69 6c 65 20 28 6e | 67 65 74 63 68 28 26 6c |while (n|getch(&l|
|00004d10| 65 78 73 74 72 5b 30 5d | 2c 20 66 64 29 20 21 3d |exstr[0]|, fd) !=|
|00004d20| 20 4e 45 57 4c 49 4e 45 | 29 3b 0a 09 09 74 6f 6b | NEWLINE|);...tok|
|00004d30| 20 3d 20 4e 45 57 4c 49 | 4e 45 3b 0a 09 7d 20 65 | = NEWLI|NE;..} e|
|00004d40| 6c 73 65 20 69 66 20 28 | 63 20 3d 3d 20 47 52 45 |lse if (|c == GRE|
|00004d50| 41 54 45 52 20 7c 7c 20 | 63 20 3d 3d 20 4c 45 53 |ATER || |c == LES|
|00004d60| 53 20 7c 7c 20 63 20 3d | 3d 20 4e 4f 54 0a 09 09 |S || c =|= NOT...|
|00004d70| 20 90 03 7c 7c 20 63 20 | 3d 3d 20 42 41 4e 47 20 | ..|| c |== BANG |
|00004d80| 7c 7c 20 63 20 3d 3d 20 | 43 41 52 45 54 20 7c 7c ||| c == |CARET |||
|00004d90| 20 63 20 3d 3d 20 45 51 | 55 41 4c 53 0a 09 09 20 | c == EQ|UALS... |
|00004da0| 90 03 7c 7c 20 63 20 3d | 3d 20 41 4e 44 20 7c 7c |..|| c =|= AND |||
|00004db0| 20 63 20 3d 3d 20 4f 52 | 29 0a 09 09 69 20 3d 20 | c == OR|)...i = |
|00004dc0| 72 65 6c 61 74 65 28 6c | 65 78 73 74 72 2c 20 66 |relate(l|exstr, f|
|00004dd0| 64 29 3b 0a 09 69 66 20 | 28 69 20 3e 3d 20 74 6f |d);..if |(i >= to|
|00004de0| 6b 73 69 7a 20 2d 20 31 | 29 0a 09 09 73 79 6e 65 |ksiz - 1|)...syne|
|00004df0| 72 72 28 22 74 6f 6b 65 | 6e 20 74 6f 6f 20 6c 6f |rr("toke|n too lo|
|00004e00| 6e 67 2e 22 29 3b 0a 09 | 6c 65 78 73 74 72 5b 69 |ng.");..|lexstr[i|
|00004e10| 20 2b 20 31 5d 20 3d 20 | 45 4f 53 3b 0a 09 69 66 | + 1] = |EOS;..if|
|00004e20| 20 28 6c 65 78 73 74 72 | 5b 30 5d 20 3d 3d 20 4e | (lexstr|[0] == N|
|00004e30| 45 57 4c 49 4e 45 29 0a | 09 09 6c 69 6e 65 63 74 |EWLINE).|..linect|
|00004e40| 5b 6c 65 76 65 6c 5d 20 | 3d 20 6c 69 6e 65 63 74 |[level] |= linect|
|00004e50| 5b 6c 65 76 65 6c 5d 20 | 2b 20 31 3b 0a 09 72 65 |[level] |+ 1;..re|
|00004e60| 74 75 72 6e 20 28 74 6f | 6b 29 3b 0a 7d 0a 0a 2f |turn (to|k);.}../|
|00004e70| 2a 0a 20 2a 20 6c 65 78 | 20 2d 20 72 65 74 75 72 |*. * lex| - retur|
|00004e80| 6e 20 6c 65 78 69 63 61 | 6c 20 74 79 70 65 20 6f |n lexica|l type o|
|00004e90| 66 20 74 6f 6b 65 6e 0a | 20 2a 20 0a 20 2a 2f 0a |f token.| * . */.|
|00004ea0| 69 6e 74 0a 6c 65 78 28 | 6c 65 78 73 74 72 29 0a |int.lex(|lexstr).|
|00004eb0| 09 63 68 61 72 20 90 0c | 6c 65 78 73 74 72 5b 5d |.char ..|lexstr[]|
|00004ec0| 3b 0a 7b 0a 0a 09 69 6e | 74 20 90 0d 74 6f 6b 3b |;.{...in|t ..tok;|
|00004ed0| 0a 0a 09 66 6f 72 20 28 | 74 6f 6b 20 3d 20 67 6e |...for (|tok = gn|
|00004ee0| 62 74 6f 6b 28 6c 65 78 | 73 74 72 2c 20 4d 41 58 |btok(lex|str, MAX|
|00004ef0| 54 4f 4b 29 3b 0a 09 20 | 90 05 74 6f 6b 20 3d 3d |TOK);.. |..tok ==|
|00004f00| 20 4e 45 57 4c 49 4e 45 | 3b 20 74 6f 6b 20 3d 20 | NEWLINE|; tok = |
|00004f10| 67 6e 62 74 6f 6b 28 6c | 65 78 73 74 72 2c 20 4d |gnbtok(l|exstr, M|
|00004f20| 41 58 54 4f 4b 29 29 3b | 0a 09 69 66 20 28 74 6f |AXTOK));|..if (to|
|00004f30| 6b 20 3d 3d 20 45 4f 46 | 20 7c 7c 20 74 6f 6b 20 |k == EOF| || tok |
|00004f40| 3d 3d 20 53 45 4d 49 43 | 4f 4c 20 7c 7c 20 74 6f |== SEMIC|OL || to|
|00004f50| 6b 20 3d 3d 20 4c 42 52 | 41 43 45 20 7c 7c 20 74 |k == LBR|ACE || t|
|00004f60| 6f 6b 20 3d 3d 20 52 42 | 52 41 43 45 29 0a 09 09 |ok == RB|RACE)...|
|00004f70| 72 65 74 75 72 6e 20 28 | 74 6f 6b 29 3b 0a 09 69 |return (|tok);..i|
|00004f80| 66 20 28 74 6f 6b 20 3d | 3d 20 44 49 47 49 54 29 |f (tok =|= DIGIT)|
|00004f90| 0a 09 09 74 6f 6b 20 3d | 20 4c 45 58 44 49 47 49 |...tok =| LEXDIGI|
|00004fa0| 54 53 3b 0a 09 65 6c 73 | 65 20 69 66 20 28 65 71 |TS;..els|e if (eq|
|00004fb0| 75 61 6c 28 6c 65 78 73 | 74 72 2c 20 73 69 66 29 |ual(lexs|tr, sif)|
|00004fc0| 20 3d 3d 20 59 45 53 29 | 0a 09 09 74 6f 6b 20 3d | == YES)|...tok =|
|00004fd0| 20 76 69 66 5b 30 5d 3b | 0a 09 65 6c 73 65 20 69 | vif[0];|..else i|
|00004fe0| 66 20 28 65 71 75 61 6c | 28 6c 65 78 73 74 72 2c |f (equal|(lexstr,|
|00004ff0| 20 73 65 6c 73 65 29 20 | 3d 3d 20 59 45 53 29 0a | selse) |== YES).|
|00005000| 09 09 74 6f 6b 20 3d 20 | 76 65 6c 73 65 5b 30 5d |..tok = |velse[0]|
|00005010| 3b 0a 09 65 6c 73 65 20 | 69 66 20 28 65 71 75 61 |;..else |if (equa|
|00005020| 6c 28 6c 65 78 73 74 72 | 2c 20 73 77 68 69 6c 65 |l(lexstr|, swhile|
|00005030| 29 20 3d 3d 20 59 45 53 | 29 0a 09 09 74 6f 6b 20 |) == YES|)...tok |
|00005040| 3d 20 76 77 68 69 6c 65 | 5b 30 5d 3b 0a 09 65 6c |= vwhile|[0];..el|
|00005050| 73 65 20 69 66 20 28 65 | 71 75 61 6c 28 6c 65 78 |se if (e|qual(lex|
|00005060| 73 74 72 2c 20 73 64 6f | 29 20 3d 3d 20 59 45 53 |str, sdo|) == YES|
|00005070| 29 0a 09 09 74 6f 6b 20 | 3d 20 76 64 6f 5b 30 5d |)...tok |= vdo[0]|
|00005080| 3b 0a 09 65 6c 73 65 20 | 69 66 20 28 65 71 75 61 |;..else |if (equa|
|00005090| 6c 28 6c 65 78 73 74 72 | 2c 20 73 62 72 65 61 6b |l(lexstr|, sbreak|
|000050a0| 29 20 3d 3d 20 59 45 53 | 29 0a 09 09 74 6f 6b 20 |) == YES|)...tok |
|000050b0| 3d 20 76 62 72 65 61 6b | 5b 30 5d 3b 0a 09 65 6c |= vbreak|[0];..el|
|000050c0| 73 65 20 69 66 20 28 65 | 71 75 61 6c 28 6c 65 78 |se if (e|qual(lex|
|000050d0| 73 74 72 2c 20 73 6e 65 | 78 74 29 20 3d 3d 20 59 |str, sne|xt) == Y|
|000050e0| 45 53 29 0a 09 09 74 6f | 6b 20 3d 20 76 6e 65 78 |ES)...to|k = vnex|
|000050f0| 74 5b 30 5d 3b 0a 09 65 | 6c 73 65 20 69 66 20 28 |t[0];..e|lse if (|
|00005100| 65 71 75 61 6c 28 6c 65 | 78 73 74 72 2c 20 73 66 |equal(le|xstr, sf|
|00005110| 6f 72 29 20 3d 3d 20 59 | 45 53 29 0a 09 09 74 6f |or) == Y|ES)...to|
|00005120| 6b 20 3d 20 76 66 6f 72 | 5b 30 5d 3b 0a 09 65 6c |k = vfor|[0];..el|
|00005130| 73 65 20 69 66 20 28 65 | 71 75 61 6c 28 6c 65 78 |se if (e|qual(lex|
|00005140| 73 74 72 2c 20 73 72 65 | 70 74 29 20 3d 3d 20 59 |str, sre|pt) == Y|
|00005150| 45 53 29 0a 09 09 74 6f | 6b 20 3d 20 76 72 65 70 |ES)...to|k = vrep|
|00005160| 74 5b 30 5d 3b 0a 09 65 | 6c 73 65 20 69 66 20 28 |t[0];..e|lse if (|
|00005170| 65 71 75 61 6c 28 6c 65 | 78 73 74 72 2c 20 73 75 |equal(le|xstr, su|
|00005180| 6e 74 69 6c 29 20 3d 3d | 20 59 45 53 29 0a 09 09 |ntil) ==| YES)...|
|00005190| 74 6f 6b 20 3d 20 76 75 | 6e 74 69 6c 5b 30 5d 3b |tok = vu|ntil[0];|
|000051a0| 0a 09 65 6c 73 65 20 69 | 66 20 28 65 71 75 61 6c |..else i|f (equal|
|000051b0| 28 6c 65 78 73 74 72 2c | 20 73 73 77 69 74 63 68 |(lexstr,| sswitch|
|000051c0| 29 20 3d 3d 20 59 45 53 | 29 0a 09 09 74 6f 6b 20 |) == YES|)...tok |
|000051d0| 3d 20 76 73 77 69 74 63 | 68 5b 30 5d 3b 0a 09 65 |= vswitc|h[0];..e|
|000051e0| 6c 73 65 20 69 66 20 28 | 65 71 75 61 6c 28 6c 65 |lse if (|equal(le|
|000051f0| 78 73 74 72 2c 20 73 63 | 61 73 65 29 20 3d 3d 20 |xstr, sc|ase) == |
|00005200| 59 45 53 29 0a 09 09 74 | 6f 6b 20 3d 20 76 63 61 |YES)...t|ok = vca|
|00005210| 73 65 5b 30 5d 3b 0a 09 | 65 6c 73 65 20 69 66 20 |se[0];..|else if |
|00005220| 28 65 71 75 61 6c 28 6c | 65 78 73 74 72 2c 20 73 |(equal(l|exstr, s|
|00005230| 64 65 66 61 75 6c 74 29 | 20 3d 3d 20 59 45 53 29 |default)| == YES)|
|00005240| 0a 09 09 74 6f 6b 20 3d | 20 76 64 65 66 61 75 6c |...tok =| vdefaul|
|00005250| 74 5b 30 5d 3b 0a 09 65 | 6c 73 65 20 69 66 20 28 |t[0];..e|lse if (|
|00005260| 65 71 75 61 6c 28 6c 65 | 78 73 74 72 2c 20 73 72 |equal(le|xstr, sr|
|00005270| 65 74 29 20 3d 3d 20 59 | 45 53 29 0a 09 09 74 6f |et) == Y|ES)...to|
|00005280| 6b 20 3d 20 76 72 65 74 | 5b 30 5d 3b 0a 09 65 6c |k = vret|[0];..el|
|00005290| 73 65 20 69 66 20 28 65 | 71 75 61 6c 28 6c 65 78 |se if (e|qual(lex|
|000052a0| 73 74 72 2c 20 73 73 74 | 72 29 20 3d 3d 20 59 45 |str, sst|r) == YE|
|000052b0| 53 29 0a 09 09 74 6f 6b | 20 3d 20 76 73 74 72 5b |S)...tok| = vstr[|
|000052c0| 30 5d 3b 0a 09 65 6c 73 | 65 0a 09 09 74 6f 6b 20 |0];..els|e...tok |
|000052d0| 3d 20 4c 45 58 4f 54 48 | 45 52 3b 0a 09 72 65 74 |= LEXOTH|ER;..ret|
|000052e0| 75 72 6e 20 28 74 6f 6b | 29 3b 0a 7d 0a 0a 2f 2a |urn (tok|);.}../*|
|000052f0| 0a 20 2a 20 6e 67 65 74 | 63 68 20 2d 20 67 65 74 |. * nget|ch - get|
|00005300| 20 61 20 28 70 6f 73 73 | 69 62 6c 79 20 70 75 73 | a (poss|ibly pus|
|00005310| 68 65 64 20 62 61 63 6b | 29 20 63 68 61 72 61 63 |hed back|) charac|
|00005320| 74 65 72 0a 20 2a 20 0a | 20 2a 2f 0a 63 68 61 72 |ter. * .| */.char|
|00005330| 0a 6e 67 65 74 63 68 28 | 63 2c 20 66 64 29 0a 09 |.ngetch(|c, fd)..|
|00005340| 63 68 61 72 20 90 0b 2a | 63 3b 0a 09 46 49 4c 45 |char ..*|c;..FILE|
|00005350| 20 90 0b 2a 66 64 3b 0a | 7b 0a 0a 09 69 66 20 28 | ..*fd;.|{...if (|
|00005360| 62 70 20 3e 3d 20 30 29 | 20 7b 0a 09 09 2a 63 20 |bp >= 0)| {...*c |
|00005370| 3d 20 62 75 66 5b 62 70 | 5d 3b 0a 09 09 62 70 2d |= buf[bp|];...bp-|
|00005380| 2d 3b 0a 09 7d 20 65 6c | 73 65 0a 09 09 2a 63 20 |-;..} el|se...*c |
|00005390| 3d 20 28 63 68 61 72 29 | 20 67 65 74 63 28 66 64 |= (char)| getc(fd|
|000053a0| 29 3b 0a 0a 09 72 65 74 | 75 72 6e 20 28 2a 63 29 |);...ret|urn (*c)|
|000053b0| 3b 0a 7d 0a 2f 2a 0a 20 | 2a 20 70 62 73 74 72 20 |;.}./*. |* pbstr |
|000053c0| 2d 20 70 75 73 68 20 73 | 74 72 69 6e 67 20 62 61 |- push s|tring ba|
|000053d0| 63 6b 20 6f 6e 74 6f 20 | 69 6e 70 75 74 0a 20 2a |ck onto |input. *|
|000053e0| 20 0a 20 2a 2f 0a 70 62 | 73 74 72 28 69 6e 29 0a | . */.pb|str(in).|
|000053f0| 09 63 68 61 72 20 90 0c | 69 6e 5b 5d 3b 0a 7b 0a |.char ..|in[];.{.|
|00005400| 09 69 6e 74 20 90 0d 69 | 3b 0a 0a 09 66 6f 72 20 |.int ..i|;...for |
|00005410| 28 69 20 3d 20 73 74 72 | 6c 65 6e 28 69 6e 29 20 |(i = str|len(in) |
|00005420| 2d 20 31 3b 20 69 20 3e | 3d 20 30 3b 20 69 2d 2d |- 1; i >|= 0; i--|
|00005430| 29 0a 09 09 70 75 74 62 | 61 6b 28 69 6e 5b 69 5d |)...putb|ak(in[i]|
|00005440| 29 3b 0a 7d 0a 0a 2f 2a | 0a 20 2a 20 70 75 74 62 |);.}../*|. * putb|
|00005450| 61 6b 20 2d 20 70 75 73 | 68 20 63 68 61 72 20 62 |ak - pus|h char b|
|00005460| 61 63 6b 20 6f 6e 74 6f | 20 69 6e 70 75 74 0a 20 |ack onto| input. |
|00005470| 2a 20 0a 20 2a 2f 0a 70 | 75 74 62 61 6b 28 63 29 |* . */.p|utbak(c)|
|00005480| 0a 09 63 68 61 72 20 90 | 0c 63 3b 0a 7b 0a 0a 09 |..char .|.c;.{...|
|00005490| 62 70 2b 2b 3b 0a 09 69 | 66 20 28 62 70 20 3e 20 |bp++;..i|f (bp > |
|000054a0| 42 55 46 53 49 5a 45 29 | 0a 09 09 62 61 64 65 72 |BUFSIZE)|...bader|
|000054b0| 72 28 22 74 6f 6f 20 6d | 61 6e 79 20 63 68 61 72 |r("too m|any char|
|000054c0| 61 63 74 65 72 73 20 70 | 75 73 68 65 64 20 62 61 |acters p|ushed ba|
|000054d0| 63 6b 2e 22 29 3b 0a 09 | 62 75 66 5b 62 70 5d 20 |ck.");..|buf[bp] |
|000054e0| 3d 20 63 3b 0a 7d 0a 90 | 03 2f 2a 0a 20 2a 20 72 |= c;.}..|./*. * r|
|000054f0| 65 6c 61 74 65 20 2d 20 | 63 6f 6e 76 65 72 74 20 |elate - |convert |
|00005500| 72 65 6c 61 74 69 6f 6e | 61 6c 20 73 68 6f 72 74 |relation|al short|
|00005510| 68 61 6e 64 73 20 69 6e | 74 6f 20 6c 6f 6e 67 20 |hands in|to long |
|00005520| 66 6f 72 6d 0a 20 2a 20 | 0a 20 2a 2f 0a 69 6e 74 |form. * |. */.int|
|00005530| 0a 72 65 6c 61 74 65 28 | 74 6f 6b 65 6e 2c 20 66 |.relate(|token, f|
|00005540| 64 29 0a 09 63 68 61 72 | 20 90 0c 74 6f 6b 65 6e |d)..char| ..token|
|00005550| 5b 5d 3b 0a 46 49 4c 45 | 20 90 0b 2a 66 64 3b 0a |[];.FILE| ..*fd;.|
|00005560| 7b 0a 0a 09 69 66 20 28 | 6e 67 65 74 63 68 28 26 |{...if (|ngetch(&|
|00005570| 74 6f 6b 65 6e 5b 31 5d | 2c 20 66 64 29 20 21 3d |token[1]|, fd) !=|
|00005580| 20 45 51 55 41 4c 53 29 | 20 7b 0a 09 09 70 75 74 | EQUALS)| {...put|
|00005590| 62 61 6b 28 74 6f 6b 65 | 6e 5b 31 5d 29 3b 0a 09 |bak(toke|n[1]);..|
|000055a0| 09 74 6f 6b 65 6e 5b 32 | 5d 20 3d 20 4c 45 54 54 |.token[2|] = LETT|
|000055b0| 3b 0a 09 7d 20 65 6c 73 | 65 0a 09 09 74 6f 6b 65 |;..} els|e...toke|
|000055c0| 6e 5b 32 5d 20 3d 20 4c | 45 54 45 3b 0a 09 74 6f |n[2] = L|ETE;..to|
|000055d0| 6b 65 6e 5b 33 5d 20 3d | 20 50 45 52 49 4f 44 3b |ken[3] =| PERIOD;|
|000055e0| 0a 09 74 6f 6b 65 6e 5b | 34 5d 20 3d 20 45 4f 53 |..token[|4] = EOS|
|000055f0| 3b 0a 09 74 6f 6b 65 6e | 5b 35 5d 20 3d 20 45 4f |;..token|[5] = EO|
|00005600| 53 3b 09 09 2f 2a 20 66 | 6f 72 20 2e 6e 6f 74 2e |S;../* f|or .not.|
|00005610| 20 61 6e 64 20 2e 61 6e | 64 2e 20 2a 2f 0a 09 69 | and .an|d. */..i|
|00005620| 66 20 28 74 6f 6b 65 6e | 5b 30 5d 20 3d 3d 20 47 |f (token|[0] == G|
|00005630| 52 45 41 54 45 52 29 0a | 09 09 74 6f 6b 65 6e 5b |REATER).|..token[|
|00005640| 31 5d 20 3d 20 4c 45 54 | 47 3b 0a 09 65 6c 73 65 |1] = LET|G;..else|
|00005650| 20 69 66 20 28 74 6f 6b | 65 6e 5b 30 5d 20 3d 3d | if (tok|en[0] ==|
|00005660| 20 4c 45 53 53 29 0a 09 | 09 74 6f 6b 65 6e 5b 31 | LESS)..|.token[1|
|00005670| 5d 20 3d 20 4c 45 54 4c | 3b 0a 09 65 6c 73 65 20 |] = LETL|;..else |
|00005680| 69 66 20 28 74 6f 6b 65 | 6e 5b 30 5d 20 3d 3d 20 |if (toke|n[0] == |
|00005690| 4e 4f 54 20 7c 7c 20 74 | 6f 6b 65 6e 5b 30 5d 20 |NOT || t|oken[0] |
|000056a0| 3d 3d 20 42 41 4e 47 20 | 7c 7c 20 74 6f 6b 65 6e |== BANG ||| token|
|000056b0| 5b 30 5d 20 3d 3d 20 43 | 41 52 45 54 29 20 7b 0a |[0] == C|ARET) {.|
|000056c0| 09 09 69 66 20 28 74 6f | 6b 65 6e 5b 31 5d 20 21 |..if (to|ken[1] !|
|000056d0| 3d 20 45 51 55 41 4c 53 | 29 20 7b 0a 09 90 03 74 |= EQUALS|) {....t|
|000056e0| 6f 6b 65 6e 5b 32 5d 20 | 3d 20 4c 45 54 4f 3b 0a |oken[2] |= LETO;.|
|000056f0| 09 90 03 74 6f 6b 65 6e | 5b 33 5d 20 3d 20 4c 45 |...token|[3] = LE|
|00005700| 54 54 3b 0a 09 90 03 74 | 6f 6b 65 6e 5b 34 5d 20 |TT;....t|oken[4] |
|00005710| 3d 20 50 45 52 49 4f 44 | 3b 0a 09 09 7d 0a 09 09 |= PERIOD|;...}...|
|00005720| 74 6f 6b 65 6e 5b 31 5d | 20 3d 20 4c 45 54 4e 3b |token[1]| = LETN;|
|00005730| 0a 09 7d 20 65 6c 73 65 | 20 69 66 20 28 74 6f 6b |..} else| if (tok|
|00005740| 65 6e 5b 30 5d 20 3d 3d | 20 45 51 55 41 4c 53 29 |en[0] ==| EQUALS)|
|00005750| 20 7b 0a 09 09 69 66 20 | 28 74 6f 6b 65 6e 5b 31 | {...if |(token[1|
|00005760| 5d 20 21 3d 20 45 51 55 | 41 4c 53 29 20 7b 0a 09 |] != EQU|ALS) {..|
|00005770| 90 03 74 6f 6b 65 6e 5b | 32 5d 20 3d 20 45 4f 53 |..token[|2] = EOS|
|00005780| 3b 0a 09 90 03 72 65 74 | 75 72 6e 20 28 30 29 3b |;....ret|urn (0);|
|00005790| 0a 09 09 7d 0a 09 09 74 | 6f 6b 65 6e 5b 31 5d 20 |...}...t|oken[1] |
|000057a0| 3d 20 4c 45 54 45 3b 0a | 09 09 74 6f 6b 65 6e 5b |= LETE;.|..token[|
|000057b0| 32 5d 20 3d 20 4c 45 54 | 51 3b 0a 09 7d 20 65 6c |2] = LET|Q;..} el|
|000057c0| 73 65 20 69 66 20 28 74 | 6f 6b 65 6e 5b 30 5d 20 |se if (t|oken[0] |
|000057d0| 3d 3d 20 41 4e 44 29 20 | 7b 0a 09 09 74 6f 6b 65 |== AND) |{...toke|
|000057e0| 6e 5b 31 5d 20 3d 20 4c | 45 54 41 3b 0a 09 09 74 |n[1] = L|ETA;...t|
|000057f0| 6f 6b 65 6e 5b 32 5d 20 | 3d 20 4c 45 54 4e 3b 0a |oken[2] |= LETN;.|
|00005800| 09 09 74 6f 6b 65 6e 5b | 33 5d 20 3d 20 4c 45 54 |..token[|3] = LET|
|00005810| 44 3b 0a 09 09 74 6f 6b | 65 6e 5b 34 5d 20 3d 20 |D;...tok|en[4] = |
|00005820| 50 45 52 49 4f 44 3b 0a | 09 7d 20 65 6c 73 65 20 |PERIOD;.|.} else |
|00005830| 69 66 20 28 74 6f 6b 65 | 6e 5b 30 5d 20 3d 3d 20 |if (toke|n[0] == |
|00005840| 4f 52 29 20 7b 0a 09 09 | 74 6f 6b 65 6e 5b 31 5d |OR) {...|token[1]|
|00005850| 20 3d 20 4c 45 54 4f 3b | 0a 09 09 74 6f 6b 65 6e | = LETO;|...token|
|00005860| 5b 32 5d 20 3d 20 4c 45 | 54 52 3b 0a 09 7d 20 65 |[2] = LE|TR;..} e|
|00005870| 6c 73 65 09 90 03 2f 2a | 20 63 61 6e 27 74 20 68 |lse.../*| can't h|
|00005880| 61 70 70 65 6e 20 2a 2f | 0a 09 09 74 6f 6b 65 6e |appen */|...token|
|00005890| 5b 31 5d 20 3d 20 45 4f | 53 3b 0a 09 74 6f 6b 65 |[1] = EO|S;..toke|
|000058a0| 6e 5b 30 5d 20 3d 20 50 | 45 52 49 4f 44 3b 0a 09 |n[0] = P|ERIOD;..|
|000058b0| 72 65 74 75 72 6e 20 28 | 73 74 72 6c 65 6e 28 74 |return (|strlen(t|
|000058c0| 6f 6b 65 6e 29 20 2d 20 | 31 29 3b 0a 7d 0a 0a 2f |oken) - |1);.}../|
|000058d0| 2a 0a 20 2a 20 73 6b 70 | 62 6c 6b 20 2d 20 73 6b |*. * skp|blk - sk|
|000058e0| 69 70 20 62 6c 61 6e 6b | 73 20 61 6e 64 20 74 61 |ip blank|s and ta|
|000058f0| 62 73 20 69 6e 20 66 69 | 6c 65 20 20 66 64 0a 20 |bs in fi|le fd. |
|00005900| 2a 20 0a 20 2a 2f 0a 73 | 6b 70 62 6c 6b 28 66 64 |* . */.s|kpblk(fd|
|00005910| 29 0a 09 46 49 4c 45 20 | 90 0b 2a 66 64 3b 0a 7b |)..FILE |..*fd;.{|
|00005920| 0a 09 63 68 61 72 20 90 | 0c 63 3b 0a 0a 09 66 6f |..char .|.c;...fo|
|00005930| 72 20 28 63 20 3d 20 6e | 67 65 74 63 68 28 26 63 |r (c = n|getch(&c|
|00005940| 2c 20 66 64 29 3b 20 63 | 20 3d 3d 20 42 4c 41 4e |, fd); c| == BLAN|
|00005950| 4b 20 7c 7c 20 63 20 3d | 3d 20 54 41 42 3b 20 63 |K || c =|= TAB; c|
|00005960| 20 3d 20 6e 67 65 74 63 | 68 28 26 63 2c 20 66 64 | = ngetc|h(&c, fd|
|00005970| 29 29 3b 0a 09 70 75 74 | 62 61 6b 28 63 29 3b 0a |));..put|bak(c);.|
|00005980| 7d 0a 90 03 2f 2a 0a 20 | 2a 20 74 79 70 65 20 2d |}.../*. |* type -|
|00005990| 20 72 65 74 75 72 6e 20 | 4c 45 54 54 45 52 2c 20 | return |LETTER, |
|000059a0| 44 49 47 49 54 20 6f 72 | 20 63 68 61 72 3b 20 77 |DIGIT or| char; w|
|000059b0| 6f 72 6b 73 20 77 69 74 | 68 20 61 73 63 69 69 20 |orks wit|h ascii |
|000059c0| 61 6c 70 68 61 62 65 74 | 0a 20 2a 20 0a 20 2a 2f |alphabet|. * . */|
|000059d0| 0a 69 6e 74 0a 74 79 70 | 65 28 63 29 0a 09 63 68 |.int.typ|e(c)..ch|
|000059e0| 61 72 20 90 0c 63 3b 0a | 7b 0a 09 69 6e 74 20 90 |ar ..c;.|{..int .|
|000059f0| 0d 74 3b 0a 0a 09 69 66 | 20 28 63 20 3e 3d 20 44 |.t;...if| (c >= D|
|00005a00| 49 47 30 20 26 26 20 63 | 20 3c 3d 20 44 49 47 39 |IG0 && c| <= DIG9|
|00005a10| 29 0a 09 09 74 20 3d 20 | 44 49 47 49 54 3b 0a 09 |)...t = |DIGIT;..|
|00005a20| 65 6c 73 65 20 69 66 20 | 28 63 20 3e 3d 20 4c 45 |else if |(c >= LE|
|00005a30| 54 41 20 26 26 20 63 20 | 3c 3d 20 4c 45 54 5a 29 |TA && c |<= LETZ)|
|00005a40| 0a 09 09 74 20 3d 20 4c | 45 54 54 45 52 3b 0a 09 |...t = L|ETTER;..|
|00005a50| 65 6c 73 65 20 69 66 20 | 28 63 20 3e 3d 20 42 49 |else if |(c >= BI|
|00005a60| 47 41 20 26 26 20 63 20 | 3c 3d 20 42 49 47 5a 29 |GA && c |<= BIGZ)|
|00005a70| 0a 09 09 74 20 3d 20 4c | 45 54 54 45 52 3b 0a 09 |...t = L|ETTER;..|
|00005a80| 65 6c 73 65 0a 09 09 74 | 20 3d 20 63 3b 0a 09 72 |else...t| = c;..r|
|00005a90| 65 74 75 72 6e 20 28 74 | 29 3b 0a 7d 0a 0a 2f 2a |eturn (t|);.}../*|
|00005aa0| 0a 20 2a 20 43 20 4f 20 | 44 20 45 20 20 47 20 45 |. * C O |D E G E|
|00005ab0| 20 4e 20 45 20 52 20 41 | 20 54 20 49 20 4f 20 4e | N E R A| T I O N|
|00005ac0| 0a 20 2a 2f 0a 0a 2f 2a | 0a 20 2a 20 62 72 6b 6e |. */../*|. * brkn|
|00005ad0| 78 74 20 2d 20 67 65 6e | 65 72 61 74 65 20 63 6f |xt - gen|erate co|
|00005ae0| 64 65 20 66 6f 72 20 62 | 72 65 61 6b 20 6e 20 61 |de for b|reak n a|
|00005af0| 6e 64 20 6e 65 78 74 20 | 6e 3b 20 6e 20 3d 20 31 |nd next |n; n = 1|
|00005b00| 20 69 73 20 64 65 66 61 | 75 6c 74 0a 20 2a 2f 0a | is defa|ult. */.|
|00005b10| 62 72 6b 6e 78 74 28 73 | 70 2c 20 6c 65 78 74 79 |brknxt(s|p, lexty|
|00005b20| 70 2c 20 6c 61 62 76 61 | 6c 2c 20 74 6f 6b 65 6e |p, labva|l, token|
|00005b30| 29 0a 09 69 6e 74 20 90 | 0d 73 70 3b 0a 09 69 6e |)..int .|.sp;..in|
|00005b40| 74 20 90 0d 6c 65 78 74 | 79 70 5b 5d 3b 0a 69 6e |t ..lext|yp[];.in|
|00005b50| 74 20 90 0d 6c 61 62 76 | 61 6c 5b 5d 3b 0a 69 6e |t ..labv|al[];.in|
|00005b60| 74 20 90 0d 74 6f 6b 65 | 6e 3b 0a 7b 0a 09 69 6e |t ..toke|n;.{..in|
|00005b70| 74 20 90 0d 69 2c 20 6e | 3b 0a 09 63 68 61 72 20 |t ..i, n|;..char |
|00005b80| 90 0c 74 2c 20 70 74 6f | 6b 65 6e 5b 4d 41 58 54 |..t, pto|ken[MAXT|
|00005b90| 4f 4b 5d 3b 0a 0a 09 6e | 20 3d 20 30 3b 0a 09 74 |OK];...n| = 0;..t|
|00005ba0| 20 3d 20 67 6e 62 74 6f | 6b 28 70 74 6f 6b 65 6e | = gnbto|k(ptoken|
|00005bb0| 2c 20 4d 41 58 54 4f 4b | 29 3b 0a 09 69 66 20 28 |, MAXTOK|);..if (|
|00005bc0| 61 6c 6c 64 69 67 28 70 | 74 6f 6b 65 6e 29 20 3d |alldig(p|token) =|
|00005bd0| 3d 20 59 45 53 29 20 7b | 09 2f 2a 20 68 61 76 65 |= YES) {|./* have|
|00005be0| 20 62 72 65 61 6b 20 6e | 20 6f 72 20 6e 65 78 74 | break n| or next|
|00005bf0| 20 6e 20 2a 2f 0a 09 09 | 69 20 3d 20 30 3b 0a 09 | n */...|i = 0;..|
|00005c00| 09 6e 20 3d 20 63 74 6f | 69 28 70 74 6f 6b 65 6e |.n = cto|i(ptoken|
|00005c10| 2c 20 26 69 29 20 2d 20 | 31 3b 0a 09 7d 20 65 6c |, &i) - |1;..} el|
|00005c20| 73 65 20 69 66 20 28 74 | 20 21 3d 20 53 45 4d 49 |se if (t| != SEMI|
|00005c30| 43 4f 4c 29 2f 2a 20 64 | 65 66 61 75 6c 74 20 63 |COL)/* d|efault c|
|00005c40| 61 73 65 20 2a 2f 0a 09 | 09 70 62 73 74 72 28 70 |ase */..|.pbstr(p|
|00005c50| 74 6f 6b 65 6e 29 3b 0a | 09 66 6f 72 20 28 69 20 |token);.|.for (i |
|00005c60| 3d 20 73 70 3b 20 69 20 | 3e 3d 20 30 3b 20 69 2d |= sp; i |>= 0; i-|
|00005c70| 2d 29 0a 09 09 69 66 20 | 28 6c 65 78 74 79 70 5b |-)...if |(lextyp[|
|00005c80| 69 5d 20 3d 3d 20 4c 45 | 58 57 48 49 4c 45 20 7c |i] == LE|XWHILE ||
|00005c90| 7c 20 6c 65 78 74 79 70 | 5b 69 5d 20 3d 3d 20 4c || lextyp|[i] == L|
|00005ca0| 45 58 44 4f 0a 09 09 20 | 90 04 7c 7c 20 6c 65 78 |EXDO... |..|| lex|
|00005cb0| 74 79 70 5b 69 5d 20 3d | 3d 20 4c 45 58 46 4f 52 |typ[i] =|= LEXFOR|
|00005cc0| 20 7c 7c 20 6c 65 78 74 | 79 70 5b 69 5d 20 3d 3d | || lext|yp[i] ==|
|00005cd0| 20 4c 45 58 52 45 50 45 | 41 54 29 20 7b 0a 09 90 | LEXREPE|AT) {...|
|00005ce0| 03 69 66 20 28 6e 20 3e | 20 30 29 20 7b 0a 09 90 |.if (n >| 0) {...|
|00005cf0| 04 6e 2d 2d 3b 0a 09 90 | 04 63 6f 6e 74 69 6e 75 |.n--;...|.continu|
|00005d00| 65 3b 09 2f 2a 20 73 65 | 65 6b 20 70 72 6f 70 65 |e;./* se|ek prope|
|00005d10| 72 20 6c 65 76 65 6c 20 | 2a 2f 0a 09 90 03 7d 20 |r level |*/....} |
|00005d20| 65 6c 73 65 20 69 66 20 | 28 74 6f 6b 65 6e 20 3d |else if |(token =|
|00005d30| 3d 20 4c 45 58 42 52 45 | 41 4b 29 0a 09 90 04 6f |= LEXBRE|AK)....o|
|00005d40| 75 74 67 6f 28 6c 61 62 | 76 61 6c 5b 69 5d 20 2b |utgo(lab|val[i] +|
|00005d50| 20 31 29 3b 0a 09 90 03 | 65 6c 73 65 0a 09 90 04 | 1);....|else....|
|00005d60| 6f 75 74 67 6f 28 6c 61 | 62 76 61 6c 5b 69 5d 29 |outgo(la|bval[i])|
|00005d70| 3b 0a 09 90 03 78 66 65 | 72 20 3d 20 59 45 53 3b |;....xfe|r = YES;|
|00005d80| 0a 09 90 03 72 65 74 75 | 72 6e 3b 0a 09 09 7d 0a |....retu|rn;...}.|
|00005d90| 09 69 66 20 28 74 6f 6b | 65 6e 20 3d 3d 20 4c 45 |.if (tok|en == LE|
|00005da0| 58 42 52 45 41 4b 29 0a | 09 09 73 79 6e 65 72 72 |XBREAK).|..synerr|
|00005db0| 28 22 69 6c 6c 65 67 61 | 6c 20 62 72 65 61 6b 2e |("illega|l break.|
|00005dc0| 22 29 3b 0a 09 65 6c 73 | 65 0a 09 09 73 79 6e 65 |");..els|e...syne|
|00005dd0| 72 72 28 22 69 6c 6c 65 | 67 61 6c 20 6e 65 78 74 |rr("ille|gal next|
|00005de0| 2e 22 29 3b 0a 09 72 65 | 74 75 72 6e 3b 0a 7d 0a |.");..re|turn;.}.|
|00005df0| 0a 2f 2a 0a 20 2a 20 64 | 6f 63 6f 64 65 20 2d 20 |./*. * d|ocode - |
|00005e00| 67 65 6e 65 72 61 74 65 | 20 63 6f 64 65 20 66 6f |generate| code fo|
|00005e10| 72 20 62 65 67 69 6e 6e | 69 6e 67 20 6f 66 20 64 |r beginn|ing of d|
|00005e20| 6f 0a 20 2a 20 0a 20 2a | 2f 0a 64 6f 63 6f 64 65 |o. * . *|/.docode|
|00005e30| 28 6c 61 62 29 0a 09 69 | 6e 74 20 90 0c 2a 6c 61 |(lab)..i|nt ..*la|
|00005e40| 62 3b 0a 7b 0a 09 78 66 | 65 72 20 3d 20 4e 4f 3b |b;.{..xf|er = NO;|
|00005e50| 0a 09 6f 75 74 74 61 62 | 28 29 3b 0a 09 6f 75 74 |..outtab|();..out|
|00005e60| 73 74 72 28 73 64 6f 29 | 3b 0a 09 2a 6c 61 62 20 |str(sdo)|;..*lab |
|00005e70| 3d 20 6c 61 62 67 65 6e | 28 32 29 3b 0a 09 6f 75 |= labgen|(2);..ou|
|00005e80| 74 6e 75 6d 28 2a 6c 61 | 62 29 3b 0a 09 65 61 74 |tnum(*la|b);..eat|
|00005e90| 75 70 28 29 3b 0a 09 6f | 75 74 64 6f 6e 28 29 3b |up();..o|utdon();|
|00005ea0| 0a 7d 0a 0a 2f 2a 0a 20 | 2a 20 64 6f 73 74 61 74 |.}../*. |* dostat|
|00005eb0| 20 2d 20 67 65 6e 65 72 | 61 74 65 20 63 6f 64 65 | - gener|ate code|
|00005ec0| 20 66 6f 72 20 65 6e 64 | 20 6f 66 20 64 6f 20 73 | for end| of do s|
|00005ed0| 74 61 74 65 6d 65 6e 74 | 0a 20 2a 20 0a 20 2a 2f |tatement|. * . */|
|00005ee0| 0a 64 6f 73 74 61 74 28 | 6c 61 62 29 0a 09 69 6e |.dostat(|lab)..in|
|00005ef0| 74 20 90 0d 6c 61 62 3b | 0a 7b 0a 09 6f 75 74 63 |t ..lab;|.{..outc|
|00005f00| 6f 6e 28 6c 61 62 29 3b | 0a 09 6f 75 74 63 6f 6e |on(lab);|..outcon|
|00005f10| 28 6c 61 62 20 2b 20 31 | 29 3b 0a 7d 0a 0a 2f 2a |(lab + 1|);.}../*|
|00005f20| 0a 20 2a 20 65 6c 73 65 | 69 66 20 2d 20 67 65 6e |. * else|if - gen|
|00005f30| 65 72 61 74 65 20 63 6f | 64 65 20 66 6f 72 20 65 |erate co|de for e|
|00005f40| 6e 64 20 6f 66 20 69 66 | 20 62 65 66 6f 72 65 20 |nd of if| before |
|00005f50| 65 6c 73 65 0a 20 2a 20 | 0a 20 2a 2f 0a 65 6c 73 |else. * |. */.els|
|00005f60| 65 69 66 28 6c 61 62 29 | 0a 09 69 6e 74 20 90 0d |eif(lab)|..int ..|
|00005f70| 6c 61 62 3b 0a 7b 0a 0a | 23 69 66 64 65 66 20 46 |lab;.{..|#ifdef F|
|00005f80| 37 37 0a 09 6f 75 74 74 | 61 62 28 29 3b 0a 09 6f |77..outt|ab();..o|
|00005f90| 75 74 73 74 72 28 73 65 | 6c 73 65 29 3b 0a 09 6f |utstr(se|lse);..o|
|00005fa0| 75 74 64 6f 6e 28 29 3b | 0a 23 65 6c 73 65 0a 09 |utdon();|.#else..|
|00005fb0| 6f 75 74 67 6f 28 6c 61 | 62 20 2b 20 31 29 3b 0a |outgo(la|b + 1);.|
|00005fc0| 09 6f 75 74 63 6f 6e 28 | 6c 61 62 29 3b 0a 23 65 |.outcon(|lab);.#e|
|00005fd0| 6e 64 69 66 20 46 37 37 | 0a 7d 0a 0a 2f 2a 0a 20 |ndif F77|.}../*. |
|00005fe0| 2a 20 66 6f 72 63 6f 64 | 20 2d 20 62 65 67 69 6e |* forcod| - begin|
|00005ff0| 6e 69 6e 67 20 6f 66 20 | 66 6f 72 20 73 74 61 74 |ning of |for stat|
|00006000| 65 6d 65 6e 74 0a 20 2a | 20 0a 20 2a 2f 0a 66 6f |ement. *| . */.fo|
|00006010| 72 63 6f 64 28 6c 61 62 | 29 0a 09 69 6e 74 20 90 |rcod(lab|)..int .|
|00006020| 0c 2a 6c 61 62 3b 0a 7b | 0a 09 63 68 61 72 20 90 |.*lab;.{|..char .|
|00006030| 0c 74 2c 20 74 6f 6b 65 | 6e 5b 4d 41 58 54 4f 4b |.t, toke|n[MAXTOK|
|00006040| 5d 3b 0a 09 69 6e 74 20 | 90 0d 69 2c 20 6a 2c 20 |];..int |..i, j, |
|00006050| 6e 6c 70 61 72 2c 20 74 | 6c 61 62 3b 0a 0a 09 74 |nlpar, t|lab;...t|
|00006060| 6c 61 62 20 3d 20 2a 6c | 61 62 3b 0a 09 74 6c 61 |lab = *l|ab;..tla|
|00006070| 62 20 3d 20 6c 61 62 67 | 65 6e 28 33 29 3b 0a 09 |b = labg|en(3);..|
|00006080| 6f 75 74 63 6f 6e 28 30 | 29 3b 0a 09 69 66 20 28 |outcon(0|);..if (|
|00006090| 67 6e 62 74 6f 6b 28 74 | 6f 6b 65 6e 2c 20 4d 41 |gnbtok(t|oken, MA|
|000060a0| 58 54 4f 4b 29 20 21 3d | 20 4c 50 41 52 45 4e 29 |XTOK) !=| LPAREN)|
|000060b0| 20 7b 0a 09 09 73 79 6e | 65 72 72 28 22 6d 69 73 | {...syn|err("mis|
|000060c0| 73 69 6e 67 20 6c 65 66 | 74 20 70 61 72 65 6e 2e |sing lef|t paren.|
|000060d0| 22 29 3b 0a 09 09 72 65 | 74 75 72 6e 3b 0a 09 7d |");...re|turn;..}|
|000060e0| 0a 09 69 66 20 28 67 6e | 62 74 6f 6b 28 74 6f 6b |..if (gn|btok(tok|
|000060f0| 65 6e 2c 20 4d 41 58 54 | 4f 4b 29 20 21 3d 20 53 |en, MAXT|OK) != S|
|00006100| 45 4d 49 43 4f 4c 29 20 | 7b 09 2f 2a 20 72 65 61 |EMICOL) |{./* rea|
|00006110| 6c 20 69 6e 69 74 20 63 | 6c 61 75 73 65 20 2a 2f |l init c|lause */|
|00006120| 0a 09 09 70 62 73 74 72 | 28 74 6f 6b 65 6e 29 3b |...pbstr|(token);|
|00006130| 0a 09 09 6f 75 74 74 61 | 62 28 29 3b 0a 09 09 65 |...outta|b();...e|
|00006140| 61 74 75 70 28 29 3b 0a | 09 09 6f 75 74 64 6f 6e |atup();.|..outdon|
|00006150| 28 29 3b 0a 09 7d 0a 09 | 69 66 20 28 67 6e 62 74 |();..}..|if (gnbt|
|00006160| 6f 6b 28 74 6f 6b 65 6e | 2c 20 4d 41 58 54 4f 4b |ok(token|, MAXTOK|
|00006170| 29 20 3d 3d 20 53 45 4d | 49 43 4f 4c 29 09 2f 2a |) == SEM|ICOL)./*|
|00006180| 20 65 6d 70 74 79 20 63 | 6f 6e 64 69 74 69 6f 6e | empty c|ondition|
|00006190| 20 2a 2f 0a 09 09 6f 75 | 74 63 6f 6e 28 74 6c 61 | */...ou|tcon(tla|
|000061a0| 62 29 3b 0a 09 65 6c 73 | 65 20 7b 09 90 03 2f 2a |b);..els|e {.../*|
|000061b0| 20 6e 6f 6e 2d 65 6d 70 | 74 79 20 63 6f 6e 64 69 | non-emp|ty condi|
|000061c0| 74 69 6f 6e 20 2a 2f 0a | 09 09 70 62 73 74 72 28 |tion */.|..pbstr(|
|000061d0| 74 6f 6b 65 6e 29 3b 0a | 09 09 6f 75 74 6e 75 6d |token);.|..outnum|
|000061e0| 28 74 6c 61 62 29 3b 0a | 09 09 6f 75 74 74 61 62 |(tlab);.|..outtab|
|000061f0| 28 29 3b 0a 09 09 6f 75 | 74 73 74 72 28 69 66 6e |();...ou|tstr(ifn|
|00006200| 6f 74 29 3b 0a 09 09 6f | 75 74 63 68 28 4c 50 41 |ot);...o|utch(LPA|
|00006210| 52 45 4e 29 3b 0a 09 09 | 6e 6c 70 61 72 20 3d 20 |REN);...|nlpar = |
|00006220| 30 3b 0a 09 09 77 68 69 | 6c 65 20 28 6e 6c 70 61 |0;...whi|le (nlpa|
|00006230| 72 20 3e 3d 20 30 29 20 | 7b 0a 09 90 03 74 20 3d |r >= 0) |{....t =|
|00006240| 20 67 65 74 74 6f 6b 28 | 74 6f 6b 65 6e 2c 20 4d | gettok(|token, M|
|00006250| 41 58 54 4f 4b 29 3b 0a | 09 90 03 69 66 20 28 74 |AXTOK);.|...if (t|
|00006260| 20 3d 3d 20 53 45 4d 49 | 43 4f 4c 29 0a 09 90 04 | == SEMI|COL)....|
|00006270| 62 72 65 61 6b 3b 0a 09 | 90 03 69 66 20 28 74 20 |break;..|..if (t |
|00006280| 3d 3d 20 4c 50 41 52 45 | 4e 29 0a 09 90 04 6e 6c |== LPARE|N)....nl|
|00006290| 70 61 72 2b 2b 3b 0a 09 | 90 03 65 6c 73 65 20 69 |par++;..|..else i|
|000062a0| 66 20 28 74 20 3d 3d 20 | 52 50 41 52 45 4e 29 0a |f (t == |RPAREN).|
|000062b0| 09 90 04 6e 6c 70 61 72 | 2d 2d 3b 0a 09 90 03 69 |...nlpar|--;....i|
|000062c0| 66 20 28 74 20 3d 3d 20 | 45 4f 46 29 20 7b 0a 09 |f (t == |EOF) {..|
|000062d0| 90 04 70 62 73 74 72 28 | 74 6f 6b 65 6e 29 3b 0a |..pbstr(|token);.|
|000062e0| 09 90 04 72 65 74 75 72 | 6e 3b 0a 09 90 03 7d 0a |...retur|n;....}.|
|000062f0| 09 90 03 69 66 20 28 74 | 20 21 3d 20 4e 45 57 4c |...if (t| != NEWL|
|00006300| 49 4e 45 20 26 26 20 74 | 20 21 3d 20 55 4e 44 45 |INE && t| != UNDE|
|00006310| 52 4c 49 4e 45 29 0a 09 | 90 04 6f 75 74 73 74 72 |RLINE)..|..outstr|
|00006320| 28 74 6f 6b 65 6e 29 3b | 0a 09 09 7d 0a 09 09 6f |(token);|...}...o|
|00006330| 75 74 63 68 28 52 50 41 | 52 45 4e 29 3b 0a 09 09 |utch(RPA|REN);...|
|00006340| 6f 75 74 63 68 28 52 50 | 41 52 45 4e 29 3b 0a 09 |outch(RP|AREN);..|
|00006350| 09 6f 75 74 67 6f 28 28 | 74 6c 61 62 29 20 2b 20 |.outgo((|tlab) + |
|00006360| 32 29 3b 0a 09 09 69 66 | 20 28 6e 6c 70 61 72 20 |2);...if| (nlpar |
|00006370| 3c 20 30 29 0a 09 90 03 | 73 79 6e 65 72 72 28 22 |< 0)....|synerr("|
|00006380| 69 6e 76 61 6c 69 64 20 | 66 6f 72 20 63 6c 61 75 |invalid |for clau|
|00006390| 73 65 2e 22 29 3b 0a 09 | 7d 0a 09 66 6f 72 64 65 |se.");..|}..forde|
|000063a0| 70 2b 2b 3b 09 09 2f 2a | 20 73 74 61 63 6b 20 72 |p++;../*| stack r|
|000063b0| 65 69 6e 69 74 20 63 6c | 61 75 73 65 20 2a 2f 0a |einit cl|ause */.|
|000063c0| 09 6a 20 3d 20 30 3b 0a | 09 66 6f 72 20 28 69 20 |.j = 0;.|.for (i |
|000063d0| 3d 20 31 3b 20 69 20 3c | 20 66 6f 72 64 65 70 3b |= 1; i <| fordep;|
|000063e0| 20 69 2b 2b 29 09 2f 2a | 20 66 69 6e 64 20 65 6e | i++)./*| find en|
|000063f0| 64 20 2a 90 03 20 73 68 | 6f 75 6c 64 20 69 20 3d |d *.. sh|ould i =|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.