Hex Artifact Content

Not logged in

Artifact 81bbb0c1ba6ccbac3d5bcc872373ed38f1d9f9cf:


0000: 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 66 78  #include "stdafx
0010: 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 69  .h"..#include "i
0020: 70 5f 64 6f 63 2e 68 22 0d 0a 75 73 69 6e 67 20  p_doc.h"..using 
0030: 6e 61 6d 65 73 70 61 63 65 20 65 64 69 74 77 69  namespace editwi
0040: 6e 67 3b 0d 0a 75 73 69 6e 67 20 6e 61 6d 65 73  ng;..using names
0050: 70 61 63 65 20 65 64 69 74 77 69 6e 67 3a 3a 64  pace editwing::d
0060: 6f 63 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d  oc;........//===
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
00a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
00b0: 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 2d 2d 2d 2d 20 69  ======..//---- i
00c0: 70 5f 70 61 72 73 65 2e 63 70 70 20 83 4c 81 5b  p_parse.cpp .L.[
00d0: 83 8f 81 5b 83 68 89 f0 90 cd 0d 0a 2f 2f 0d 0a  ...[.h......//..
00e0: 2f 2f 09 09 83 4c 81 5b 83 8f 81 5b 83 68 92 e8  //...L.[...[.h..
00f0: 8b 60 83 74 83 40 83 43 83 8b 82 c9 8f 5d 82 c1  .`.t.@.C.....]..
0100: 82 c4 81 41 95 db 8e 9d 82 b7 82 e9 95 b6 8e 9a  ...A............
0110: 97 f1 82 f0 0d 0a 2f 2f 09 09 93 4b 90 d8 82 c9  ......//...K....
0120: 90 d8 82 e8 95 aa 82 af 82 e9 8d ec 8b c6 82 aa  ................
0130: 82 b1 82 b1 81 42 0d 0a 2f 2f 0d 0a 2f 2f 2d 2d  .....B..//..//--
0140: 2d 2d 20 69 70 5f 74 65 78 74 2e 63 70 70 20 20  -- ip_text.cpp  
0150: 20 95 b6 8e 9a 97 f1 91 80 8d ec 81 45 91 bc 0d   ...........E...
0160: 0a 2f 2f 2d 2d 2d 2d 20 69 70 5f 77 72 61 70 2e  .//---- ip_wrap.
0170: 63 70 70 20 20 20 90 dc 82 e8 95 d4 82 b5 0d 0a  cpp   ..........
0180: 2f 2f 2d 2d 2d 2d 20 69 70 5f 73 63 72 6f 6c 6c  //---- ip_scroll
0190: 2e 63 70 70 20 83 58 83 4e 83 8d 81 5b 83 8b 0d  .cpp .X.N...[...
01a0: 0a 2f 2f 2d 2d 2d 2d 20 69 70 5f 64 72 61 77 2e  .//---- ip_draw.
01b0: 63 70 70 20 20 20 95 60 89 e6 81 45 91 bc 0d 0a  cpp   .`...E....
01c0: 2f 2f 2d 2d 2d 2d 20 69 70 5f 63 75 72 73 6f 72  //---- ip_cursor
01d0: 2e 63 70 70 20 83 4a 81 5b 83 5c 83 8b 83 52 83  .cpp .J.[.\...R.
01e0: 93 83 67 83 8d 81 5b 83 8b 0d 0a 2f 2f 3d 3d 3d  ..g...[....//===
01f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0220: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0230: 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f  ======........//
0240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0260: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0270: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0280: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 0d 0a 2f  =========..//../
0290: 2f 20 89 f0 90 cd 8c 8b 89 ca 83 66 81 5b 83 5e  / .........f.[.^
02a0: 8e 64 97 6c 0d 0a 2f 2f 20 82 b1 82 ea 82 be 82  .d.l..// .......
02b0: af 90 46 81 58 8c c6 91 a7 82 c8 8e e8 92 69 82  ..F.X.........i.
02c0: f0 8e 9d 82 bf 8d 9e 82 f1 82 c5 96 7b 93 96 82  ............{...
02d0: c9 0d 0a 2f 2f 20 91 ac 82 ad 82 c8 82 c1 82 c4  ...// ..........
02e0: 82 a2 82 e9 82 cc 82 a9 82 c7 82 a4 82 a9 82 cd  ................
02f0: 95 73 96 be 81 63 28 5e 5e 3b 0d 0a 2f 2f 0d 0a  .s...c(^^;..//..
0300: 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  // -------------
0310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0330: 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 4c 69 6e 65 3a  --..//..// Line:
0340: 3a 69 73 4c 69 6e 65 48 65 61 64 43 6f 6d 6d 65  :isLineHeadComme
0350: 6e 74 65 64 5f 0d 0a 2f 2f 20 20 20 20 30 3a 20  nted_..//    0: 
0360: 8d 73 93 aa 82 aa 83 75 83 8d 83 62 83 4e 83 52  .s.....u...b.N.R
0370: 83 81 83 93 83 67 82 cc 93 e0 95 94 82 c5 82 cd  .....g..........
0380: 82 c8 82 a2 0d 0a 2f 2f 20 20 20 20 31 3a 20 8d  ......//    1: .
0390: 73 93 aa 82 aa 83 75 83 8d 83 62 83 4e 83 52 83  s.....u...b.N.R.
03a0: 81 83 93 83 67 82 cc 93 e0 95 94 0d 0a 2f 2f 0d  ....g........//.
03b0: 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .// ------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03e0: 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 4c 69 6e 65  ---..//..// Line
03f0: 3a 3a 63 6f 6d 6d 65 6e 74 54 72 61 6e 73 69 74  ::commentTransit
0400: 69 6f 6e 5f 0d 0a 2f 2f 20 20 20 30 30 3a 20 8d  ion_..//   00: .
0410: 73 96 96 82 cd 8f ed 82 c9 83 52 83 81 83 93 83  s.........R.....
0420: 67 82 cc 8a 4f 0d 0a 2f 2f 20 20 20 30 31 3a 20  g...O..//   01: 
0430: 8d 73 93 aa 82 c6 8d 73 96 96 82 cd 83 52 83 81  .s.....s.....R..
0440: 83 93 83 67 8f f3 91 d4 82 aa 8b 74 93 5d 0d 0a  ...g.......t.]..
0450: 2f 2f 20 20 20 31 30 3a 20 8d 73 93 aa 82 c6 8d  //   10: .s.....
0460: 73 96 96 82 cd 83 52 83 81 83 93 83 67 8f f3 91  s.....R.....g...
0470: d4 82 aa 93 af 82 b6 0d 0a 2f 2f 20 20 20 31 31  .........//   11
0480: 3a 20 8d 73 96 96 82 cd 8f ed 82 c9 83 52 83 81  : .s.........R..
0490: 83 93 83 67 82 cc 92 86 0d 0a 2f 2f 0d 0a 2f 2f  ...g......//..//
04a0: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
04b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04d0: 0d 0a 2f 2f 0d 0a 2f 2f 20 88 c8 8f e3 93 f1 82  ..//..// .......
04e0: c2 82 cc 83 74 83 89 83 4f 82 f0 8c b3 82 c9 81  ....t...O.......
04f0: 41 91 4f 82 cc 8d 73 82 cc 8f ee 95 f1 82 a9 82  A.O...s.........
0500: e7 8d a1 82 cc 8d 73 82 cc 8f ee 95 f1 82 f0 0d  ......s.........
0510: 0a 2f 2f 20 20 20 74 68 69 73 2e 68 65 61 64 20  .//   this.head 
0520: 3d 20 28 70 72 65 76 2e 74 72 61 6e 73 20 3e 3e  = (prev.trans >>
0530: 20 70 72 65 76 2e 68 65 61 64 29 26 31 3b 0d 0a   prev.head)&1;..
0540: 2f 2f 20 82 c5 8f 87 8e 9f 8c 76 8e 5a 82 b5 82  // .......v.Z...
0550: c4 82 a2 82 ad 82 b1 82 c6 82 aa 8f 6f 97 88 82  ............o...
0560: e9 81 42 0d 0a 2f 2f 20 82 b1 82 cc 8c 76 8e 5a  ..B..// .....v.Z
0570: 82 cc 8d db 82 c9 93 e0 95 94 83 6f 83 62 83 74  ...........o.b.t
0580: 83 40 82 cc 8f f3 91 d4 82 dc 82 c5 8f 91 82 ab  .@..............
0590: 8a b7 82 a6 82 e9 82 cc 82 cd 0d 0a 2f 2f 20 83  ............// .
05a0: 52 83 58 83 67 82 aa 82 c5 82 a9 82 b7 82 ac 82  R.X.g...........
05b0: e9 82 cc 82 c5 81 41 8e 9f 82 c9 8e a6 82 b7 83  ......A.........
05c0: 74 83 89 83 4f 82 f0 8c a9 82 c8 82 aa 82 e7 0d  t...O...........
05d0: 0a 2f 2f 20 95 60 89 e6 90 a1 91 4f 82 c9 93 4b  .// .`.....O...K
05e0: 8b 58 92 b2 90 ae 82 b7 82 e9 81 42 0d 0a 2f 2f  .X.........B..//
05f0: 0d 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..// -----------
0600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0620: 2d 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 4c 69 6e  ----..//..// Lin
0630: 65 3a 3a 63 6f 6d 6d 65 6e 74 42 69 74 52 65 61  e::commentBitRea
0640: 64 79 5f 0d 0a 2f 2f 20 20 20 83 52 83 81 83 93  dy_..//   .R....
0650: 83 67 83 72 83 62 83 67 82 aa 92 b2 90 ae 8d cf  .g.r.b.g........
0660: 82 dd 82 a9 82 c7 82 a4 82 a9 0d 0a 2f 2f 0d 0a  ............//..
0670: 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  // -------------
0680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06a0: 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 4c 69 6e 65 3a  --..//..// Line:
06b0: 3a 73 74 72 5f 5b 5d 0d 0a 2f 2f 20 20 20 55 43  :str_[]..//   UC
06c0: 53 2d 32 83 78 83 5e 82 c5 81 41 95 b6 8e 9a 97  S-2.x.^...A.....
06d0: f1 83 66 81 5b 83 5e 82 aa 82 bb 82 cc 82 dc 82  ..f.[.^.........
06e0: dc 8a 69 94 5b 82 b3 82 ea 82 e9 81 42 0d 0a 2f  ..i.[.......B../
06f0: 2f 20 20 20 82 bd 82 be 82 b5 81 41 83 70 81 5b  /   .......A.p.[
0700: 83 54 82 cc 8d 82 91 ac 89 bb 82 cc 82 bd 82 df  .T..............
0710: 82 c9 8d c5 8f 49 95 b6 8e 9a 82 cc 8c e3 82 eb  .....I..........
0720: 82 c9 0d 0a 2f 2f 20 20 20 30 78 30 30 37 66 82  ....//   0x007f.
0730: aa 95 74 89 c1 82 b3 82 ea 82 e9 81 42 0d 0a 2f  ..t.........B../
0740: 2f 0d 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /..// ----------
0750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0770: 2d 2d 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 4c 69  -----..//..// Li
0780: 6e 65 3a 3a 66 6c 67 5f 0d 0a 2f 2f 20 20 20 88  ne::flg_..//   .
0790: ea 95 b6 8e 9a 96 88 82 c9 81 41 89 ba 82 cc 82  ..........A.....
07a0: e6 82 a4 82 c8 38 62 69 74 82 cc 83 74 83 89 83  .....8bit...t...
07b0: 4f 82 f0 8a 84 82 e8 93 96 82 c4 82 e9 0d 0a 2f  O............../
07c0: 2f 20 20 20 7c 20 61 61 61 62 62 62 63 64 20 7c  /   | aaabbbcd |
07d0: 0d 0a 2f 2f 20 0d 0a 2f 2f 20 2d 2d 2d 2d 2d 2d  ..// ..// ------
07e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
07f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f  ---------..//../
0810: 2f 20 61 61 61 20 3d 3d 20 22 50 6f 73 49 6e 54  / aaa == "PosInT
0820: 6f 6b 65 6e 22 0d 0a 2f 2f 20 20 20 20 20 30 3a  oken"..//     0:
0830: 20 83 67 81 5b 83 4e 83 93 82 cc 93 72 92 86 0d   .g.[.N.....r...
0840: 0a 2f 2f 20 20 20 31 2d 36 3a 20 83 67 81 5b 83  .//   1-6: .g.[.
0850: 4e 83 93 82 cc 93 aa 81 42 8e 9f 82 cc 93 aa 82  N.......B.......
0860: cd 31 2d 36 95 b6 8e 9a 90 e6 81 42 0d 0a 2f 2f  .1-6.......B..//
0870: 20 20 20 20 20 37 3a 20 83 67 81 5b 83 4e 83 93       7: .g.[.N..
0880: 82 cc 93 aa 81 42 8e 9f 82 cc 93 aa 82 cd 37 95  .....B........7.
0890: b6 8e 9a 88 c8 8f e3 90 e6 81 42 0d 0a 2f 2f 0d  ..........B..//.
08a0: 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .// ------------
08b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08d0: 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 62 62 62 20  ---..//..// bbb 
08e0: 3d 3d 20 22 54 6f 6b 65 6e 54 79 70 65 22 0d 0a  == "TokenType"..
08f0: 2f 2f 20 20 20 20 20 30 3a 20 54 41 42 3a 20 83  //     0: TAB: .
0900: 5e 83 75 95 b6 8e 9a 0d 0a 2f 2f 20 20 20 20 20  ^.u......//     
0910: 31 3a 20 57 53 50 3a 20 83 7a 83 8f 83 43 83 67  1: WSP: .z...C.g
0920: 83 58 83 79 81 5b 83 58 0d 0a 2f 2f 20 20 20 20  .X.y.[.X..//    
0930: 20 32 3a 20 54 58 54 3a 20 95 81 92 ca 82 cc 95   2: TXT: .......
0940: b6 8e 9a 0d 0a 2f 2f 20 20 20 20 20 33 3a 20 20  .....//     3:  
0950: 43 45 3a 20 83 52 83 81 83 93 83 67 8a 4a 8e 6e  CE: .R.....g.J.n
0960: 83 5e 83 4f 0d 0a 2f 2f 20 20 20 20 20 34 3a 20  .^.O..//     4: 
0970: 20 43 42 3a 20 83 52 83 81 83 93 83 67 8f 49 97   CB: .R.....g.I.
0980: b9 83 5e 83 4f 0d 0a 2f 2f 20 20 20 20 20 35 3a  ..^.O..//     5:
0990: 20 20 4c 42 3a 20 8d 73 83 52 83 81 83 93 83 67    LB: .s.R.....g
09a0: 8a 4a 8e 6e 83 5e 83 4f 0d 0a 2f 2f 20 20 20 20  .J.n.^.O..//    
09b0: 20 36 3a 20 20 51 31 3a 20 27 27 20 88 f8 97 70   6:  Q1: '' ...p
09c0: 95 84 31 0d 0a 2f 2f 20 20 20 20 20 37 3a 20 20  ..1..//     7:  
09d0: 51 32 3a 20 22 22 20 88 f8 97 70 95 84 32 0d 0a  Q2: "" ...p..2..
09e0: 2f 2f 0d 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d  //..// ---------
09f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a10: 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 0d 0a 2f 2f 20 20  ------..//..//  
0a20: 63 20 20 3d 3d 20 22 69 73 4b 65 79 77 6f 72 64  c  == "isKeyword
0a30: 3f 22 0d 0a 2f 2f 20 20 20 20 20 30 3a 20 83 4c  ?"..//     0: .L
0a40: 81 5b 83 8f 81 5b 83 68 82 c5 82 cd 82 c8 82 a2  .[...[.h........
0a50: 0d 0a 2f 2f 20 20 20 20 20 31 3a 20 83 4c 81 5b  ..//     1: .L.[
0a60: 83 8f 81 5b 83 68 0d 0a 2f 2f 0d 0a 2f 2f 20 2d  ...[.h..//..// -
0a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
0aa0: 2f 2f 0d 0a 2f 2f 20 20 64 20 20 3d 3d 20 22 69  //..//  d  == "i
0ab0: 6e 43 6f 6d 6d 65 6e 74 3f 22 0d 0a 2f 2f 20 20  nComment?"..//  
0ac0: 20 20 20 30 3a 20 83 52 83 81 83 93 83 67 82 cc     0: .R.....g..
0ad0: 92 86 82 c5 82 cd 82 c8 82 a2 0d 0a 2f 2f 20 20  ............//  
0ae0: 20 20 20 31 3a 20 83 52 83 81 83 93 83 67 82 cc     1: .R.....g..
0af0: 92 86 0d 0a 2f 2f 0d 0a 2f 2f 20 2d 2d 2d 2d 2d  ....//..// -----
0b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a  ----------......
0b30: 0d 0a 6e 61 6d 65 73 70 61 63 65 20 7b 0d 0a 2f  ..namespace {../
0b40: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
0b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 83  ----------..// .
0b90: 52 83 81 83 93 83 67 82 cc 92 86 82 c8 82 cc 82  R.....g.........
0ba0: a9 8a 4f 82 c8 82 cc 82 a9 93 99 82 f0 94 bb 92  ..O.............
0bb0: e8 82 b7 82 e9 82 bd 82 df 82 cc 83 49 81 5b 83  ............I.[.
0bc0: 67 83 7d 83 67 83 93 0d 0a 2f 2f 0d 0a 2f 2f 20  g.}.g....//..// 
0bd0: 2f 2a 20 82 aa 8f 6f 82 bd 82 e7 82 bb 82 cc 8c  /* ...o.........
0be0: e3 82 eb 82 cd 83 52 83 81 83 93 83 67 82 c5 20  ......R.....g.. 
0bf0: 2a 2f 20 82 aa 8f 6f 82 bd 82 e7 82 bb 82 cc 8c  */ ...o.........
0c00: e3 82 eb 82 cd 83 6d 81 5b 83 7d 83 8b 83 5d 81  ......m.[.}...].
0c10: 5b 83 93 0d 0a 2f 2f 20 81 63 82 c6 82 a2 82 a4  [....// .c......
0c20: 92 50 8f 83 82 c8 8b 4b 91 a5 82 c5 82 cd 8f e3  .P.....K........
0c30: 8e e8 82 ad 8d 73 82 a9 82 c8 82 a2 81 42 97 e1  .....s.......B..
0c40: 82 a6 82 ce 20 73 74 72 22 2f 2a 22 73 74 72 20  .... str"/*"str 
0c50: 82 c8 82 f1 82 c4 82 e0 82 cc 82 aa 0d 0a 2f 2f  ..............//
0c60: 20 8f 6f 8c bb 82 b5 82 bd 8f ea 8d 87 82 c9 8d   .o.............
0c70: a2 82 c1 82 c4 82 b5 82 dc 82 a4 81 42 82 bb 82  ............B...
0c80: b1 82 c5 81 41 0d 0a 2f 2f 20 20 20 81 45 95 81  ....A..//   .E..
0c90: 92 ca 82 cc 83 65 83 4c 83 58 83 67 0d 0a 2f 2f  .....e.L.X.g..//
0ca0: 20 20 20 81 45 83 75 83 8d 83 62 83 4e 83 52 83     .E.u...b.N.R.
0cb0: 81 83 93 83 67 82 cc 92 86 0d 0a 2f 2f 20 20 20  ....g......//   
0cc0: 81 45 8d 73 83 52 83 81 83 93 83 67 82 cc 92 86  .E.s.R.....g....
0cd0: 0d 0a 2f 2f 20 20 20 81 45 88 ea 8f 64 88 f8 97  ..//   .E...d...
0ce0: 70 95 84 82 cc 92 86 0d 0a 2f 2f 20 20 20 81 45  p........//   .E
0cf0: 93 f1 8f 64 88 f8 97 70 95 84 82 cc 92 86 0d 0a  ...d...p........
0d00: 2f 2f 20 82 cc 82 54 8e ed 97 de 82 cc 8f f3 91  // ...T.........
0d10: d4 82 c9 95 aa 82 af 82 c4 81 41 82 bb 82 ea 82  ..........A.....
0d20: bc 82 ea 82 cc 8f ea 8d 87 82 c9 82 c2 82 a2 82  ................
0d30: c4 81 41 82 c7 82 cc 8b 4c 8d 86 82 aa 8f 6f 82  ..A.....L.....o.
0d40: bd 82 e7 0d 0a 2f 2f 20 8e 9f 82 c9 82 c7 82 cc  .....// ........
0d50: 8f f3 91 d4 82 c9 88 da 82 e9 82 cc 82 a9 81 63  ...............c
0d60: 82 f0 8f 88 97 9d 82 b7 82 e9 95 4b 97 76 82 aa  ...........K.v..
0d70: 82 a0 82 e9 81 42 82 bb 82 cc 8f f3 91 d4 95 cf  .....B..........
0d80: 89 bb 82 cc 8b 4b 91 a5 82 f0 0d 0a 2f 2f 20 35  .....K......// 5
0d90: 78 35 82 cc 82 51 8e 9f 8c b3 94 7a 97 f1 82 c5  x5...Q.....z....
0da0: 97 5e 82 a6 82 c4 8a c7 97 9d 82 b7 82 e9 81 42  .^.............B
0db0: 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..//------------
0dc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0dd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d  -------------...
0e00: 0a 65 6e 75 6d 20 43 6f 6d 6d 65 6e 74 44 46 41  .enum CommentDFA
0e10: 53 79 6d 62 6f 6c 7b 20 73 43 42 2c 20 73 43 45  Symbol{ sCB, sCE
0e20: 2c 20 73 4c 42 2c 20 73 51 31 2c 20 73 51 32 2c  , sLB, sQ1, sQ2,
0e30: 20 73 58 58 58 20 7d 3b 0d 0a 73 74 72 75 63 74   sXXX };..struct
0e40: 20 43 6f 6d 6d 65 6e 74 44 46 41 0d 0a 7b 0d 0a   CommentDFA..{..
0e50: 09 2f 2f 20 3c 8f f3 91 d4 3e 0d 0a 09 2f 2f 20  .// <....>...// 
0e60: 8d c5 89 ba 88 ca 62 69 74 82 aa 81 41 8c bb 8d  ......bit...A...
0e70: dd 83 52 83 81 83 93 83 67 93 e0 82 a9 82 c7 82  ..R.....g.......
0e80: a4 82 a9 82 cc 83 74 83 89 83 4f 82 c9 82 c8 82  ......t...O.....
0e90: e8 82 dc 82 b7 81 42 0d 0a 09 2f 2f 20 83 75 83  ......B...// .u.
0ea0: 8d 83 62 83 4e 83 52 83 81 83 93 83 67 92 86 82  ..b.N.R.....g...
0eb0: a9 82 c7 82 a4 82 a9 82 cd 20 28 73 74 61 74 65  ......... (state
0ec0: 3e 3e 31 29 26 28 73 74 61 74 65 29 20 82 c5 81  >>1)&(state) ...
0ed0: 42 0d 0a 09 2f 2f 20 20 20 30 30 30 3a 20 6e 6f  B...//   000: no
0ee0: 72 6d 61 6c 20 74 65 78 74 20 20 20 20 20 20 20  rmal text       
0ef0: 20 30 31 31 3a 20 69 6e 20 42 6c 6f 63 6b 43 6f   011: in BlockCo
0f00: 6d 6d 65 6e 74 0d 0a 09 2f 2f 20 20 20 30 30 31  mment...//   001
0f10: 3a 20 69 6e 20 4c 69 6e 65 43 6f 6d 6d 65 6e 74  : in LineComment
0f20: 20 20 20 20 20 31 30 30 3a 20 69 6e 20 51 75 6f       100: in Quo
0f30: 74 65 32 0d 0a 09 2f 2f 20 20 20 30 31 30 3a 20  te2...//   010: 
0f40: 69 6e 20 51 75 6f 74 65 31 0d 0a 09 2f 2f 0d 0a  in Quote1...//..
0f50: 09 2f 2f 20 3c 83 56 83 93 83 7b 83 8b 3e 0d 0a  .// <.V...{..>..
0f60: 09 2f 2f 20 43 2b 2b 82 c5 8c be 82 a4 82 c6 89  .// C++.........
0f70: ba 82 cc 92 ca 82 e8 0d 0a 09 2f 2f 20 92 6c 82  ..........// .l.
0f80: cd 54 6f 6b 65 6e 54 79 70 65 83 74 83 89 83 4f  .TokenType.t...O
0f90: 82 c6 83 56 83 93 83 4e 83 8d 82 b7 82 e9 82 e6  ...V...N........
0fa0: 82 a4 82 c9 82 c8 82 c1 82 c4 82 dc 82 b7 81 42  ...............B
0fb0: 0d 0a 09 2f 2f 20 20 20 30 30 30 3a 20 43 45 20  ...//   000: CE 
0fc0: 2a 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  */              
0fd0: 30 31 31 3a 20 51 31 20 27 0d 0a 09 2f 2f 20 20  011: Q1 '...//  
0fe0: 20 30 30 31 3a 20 43 42 20 2f 2a 20 20 20 20 20   001: CB /*     
0ff0: 20 20 20 20 20 20 20 20 20 31 30 30 3a 20 51 32           100: Q2
1000: 20 22 0d 0a 09 2f 2f 20 20 20 30 31 30 3a 20 4c   "...//   010: L
1010: 42 20 2f 2f 0d 0a 0d 0a 09 2f 2f 20 8f 89 8a fa  B //.....// ....
1020: 8f f3 91 d4 82 f0 8e 77 92 e8 81 42 83 52 83 81  .......w...B.R..
1030: 83 93 83 67 93 e0 82 a9 83 52 83 81 83 93 83 67  ...g.....R.....g
1040: 8a 4f 82 a9 0d 0a 09 43 6f 6d 6d 65 6e 74 44 46  .O.....CommentDF
1050: 41 28 20 62 6f 6f 6c 20 69 6e 43 6f 6d 6d 65 6e  A( bool inCommen
1060: 74 20 29 0d 0a 09 09 3a 20 73 74 61 74 65 28 20  t )....: state( 
1070: 69 6e 43 6f 6d 6d 65 6e 74 20 3f 20 33 20 3a 20  inComment ? 3 : 
1080: 30 20 29 20 7b 7d 0d 0a 0d 0a 09 2f 2f 20 93 fc  0 ) {}.....// ..
1090: 97 cd 95 84 8d 86 82 f0 97 5e 82 a6 82 c4 8f f3  .........^......
10a0: 91 d4 91 4a 88 da 0d 0a 09 76 6f 69 64 20 74 72  ...J.....void tr
10b0: 61 6e 73 69 74 28 20 69 6e 74 20 73 79 6d 20 29  ansit( int sym )
10c0: 20 0d 0a 09 09 7b 20 73 74 61 74 65 20 3d 20 74   ....{ state = t
10d0: 72 5f 74 61 62 6c 65 5b 73 74 61 74 65 5d 5b 73  r_table[state][s
10e0: 79 6d 5d 3b 20 7d 0d 0a 0d 0a 09 2f 2f 20 8c bb  ym]; }.....// ..
10f0: 8d dd 82 cc 8f f3 91 d4 0d 0a 09 69 6e 74 20 73  ...........int s
1100: 74 61 74 65 3b 0d 0a 0d 0a 09 2f 2f 20 8f f3 91  tate;.....// ...
1110: d4 91 4a 88 da 83 65 81 5b 83 75 83 8b 0d 0a 09  ..J...e.[.u.....
1120: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 69 6e 74  static const int
1130: 20 74 72 5f 74 61 62 6c 65 5b 35 5d 5b 35 5d 3b   tr_table[5][5];
1140: 0d 0a 7d 3b 0d 0a 0d 0a 63 6f 6e 73 74 20 69 6e  ..};....const in
1150: 74 20 43 6f 6d 6d 65 6e 74 44 46 41 3a 3a 74 72  t CommentDFA::tr
1160: 5f 74 61 62 6c 65 5b 35 5d 5b 35 5d 20 3d 20 7b  _table[5][5] = {
1170: 0d 0a 09 7b 30 2c 33 2c 31 2c 32 2c 34 7d 2c 0d  ...{0,3,1,2,4},.
1180: 0a 09 7b 31 2c 31 2c 31 2c 31 2c 31 7d 2c 0d 0a  ..{1,1,1,1,1},..
1190: 09 7b 32 2c 32 2c 32 2c 30 2c 32 7d 2c 0d 0a 09  .{2,2,2,0,2},...
11a0: 7b 30 2c 33 2c 33 2c 33 2c 33 7d 2c 0d 0a 09 7b  {0,3,3,3,3},...{
11b0: 34 2c 34 2c 34 2c 34 2c 30 7d 2c 0d 0a 7d 3b 0d  4,4,4,4,0},..};.
11c0: 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d  .......//-------
11d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1210: 2d 2d 0d 0a 2f 2f 20 92 50 8f 83 82 c8 81 41 83  --..// .P.....A.
1220: 4c 81 5b 83 8f 81 5b 83 68 8a 69 94 5b 8d 5c 91  L.[...[.h.i.[.\.
1230: a2 91 cc 81 42 0d 0a 2f 2f 20 43 68 61 69 6e 48  ....B..// ChainH
1240: 61 73 68 82 cc 97 76 91 66 82 c9 82 b7 82 e9 82  ash...v.f.......
1250: bd 82 df 6e 65 78 74 83 7c 83 43 83 93 83 5e 82  ...next.|.C...^.
1260: aa 82 c2 82 af 82 c4 82 a0 82 e8 82 dc 82 b7 81  ................
1270: 42 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  B..//-----------
1280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
12a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
12b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
12c0: 0d 0a 73 74 72 75 63 74 20 4b 65 79 77 6f 72 64  ..struct Keyword
12d0: 20 3a 20 70 75 62 6c 69 63 20 4f 62 6a 65 63 74   : public Object
12e0: 0d 0a 7b 0d 0a 09 75 6e 69 63 6f 64 65 2a 20 20  ..{...unicode*  
12f0: 20 20 73 74 72 3b 0d 0a 09 63 6f 6e 73 74 20 75    str;...const u
1300: 6c 6f 6e 67 20 6c 65 6e 3b 0d 0a 09 4b 65 79 77  long len;...Keyw
1310: 6f 72 64 2a 20 20 20 6e 65 78 74 3b 0d 0a 0d 0a  ord*   next;....
1320: 09 4b 65 79 77 6f 72 64 28 20 63 6f 6e 73 74 20  .Keyword( const 
1330: 75 6e 69 63 6f 64 65 2a 20 73 2c 20 75 6c 6f 6e  unicode* s, ulon
1340: 67 20 6c 20 29 0d 0a 09 09 3a 20 73 74 72 28 20  g l )....: str( 
1350: 6e 65 77 20 75 6e 69 63 6f 64 65 5b 6c 2b 31 5d  new unicode[l+1]
1360: 20 29 0d 0a 09 09 2c 20 6c 65 6e 28 20 6c 20 29   )...., len( l )
1370: 0d 0a 09 09 2c 20 6e 65 78 74 28 20 4e 55 4c 4c  ...., next( NULL
1380: 20 29 0d 0a 09 09 7b 20 6d 65 6d 6d 6f 76 65 28   )....{ memmove(
1390: 20 73 74 72 2c 20 73 2c 20 6c 2a 73 69 7a 65 6f   str, s, l*sizeo
13a0: 66 28 75 6e 69 63 6f 64 65 29 20 29 3b 20 7d 0d  f(unicode) ); }.
13b0: 0a 0d 0a 09 7e 4b 65 79 77 6f 72 64 28 29 0d 0a  ....~Keyword()..
13c0: 09 09 7b 20 64 65 6c 65 74 65 20 5b 5d 20 73 74  ..{ delete [] st
13d0: 72 3b 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a  r; }..};........
13e0: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
13f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20  -----------..// 
1430: 83 54 83 7c 81 5b 83 67 8a d6 90 94 81 42 55 6e  .T.|.[.g.....BUn
1440: 69 63 6f 64 65 83 65 83 4c 83 58 83 67 93 af 8e  icode.e.L.X.g...
1450: 6d 82 cc 94 e4 8a 72 0d 0a 2f 2f 2d 2d 2d 2d 2d  m.....r..//-----
1460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14a0: 2d 2d 2d 2d 0d 0a 0d 0a 73 74 61 74 69 63 20 62  ----....static b
14b0: 6f 6f 6c 20 63 6f 6d 70 61 72 65 5f 73 28 63 6f  ool compare_s(co
14c0: 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 61 2c 63  nst unicode* a,c
14d0: 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 62 2c  onst unicode* b,
14e0: 75 6c 6f 6e 67 20 6c 29 0d 0a 7b 0d 0a 09 2f 2f  ulong l)..{...//
14f0: 20 91 e5 95 b6 8e 9a 8f ac 95 b6 8e 9a 82 f0 8b   ...............
1500: e6 95 ca 0d 0a 09 77 68 69 6c 65 28 20 6c 2d 2d  ......while( l--
1510: 20 29 0d 0a 09 09 69 66 28 20 2a 61 2b 2b 20 21   )....if( *a++ !
1520: 3d 20 2a 62 2b 2b 20 29 0d 0a 09 09 09 72 65 74  = *b++ ).....ret
1530: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 09 72 65 74  urn false;...ret
1540: 75 72 6e 20 74 72 75 65 3b 0d 0a 7d 0d 0a 0d 0a  urn true;..}....
1550: 73 74 61 74 69 63 20 62 6f 6f 6c 20 63 6f 6d 70  static bool comp
1560: 61 72 65 5f 69 28 63 6f 6e 73 74 20 75 6e 69 63  are_i(const unic
1570: 6f 64 65 2a 20 61 2c 63 6f 6e 73 74 20 75 6e 69  ode* a,const uni
1580: 63 6f 64 65 2a 20 62 2c 75 6c 6f 6e 67 20 6c 29  code* b,ulong l)
1590: 0d 0a 7b 0d 0a 09 2f 2f 20 91 e5 95 b6 8e 9a 8f  ..{...// .......
15a0: ac 95 b6 8e 9a 82 f0 8b e6 95 ca 82 b5 82 c8 82  ................
15b0: a2 81 69 8e 47 81 6a 0d 0a 09 77 68 69 6c 65 28  ..i.G.j...while(
15c0: 20 6c 2d 2d 20 29 0d 0a 09 09 69 66 28 20 28 28   l-- )....if( ((
15d0: 2a 61 2b 2b 29 20 5e 20 28 2a 62 2b 2b 29 29 20  *a++) ^ (*b++)) 
15e0: 26 20 30 78 64 66 20 29 0d 0a 09 09 09 72 65 74  & 0xdf ).....ret
15f0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 09 72 65 74  urn false;...ret
1600: 75 72 6e 20 74 72 75 65 3b 0d 0a 7d 0d 0a 0d 0a  urn true;..}....
1610: 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
1620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
1660: 0a 2f 2f 20 97 5e 82 a6 82 e7 82 ea 82 bd 8b 4c  .// .^.........L
1670: 8d 86 95 b6 8e 9a 97 f1 82 a9 82 e7 81 41 83 52  .............A.R
1680: 83 81 83 93 83 67 8a 4a 8e 6e 93 99 82 cc 88 d3  .....g.J.n......
1690: 96 a1 82 cc 82 a0 82 e9 83 67 81 5b 83 4e 83 93  .........g.[.N..
16a0: 82 f0 0d 0a 2f 2f 20 90 d8 82 e8 8f 6f 82 b5 82  ....// .....o...
16b0: c4 82 ad 82 e9 82 bd 82 df 82 cc 8d 5c 91 a2 81  ............\...
16c0: 42 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  B..//-----------
16d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
1710: 0d 0a 63 6c 61 73 73 20 54 61 67 4d 61 70 0d 0a  ..class TagMap..
1720: 7b 0d 0a 09 4b 65 79 77 6f 72 64 2a 20 74 61 67  {...Keyword* tag
1730: 5f 5b 33 5d 3b 20 2f 2f 20 30 3a 43 45 20 31 3a  _[3]; // 0:CE 1:
1740: 43 42 20 32 3a 4c 42 0d 0a 09 62 6f 6f 6c 20 65  CB 2:LB...bool e
1750: 73 63 5f 2c 20 71 31 5f 2c 20 71 32 5f 2c 20 6d  sc_, q1_, q2_, m
1760: 61 70 5f 5b 31 32 38 5d 3b 0d 0a 0d 0a 70 75 62  ap_[128];....pub
1770: 6c 69 63 3a 0d 0a 0d 0a 09 54 61 67 4d 61 70 28  lic:.....TagMap(
1780: 20 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20   const unicode* 
1790: 63 62 2c 20 75 6c 6f 6e 67 20 63 62 6c 65 6e 2c  cb, ulong cblen,
17a0: 0d 0a 09 09 20 20 20 20 63 6f 6e 73 74 20 75 6e  ....    const un
17b0: 69 63 6f 64 65 2a 20 63 65 2c 20 75 6c 6f 6e 67  icode* ce, ulong
17c0: 20 63 65 6c 65 6e 2c 0d 0a 09 09 20 20 20 20 63   celen,....    c
17d0: 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 6c 62  onst unicode* lb
17e0: 2c 20 75 6c 6f 6e 67 20 6c 62 6c 65 6e 2c 0d 0a  , ulong lblen,..
17f0: 09 09 20 20 20 20 62 6f 6f 6c 20 71 31 2c 20 62  ..    bool q1, b
1800: 6f 6f 6c 20 71 32 2c 20 62 6f 6f 6c 20 65 73 63  ool q2, bool esc
1810: 20 29 0d 0a 09 09 3a 20 71 31 5f 20 28 20 71 31   )....: q1_ ( q1
1820: 20 29 0d 0a 09 09 2c 20 71 32 5f 20 28 20 71 32   )...., q2_ ( q2
1830: 20 29 0d 0a 09 09 2c 20 65 73 63 5f 28 20 65 73   )...., esc_( es
1840: 63 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 27 2f  c )...{....// '/
1850: 27 20 82 c5 8e 6e 82 dc 82 e9 8b 4c 8d 86 82 cd  ' ...n.....L....
1860: 8e 67 82 ed 82 ea 82 c4 82 a2 82 e9 82 a9 81 63  .g.............c
1870: 81 48 0d 0a 09 09 2f 2f 20 82 dd 82 bd 82 a2 82  .H....// .......
1880: c8 81 41 82 50 95 b6 8e 9a 96 da 82 cc 82 dd 82  ..A.P...........
1890: cc 83 60 83 46 83 62 83 4e 82 c9 8e 67 82 a4 95  ..`.F.b.N...g...
18a0: 5c 82 f0 8d ec 90 ac 0d 0a 09 09 74 61 67 5f 5b  \..........tag_[
18b0: 30 5d 20 3d 20 74 61 67 5f 5b 31 5d 20 3d 20 74  0] = tag_[1] = t
18c0: 61 67 5f 5b 32 5d 20 3d 20 4e 55 4c 4c 3b 0d 0a  ag_[2] = NULL;..
18d0: 09 09 6d 65 6d 30 30 28 20 6d 61 70 5f 2c 20 73  ..mem00( map_, s
18e0: 69 7a 65 6f 66 28 6d 61 70 5f 29 20 29 3b 0d 0a  izeof(map_) );..
18f0: 09 09 6d 61 70 5f 5b 4c 27 5c 27 27 5d 20 3d 20  ..map_[L'\''] = 
1900: 71 31 3b 0d 0a 09 09 6d 61 70 5f 5b 4c 27 5c 22  q1;....map_[L'\"
1910: 27 5d 20 3d 20 71 32 3b 0d 0a 09 09 6d 61 70 5f  '] = q2;....map_
1920: 5b 4c 27 5c 5c 27 5d 20 3d 20 65 73 63 3b 0d 0a  [L'\\'] = esc;..
1930: 09 09 69 66 28 20 63 65 6c 65 6e 21 3d 30 20 29  ..if( celen!=0 )
1940: 7b 20 6d 61 70 5f 5b 2a 63 65 5d 3d 74 72 75 65  { map_[*ce]=true
1950: 3b 20 74 61 67 5f 5b 30 5d 3d 6e 65 77 20 4b 65  ; tag_[0]=new Ke
1960: 79 77 6f 72 64 28 63 65 2c 63 65 6c 65 6e 29 3b  yword(ce,celen);
1970: 20 7d 0d 0a 09 09 69 66 28 20 63 62 6c 65 6e 21   }....if( cblen!
1980: 3d 30 20 29 7b 20 6d 61 70 5f 5b 2a 63 62 5d 3d  =0 ){ map_[*cb]=
1990: 74 72 75 65 3b 20 74 61 67 5f 5b 31 5d 3d 6e 65  true; tag_[1]=ne
19a0: 77 20 4b 65 79 77 6f 72 64 28 63 62 2c 63 62 6c  w Keyword(cb,cbl
19b0: 65 6e 29 3b 20 7d 0d 0a 09 09 69 66 28 20 6c 62  en); }....if( lb
19c0: 6c 65 6e 21 3d 30 20 29 7b 20 6d 61 70 5f 5b 2a  len!=0 ){ map_[*
19d0: 6c 62 5d 3d 74 72 75 65 3b 20 74 61 67 5f 5b 32  lb]=true; tag_[2
19e0: 5d 3d 6e 65 77 20 4b 65 79 77 6f 72 64 28 6c 62  ]=new Keyword(lb
19f0: 2c 6c 62 6c 65 6e 29 3b 20 7d 0d 0a 09 7d 0d 0a  ,lblen); }...}..
1a00: 0d 0a 09 7e 54 61 67 4d 61 70 28 29 0d 0a 09 7b  ...~TagMap()...{
1a10: 0d 0a 09 09 2f 2f 20 83 4c 81 5b 83 8f 81 5b 83  ....// .L.[...[.
1a20: 68 89 f0 95 fa 0d 0a 09 09 64 65 6c 65 74 65 20  h........delete 
1a30: 74 61 67 5f 5b 30 5d 3b 0d 0a 09 09 64 65 6c 65  tag_[0];....dele
1a40: 74 65 20 74 61 67 5f 5b 31 5d 3b 0d 0a 09 09 64  te tag_[1];....d
1a50: 65 6c 65 74 65 20 74 61 67 5f 5b 32 5d 3b 0d 0a  elete tag_[2];..
1a60: 09 7d 0d 0a 0d 0a 09 62 6f 6f 6c 20 64 6f 65 73  .}.....bool does
1a70: 5f 65 73 63 28 29 0d 0a 09 7b 0d 0a 09 09 2f 2f  _esc()...{....//
1a80: 20 5c 20 82 c9 82 e6 82 e9 83 47 83 58 83 50 81   \ .......G.X.P.
1a90: 5b 83 76 82 f0 82 b7 82 e9 82 a9 82 c7 82 a4 82  [.v.............
1aa0: a9 0d 0a 09 09 72 65 74 75 72 6e 20 65 73 63 5f  .....return esc_
1ab0: 3b 0d 0a 09 7d 0d 0a 0d 0a 09 75 6c 6f 6e 67 20  ;...}.....ulong 
1ac0: 53 79 6d 62 6f 6c 4c 6f 6f 70 28 0d 0a 09 09 63  SymbolLoop(....c
1ad0: 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 73 74  onst unicode* st
1ae0: 72 2c 20 75 6c 6f 6e 67 20 6c 65 6e 2c 20 75 6c  r, ulong len, ul
1af0: 6f 6e 67 26 20 6d 6c 65 6e 2c 20 69 6e 74 26 20  ong& mlen, int& 
1b00: 73 79 6d 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20  sym )...{....// 
1b10: 97 4c 88 d3 96 a1 82 c8 8b 4c 8d 86 82 c9 83 7d  .L.......L.....}
1b20: 83 62 83 60 82 b7 82 e9 82 dc 82 c5 83 8b 81 5b  .b.`...........[
1b30: 83 76 0d 0a 09 09 2f 2f 20 95 d4 92 6c 82 c9 81  .v....// ...l...
1b40: 41 83 7d 83 62 83 60 82 b7 82 e9 82 dc 82 c5 82  A.}.b.`.........
1b50: c9 94 f2 82 ce 82 b5 82 bd 95 b6 8e 9a 90 94 81  ................
1b60: 41 0d 0a 09 09 2f 2f 20 6d 6c 65 6e 2c 73 79 6d  A....// mlen,sym
1b70: 82 c9 81 41 83 7d 83 62 83 60 82 b5 82 bd 8b 4c  ...A.}.b.`.....L
1b80: 8d 86 82 cc 8f ee 95 f1 82 f0 95 d4 82 b7 0d 0a  ................
1b90: 0d 0a 09 09 69 6e 74 20 69 3b 0d 0a 09 09 75 6c  ....int i;....ul
1ba0: 6f 6e 67 20 61 6e 73 3d 30 3b 0d 0a 09 09 66 6f  ong ans=0;....fo
1bb0: 72 28 20 73 79 6d 3d 73 58 58 58 2c 20 6d 6c 65  r( sym=sXXX, mle
1bc0: 6e 3d 31 3b 20 61 6e 73 3c 6c 65 6e 3b 20 2b 2b  n=1; ans<len; ++
1bd0: 61 6e 73 20 29 0d 0a 09 09 09 69 66 28 20 6d 61  ans ).....if( ma
1be0: 70 5f 5b 73 74 72 5b 61 6e 73 5d 5d 20 29 0d 0a  p_[str[ans]] )..
1bf0: 09 09 09 7b 0d 0a 09 09 09 09 66 6f 72 28 20 69  ...{......for( i
1c00: 3d 32 3b 20 69 3e 3d 30 3b 20 2d 2d 69 20 29 0d  =2; i>=0; --i ).
1c10: 0a 09 09 09 09 09 69 66 28 20 74 61 67 5f 5b 69  ......if( tag_[i
1c20: 5d 21 3d 4e 55 4c 4c 0d 0a 09 09 09 09 09 20 26  ]!=NULL....... &
1c30: 26 20 74 61 67 5f 5b 69 5d 2d 3e 6c 65 6e 20 3c  & tag_[i]->len <
1c40: 3d 20 6c 65 6e 2d 61 6e 73 0d 0a 09 09 09 09 09  = len-ans.......
1c50: 20 26 26 20 63 6f 6d 70 61 72 65 5f 73 28 0d 0a   && compare_s(..
1c60: 09 09 09 09 09 09 74 61 67 5f 5b 69 5d 2d 3e 73  ......tag_[i]->s
1c70: 74 72 2c 20 73 74 72 2b 61 6e 73 2c 20 74 61 67  tr, str+ans, tag
1c80: 5f 5b 69 5d 2d 3e 6c 65 6e 20 29 20 29 0d 0a 09  _[i]->len ) )...
1c90: 09 09 09 09 7b 0d 0a 09 09 09 09 09 09 73 79 6d  ....{........sym
1ca0: 20 20 3d 20 69 3b 0d 0a 09 09 09 09 09 09 6d 6c    = i;........ml
1cb0: 65 6e 20 3d 20 74 61 67 5f 5b 69 5d 2d 3e 6c 65  en = tag_[i]->le
1cc0: 6e 3b 0d 0a 09 09 09 09 09 09 67 6f 74 6f 20 73  n;........goto s
1cd0: 79 6d 62 6f 6c 66 6f 75 6e 64 3b 0d 0a 09 09 09  ymbolfound;.....
1ce0: 09 09 7d 0d 0a 09 09 09 09 69 66 28 20 73 74 72  ..}......if( str
1cf0: 5b 61 6e 73 5d 20 3d 3d 20 4c 27 5c 27 27 20 29  [ans] == L'\'' )
1d00: 20 2f 2f 20 88 ea 8f 64 88 f8 97 70 95 84 0d 0a   // ...d...p....
1d10: 09 09 09 09 7b 0d 0a 09 09 09 09 09 69 66 28 20  ....{.......if( 
1d20: 71 31 5f 20 29 0d 0a 09 09 09 09 09 7b 0d 0a 09  q1_ ).......{...
1d30: 09 09 09 09 09 73 79 6d 20 20 3d 20 73 51 31 3b  .....sym  = sQ1;
1d40: 0d 0a 09 09 09 09 09 09 67 6f 74 6f 20 73 79 6d  ........goto sym
1d50: 62 6f 6c 66 6f 75 6e 64 3b 0d 0a 09 09 09 09 09  bolfound;.......
1d60: 7d 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 09 65 6c  }......}......el
1d70: 73 65 20 69 66 28 20 73 74 72 5b 61 6e 73 5d 20  se if( str[ans] 
1d80: 3d 3d 20 4c 27 5c 22 27 20 29 20 2f 2f 20 93 f1  == L'\"' ) // ..
1d90: 8f 64 88 f8 97 70 95 84 0d 0a 09 09 09 09 7b 0d  .d...p........{.
1da0: 0a 09 09 09 09 09 69 66 28 20 71 32 5f 20 29 0d  ......if( q2_ ).
1db0: 0a 09 09 09 09 09 7b 0d 0a 09 09 09 09 09 09 73  ......{........s
1dc0: 79 6d 20 20 3d 20 73 51 32 3b 0d 0a 09 09 09 09  ym  = sQ2;......
1dd0: 09 09 67 6f 74 6f 20 73 79 6d 62 6f 6c 66 6f 75  ..goto symbolfou
1de0: 6e 64 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09  nd;.......}.....
1df0: 09 7d 0d 0a 09 09 09 09 65 6c 73 65 20 69 66 28  .}......else if(
1e00: 20 73 74 72 5b 61 6e 73 5d 20 3d 3d 20 4c 27 5c   str[ans] == L'\
1e10: 5c 27 20 29 20 2f 2f 20 5c 20 82 cc 8c e3 82 cc  \' ) // \ ......
1e20: 95 b6 8e 9a 82 cd 53 6b 69 70 0d 0a 09 09 09 09  ......Skip......
1e30: 7b 0d 0a 09 09 09 09 09 69 66 28 20 65 73 63 5f  {.......if( esc_
1e40: 20 26 26 20 61 6e 73 2b 31 3c 6c 65 6e 20 29 0d   && ans+1<len ).
1e50: 0a 09 09 09 09 09 09 2b 2b 61 6e 73 3b 0d 0a 09  .......++ans;...
1e60: 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 73  ...}.....}.....s
1e70: 79 6d 62 6f 6c 66 6f 75 6e 64 3a 0d 0a 09 09 72  ymbolfound:....r
1e80: 65 74 75 72 6e 20 61 6e 73 3b 0d 0a 09 7d 0d 0a  eturn ans;...}..
1e90: 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d  };........//----
1ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ee0: 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 97 5e 82 a6 82 e7  -----..// .^....
1ef0: 82 ea 82 bd 95 b6 8e 9a 97 f1 82 aa 83 4c 81 5b  .............L.[
1f00: 83 8f 81 5b 83 68 82 a9 82 c7 82 a4 82 a9 8d 82  ...[.h..........
1f10: 91 ac 94 bb 92 e8 82 b7 82 e9 82 bd 82 df 82 cc  ................
1f20: 83 6e 83 62 83 56 83 85 95 5c 0d 0a 2f 2f 2d 2d  .n.b.V...\..//--
1f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f70: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 63 6c 61 73 73  -------....class
1f80: 20 4b 65 79 77 6f 72 64 4d 61 70 0d 0a 7b 0d 0a   KeywordMap..{..
1f90: 09 4b 65 79 77 6f 72 64 2a 20 20 20 20 20 20 20  .Keyword*       
1fa0: 20 20 20 62 61 63 6b 65 74 5f 5b 34 30 39 36 5d     backet_[4096]
1fb0: 3b 0d 0a 09 73 74 6f 72 61 67 65 3c 4b 65 79 77  ;...storage<Keyw
1fc0: 6f 72 64 2a 3e 20 64 75 73 74 62 6f 78 5f 3b 0d  ord*> dustbox_;.
1fd0: 0a 09 62 6f 6f 6c 20 28 2a 63 6f 6d 70 61 72 65  ..bool (*compare
1fe0: 5f 29 28 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65  _)(const unicode
1ff0: 2a 2c 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a  *,const unicode*
2000: 2c 75 6c 6f 6e 67 29 3b 0d 0a 0d 0a 70 75 62 6c  ,ulong);....publ
2010: 69 63 3a 0d 0a 0d 0a 09 4b 65 79 77 6f 72 64 4d  ic:.....KeywordM
2020: 61 70 28 20 62 6f 6f 6c 20 62 43 61 73 65 53 65  ap( bool bCaseSe
2030: 6e 73 69 74 69 76 65 20 29 0d 0a 09 09 3a 20 63  nsitive )....: c
2040: 6f 6d 70 61 72 65 5f 28 20 62 43 61 73 65 53 65  ompare_( bCaseSe
2050: 6e 73 69 74 69 76 65 20 3f 20 63 6f 6d 70 61 72  nsitive ? compar
2060: 65 5f 73 20 3a 20 63 6f 6d 70 61 72 65 5f 69 20  e_s : compare_i 
2070: 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 83 6e 83 62  )...{....// .n.b
2080: 83 56 83 85 95 5c 8f 89 8a fa 89 bb 0d 0a 09 09  .V...\..........
2090: 6d 65 6d 30 30 28 20 62 61 63 6b 65 74 5f 2c 20  mem00( backet_, 
20a0: 73 69 7a 65 6f 66 28 62 61 63 6b 65 74 5f 29 20  sizeof(backet_) 
20b0: 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 7e 4b 65 79 77  );...}.....~Keyw
20c0: 6f 72 64 4d 61 70 28 29 0d 0a 09 7b 0d 0a 09 09  ordMap()...{....
20d0: 2f 2f 20 89 f0 95 fa 0d 0a 09 09 66 6f 72 28 20  // ........for( 
20e0: 75 6c 6f 6e 67 20 69 3d 30 3b 20 69 3c 64 75 73  ulong i=0; i<dus
20f0: 74 62 6f 78 5f 2e 73 69 7a 65 28 29 3b 20 2b 2b  tbox_.size(); ++
2100: 69 20 29 0d 0a 09 09 09 64 65 6c 65 74 65 20 64  i ).....delete d
2110: 75 73 74 62 6f 78 5f 5b 69 5d 3b 0d 0a 09 7d 0d  ustbox_[i];...}.
2120: 0a 0d 0a 09 76 6f 69 64 20 41 64 64 4b 65 79 77  ....void AddKeyw
2130: 6f 72 64 28 20 63 6f 6e 73 74 20 75 6e 69 63 6f  ord( const unico
2140: 64 65 2a 20 73 74 72 2c 20 75 6c 6f 6e 67 20 6c  de* str, ulong l
2150: 65 6e 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 83  en )...{....// .
2160: 66 81 5b 83 5e 93 6f 98 5e 0d 0a 09 09 4b 65 79  f.[.^.o.^....Key
2170: 77 6f 72 64 2a 20 78 20 3d 20 6e 65 77 20 4b 65  word* x = new Ke
2180: 79 77 6f 72 64 28 73 74 72 2c 6c 65 6e 29 3b 0d  yword(str,len);.
2190: 0a 09 09 69 6e 74 20 20 20 20 20 20 68 20 3d 20  ...int      h = 
21a0: 68 61 73 68 28 73 74 72 2c 6c 65 6e 29 3b 0d 0a  hash(str,len);..
21b0: 0d 0a 09 09 69 66 28 20 62 61 63 6b 65 74 5f 5b  ....if( backet_[
21c0: 68 5d 20 3d 3d 20 4e 55 4c 4c 20 29 0d 0a 09 09  h] == NULL )....
21d0: 7b 0d 0a 09 09 09 2f 2f 20 83 6e 83 62 83 56 83  {.....// .n.b.V.
21e0: 85 83 65 81 5b 83 75 83 8b 82 aa 8b f3 82 cc 8f  ..e.[.u.........
21f0: ea 8d 87 0d 0a 09 09 09 62 61 63 6b 65 74 5f 5b  ........backet_[
2200: 68 5d 20 3d 20 78 3b 0d 0a 09 09 7d 0d 0a 09 09  h] = x;....}....
2210: 65 6c 73 65 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f  else....{.....//
2220: 20 83 60 83 46 83 43 83 93 96 96 94 f6 82 c9 8c   .`.F.C.........
2230: 71 82 ae 8f ea 8d 87 0d 0a 09 09 09 4b 65 79 77  q...........Keyw
2240: 6f 72 64 20 2a 71 3d 62 61 63 6b 65 74 5f 5b 68  ord *q=backet_[h
2250: 5d 2c 2a 70 3d 62 61 63 6b 65 74 5f 5b 68 5d 2d  ],*p=backet_[h]-
2260: 3e 6e 65 78 74 3b 0d 0a 09 09 09 77 68 69 6c 65  >next;.....while
2270: 28 20 70 21 3d 4e 55 4c 4c 20 29 0d 0a 09 09 09  ( p!=NULL ).....
2280: 09 71 3d 70 2c 20 70 3d 70 2d 3e 6e 65 78 74 3b  .q=p, p=p->next;
2290: 0d 0a 09 09 09 71 2d 3e 6e 65 78 74 20 3d 20 78  .....q->next = x
22a0: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 83  ;....}......// .
22b0: 66 81 5b 83 5e 83 4e 83 8a 83 41 97 70 82 cc 83  f.[.^.N...A.p...
22c0: 8a 83 58 83 67 82 c9 82 e0 93 fc 82 ea 82 c4 82  ..X.g...........
22d0: a8 82 ad 0d 0a 09 09 64 75 73 74 62 6f 78 5f 2e  .......dustbox_.
22e0: 41 64 64 28 78 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09  Add(x);...}.....
22f0: 75 6c 6f 6e 67 20 69 73 4b 65 79 77 6f 72 64 28  ulong isKeyword(
2300: 20 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20   const unicode* 
2310: 73 74 72 2c 20 75 6c 6f 6e 67 20 6c 65 6e 20 29  str, ulong len )
2320: 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 93 6f 98 5e 82  ...{....// .o.^.
2330: b3 82 ea 82 c4 82 a2 82 e9 83 4c 81 5b 83 8f 81  ..........L.[...
2340: 5b 83 68 82 c6 88 ea 92 76 82 b7 82 e9 82 a9 81  [.h.....v.......
2350: 48 0d 0a 09 09 66 6f 72 28 20 4b 65 79 77 6f 72  H....for( Keywor
2360: 64 2a 20 70 3d 62 61 63 6b 65 74 5f 5b 68 61 73  d* p=backet_[has
2370: 68 28 73 74 72 2c 6c 65 6e 29 5d 3b 20 70 21 3d  h(str,len)]; p!=
2380: 4e 55 4c 4c 3b 20 70 3d 70 2d 3e 6e 65 78 74 20  NULL; p=p->next 
2390: 29 0d 0a 09 09 09 69 66 28 20 70 2d 3e 6c 65 6e  ).....if( p->len
23a0: 3d 3d 6c 65 6e 20 26 26 20 63 6f 6d 70 61 72 65  ==len && compare
23b0: 5f 28 20 70 2d 3e 73 74 72 2c 20 73 74 72 2c 20  _( p->str, str, 
23c0: 6c 65 6e 20 29 20 29 0d 0a 09 09 09 09 72 65 74  len ) )......ret
23d0: 75 72 6e 20 32 3b 0d 0a 09 09 72 65 74 75 72 6e  urn 2;....return
23e0: 20 30 3b 0d 0a 09 7d 0d 0a 0d 0a 70 72 69 76 61   0;...}....priva
23f0: 74 65 3a 0d 0a 0d 0a 09 73 74 61 74 69 63 20 69  te:.....static i
2400: 6e 74 20 68 61 73 68 28 20 63 6f 6e 73 74 20 75  nt hash( const u
2410: 6e 69 63 6f 64 65 2a 20 61 2c 20 75 6c 6f 6e 67  nicode* a, ulong
2420: 20 61 6c 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20   al )...{....// 
2430: 31 32 62 69 74 82 c9 92 d7 82 b7 82 df 82 c1 82  12bit...........
2440: bf 82 e1 8e 47 82 c8 83 6e 83 62 83 56 83 85 8a  ....G...n.b.V...
2450: d6 90 94 0d 0a 09 09 2f 2f 20 83 8b 81 5b 83 60  .......// ...[.`
2460: 83 93 95 aa 82 af 82 e9 82 cc 96 ca 93 7c 82 c8  .............|..
2470: 82 cc 82 c5 81 41 91 e5 95 b6 8e 9a 8f ac 95 b6  .....A..........
2480: 8e 9a 82 cd 8f ed 82 c9 8b e6 95 ca 82 b3 82 ea  ................
2490: 82 c8 82 a2 81 42 28 5e 5e 3b 0d 0a 09 09 69 6e  .....B(^^;....in
24a0: 74 20 68 3d 30 2c 69 3d 30 3b 0d 0a 09 09 77 68  t h=0,i=0;....wh
24b0: 69 6c 65 28 20 61 6c 2d 2d 20 29 0d 0a 09 09 7b  ile( al-- )....{
24c0: 0d 0a 09 09 09 68 20 5e 3d 20 28 28 2a 28 61 2b  .....h ^= ((*(a+
24d0: 2b 29 26 30 78 64 66 29 3c 3c 69 29 3b 0d 0a 09  +)&0xdf)<<i);...
24e0: 09 09 69 20 3d 20 28 69 2b 35 29 26 37 3b 0d 0a  ..i = (i+5)&7;..
24f0: 09 09 7d 0d 0a 09 09 72 65 74 75 72 6e 20 68 26  ..}....return h&
2500: 34 30 39 35 3b 0d 0a 09 7d 0d 0a 7d 3b 0d 0a 0d  4095;...}..};...
2510: 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d  .....//---------
2520: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2560: 0d 0a 2f 2f 20 88 c8 8f e3 82 cc 93 b9 8b ef 97  ..// ...........
2570: a7 82 c4 82 c5 82 e0 82 c1 82 c4 81 41 83 65 83  ............A.e.
2580: 4c 83 58 83 67 82 cc 89 f0 90 cd 82 f0 8d 73 82  L.X.g.........s.
2590: a4 50 61 72 73 65 72 0d 0a 2f 2f 2d 2d 2d 2d 2d  .Parser..//-----
25a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
25b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
25c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
25d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
25e0: 2d 2d 2d 2d 0d 0a 7d 0d 0a 0d 0a 63 6c 61 73 73  ----..}....class
25f0: 20 65 64 69 74 77 69 6e 67 3a 3a 64 6f 63 3a 3a   editwing::doc::
2600: 50 61 72 73 65 72 0d 0a 7b 0d 0a 09 4b 65 79 77  Parser..{...Keyw
2610: 6f 72 64 4d 61 70 20 6b 77 64 5f 3b 0d 0a 09 54  ordMap kwd_;...T
2620: 61 67 4d 61 70 20 20 20 20 20 74 61 67 5f 3b 0d  agMap     tag_;.
2630: 0a 0d 0a 70 75 62 6c 69 63 3a 0d 0a 09 2f 2f 20  ...public:...// 
2640: 8f 89 8a fa 89 bb 82 50 0d 0a 09 50 61 72 73 65  .......P...Parse
2650: 72 28 0d 0a 09 09 63 6f 6e 73 74 20 75 6e 69 63  r(....const unic
2660: 6f 64 65 2a 20 63 62 2c 20 75 6c 6f 6e 67 20 63  ode* cb, ulong c
2670: 62 6c 65 6e 2c 0d 0a 09 09 63 6f 6e 73 74 20 75  blen,....const u
2680: 6e 69 63 6f 64 65 2a 20 63 65 2c 20 75 6c 6f 6e  nicode* ce, ulon
2690: 67 20 63 65 6c 65 6e 2c 0d 0a 09 09 63 6f 6e 73  g celen,....cons
26a0: 74 20 75 6e 69 63 6f 64 65 2a 20 6c 62 2c 20 75  t unicode* lb, u
26b0: 6c 6f 6e 67 20 6c 62 6c 65 6e 2c 0d 0a 09 09 62  long lblen,....b
26c0: 6f 6f 6c 20 71 31 2c 20 62 6f 6f 6c 20 71 32 2c  ool q1, bool q2,
26d0: 20 62 6f 6f 6c 20 65 73 63 2c 0d 0a 09 09 62 6f   bool esc,....bo
26e0: 6f 6c 20 63 61 73 65 73 65 6e 73 69 74 69 76 65  ol casesensitive
26f0: 0d 0a 09 29 0d 0a 09 09 3a 20 74 61 67 5f 28 20  ...)....: tag_( 
2700: 63 62 2c 20 63 62 6c 65 6e 2c 20 63 65 2c 20 63  cb, cblen, ce, c
2710: 65 6c 65 6e 2c 20 6c 62 2c 20 6c 62 6c 65 6e 2c  elen, lb, lblen,
2720: 20 71 31 2c 20 71 32 2c 20 65 73 63 20 29 0d 0a   q1, q2, esc )..
2730: 09 09 2c 20 6b 77 64 5f 28 20 63 61 73 65 73 65  .., kwd_( casese
2740: 6e 73 69 74 69 76 65 20 29 0d 0a 09 7b 0d 0a 09  nsitive )...{...
2750: 7d 0d 0a 0d 0a 09 2f 2f 20 8f 89 8a fa 89 bb 82  }.....// .......
2760: 51 81 46 83 4c 81 5b 83 8f 81 5b 83 68 92 c7 89  Q.F.L.[...[.h...
2770: c1 0d 0a 09 76 6f 69 64 20 41 64 64 4b 65 79 77  ....void AddKeyw
2780: 6f 72 64 28 20 63 6f 6e 73 74 20 75 6e 69 63 6f  ord( const unico
2790: 64 65 2a 20 73 74 72 2c 20 75 6c 6f 6e 67 20 6c  de* str, ulong l
27a0: 65 6e 20 29 0d 0a 09 7b 0d 0a 09 09 6b 77 64 5f  en )...{....kwd_
27b0: 2e 41 64 64 4b 65 79 77 6f 72 64 28 20 73 74 72  .AddKeyword( str
27c0: 2c 20 6c 65 6e 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a  , len );...}....
27d0: 09 2f 2f 20 8d 73 83 66 81 5b 83 5e 89 f0 90 cd  .// .s.f.[.^....
27e0: 0d 0a 09 75 63 68 61 72 20 50 61 72 73 65 28 20  ...uchar Parse( 
27f0: 4c 69 6e 65 26 20 6c 69 6e 65 2c 20 75 63 68 61  Line& line, ucha
2800: 72 20 63 6d 73 74 20 29 0d 0a 09 7b 0d 0a 09 09  r cmst )...{....
2810: 6c 69 6e 65 2e 54 72 61 6e 73 69 74 43 6d 74 28  line.TransitCmt(
2820: 20 63 6d 73 74 20 29 3b 0d 0a 0d 0a 09 09 2f 2f   cmst );......//
2830: 20 41 53 43 49 49 90 55 82 e8 95 aa 82 af 83 65   ASCII.U.......e
2840: 81 5b 83 75 83 8b 81 42 0d 0a 09 09 2f 2f 20 83  .[.u...B....// .
2850: 56 83 74 83 67 96 b3 82 b5 82 c5 54 6f 6b 65 6e  V.t.g......Token
2860: 54 79 70 65 82 c9 97 ac 97 70 8f 6f 97 88 82 e9  Type.....p.o....
2870: 82 e6 82 a4 82 c9 82 b7 82 e9 82 bd 82 df 81 41  ...............A
2880: 0d 0a 09 09 2f 2f 20 92 6c 82 aa 82 53 94 f2 82  ....// .l...S...
2890: d1 82 c9 82 c8 82 c1 82 c4 82 dc 82 b7 0d 0a 09  ................
28a0: 09 65 6e 75 6d 20 7b 20 54 3d 30 2c 20 57 3d 34  .enum { T=0, W=4
28b0: 2c 20 41 3d 38 2c 20 53 3d 31 32 2c 20 4f 3d 30  , A=8, S=12, O=0
28c0: 20 7d 3b 0d 0a 09 09 73 74 61 74 69 63 20 63 6f   };....static co
28d0: 6e 73 74 20 75 63 68 61 72 20 6c 65 74 74 65 72  nst uchar letter
28e0: 5f 74 79 70 65 5b 31 32 38 5d 20 3d 20 7b 0d 0a  _type[128] = {..
28f0: 09 09 09 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f  ...O,O,O,O,O,O,O
2900: 2c 4f 2c 4f 2c 54 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f  ,O,O,T,O,O,O,O,O
2910: 2c 4f 2c 0d 0a 09 09 09 4f 2c 4f 2c 4f 2c 4f 2c  ,O,.....O,O,O,O,
2920: 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c 4f 2c  O,O,O,O,O,O,O,O,
2930: 4f 2c 4f 2c 4f 2c 4f 2c 0d 0a 09 09 09 57 2c 53  O,O,O,O,.....W,S
2940: 2c 53 2c 53 2c 53 2c 53 2c 53 2c 53 2c 53 2c 53  ,S,S,S,S,S,S,S,S
2950: 2c 53 2c 53 2c 53 2c 53 2c 53 2c 53 2c 0d 0a 09  ,S,S,S,S,S,S,...
2960: 09 09 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c  ..A,A,A,A,A,A,A,
2970: 41 2c 41 2c 41 2c 53 2c 53 2c 53 2c 53 2c 53 2c  A,A,A,S,S,S,S,S,
2980: 53 2c 0d 0a 09 09 09 53 2c 41 2c 41 2c 41 2c 41  S,.....S,A,A,A,A
2990: 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41  ,A,A,A,A,A,A,A,A
29a0: 2c 41 2c 41 2c 41 2c 0d 0a 09 09 09 41 2c 41 2c  ,A,A,A,.....A,A,
29b0: 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c  A,A,A,A,A,A,A,A,
29c0: 41 2c 53 2c 53 2c 53 2c 53 2c 41 2c 0d 0a 09 09  A,S,S,S,S,A,....
29d0: 09 53 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41  .S,A,A,A,A,A,A,A
29e0: 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 41  ,A,A,A,A,A,A,A,A
29f0: 2c 0d 0a 09 09 09 41 2c 41 2c 41 2c 41 2c 41 2c  ,.....A,A,A,A,A,
2a00: 41 2c 41 2c 41 2c 41 2c 41 2c 41 2c 53 2c 53 2c  A,A,A,A,A,A,S,S,
2a10: 53 2c 53 2c 4f 2c 0d 0a 09 09 7d 3b 0d 0a 0d 0a  S,S,O,....};....
2a20: 09 09 2f 2f 20 50 6f 73 49 6e 54 6f 6b 65 6e 8e  ..// PosInToken.
2a30: 5a 8f 6f 97 70 82 cc 8b 97 97 a3 83 47 83 93 83  Z.o.p.......G...
2a40: 52 81 5b 83 5f 28 20 35 62 69 74 83 56 83 74 83  R.[._( 5bit.V.t.
2a50: 67 8d cf 82 dd 20 29 0d 0a 09 09 2f 2f 20 20 28  g.... )....//  (
2a60: 20 5f 64 3e 37 20 3f 20 37 3c 3c 35 20 3a 20 5f   _d>7 ? 7<<5 : _
2a70: 64 3c 3c 35 20 29 0d 0a 09 09 23 64 65 66 69 6e  d<<5 )....#defin
2a80: 65 20 74 6b 65 6e 63 28 5f 64 29 20 28 20 28 5f  e tkenc(_d) ( (_
2a90: 64 29 3e 37 20 3f 20 30 78 65 30 20 3a 20 28 5f  d)>7 ? 0xe0 : (_
2aa0: 64 29 3c 3c 35 20 29 0d 0a 0d 0a 09 09 2f 2f 20  d)<<5 )......// 
2ab0: 83 52 83 81 83 93 83 67 8f f3 91 d4 91 4a 88 da  .R.....g.....J..
2ac0: 92 c7 90 d5 97 70 83 49 81 5b 83 67 83 7d 83 67  .....p.I.[.g.}.g
2ad0: 83 93 0d 0a 09 09 43 6f 6d 6d 65 6e 74 44 46 41  ......CommentDFA
2ae0: 20 64 66 61 5b 32 5d 20 3d 20 7b 43 6f 6d 6d 65   dfa[2] = {Comme
2af0: 6e 74 44 46 41 28 66 61 6c 73 65 29 2c 20 43 6f  ntDFA(false), Co
2b00: 6d 6d 65 6e 74 44 46 41 28 74 72 75 65 29 7d 3b  mmentDFA(true)};
2b10: 0d 0a 09 09 69 6e 74 26 20 63 6d 74 53 74 61 74  ....int& cmtStat
2b20: 65 20 20 3d 20 64 66 61 5b 6c 69 6e 65 2e 69 73  e  = dfa[line.is
2b30: 4c 69 6e 65 48 65 61 64 43 6d 74 28 29 5d 2e 73  LineHeadCmt()].s
2b40: 74 61 74 65 3b 0d 0a 09 09 69 6e 74 20 63 6f 6d  tate;....int com
2b50: 6d 65 6e 74 62 69 74 20 3d 20 63 6d 74 53 74 61  mentbit = cmtSta
2b60: 74 65 26 31 3b 0d 0a 0d 0a 09 09 2f 2f 20 8d ec  te&1;......// ..
2b70: 8b c6 97 cc 88 e6 0d 0a 09 09 69 6e 74 20 73 79  ..........int sy
2b80: 6d 3b 0d 0a 09 09 75 6c 6f 6e 67 20 6a 2c 20 6b  m;....ulong j, k
2b90: 2c 20 75 6d 2c 20 6d 3b 0d 0a 09 09 75 63 68 61  , um, m;....ucha
2ba0: 72 20 74 2c 20 66 3b 0d 0a 0d 0a 09 09 2f 2f 20  r t, f;......// 
2bb0: 83 8b 81 5b 83 76 81 60 0d 0a 09 09 63 6f 6e 73  ...[.v.`....cons
2bc0: 74 20 75 6e 69 63 6f 64 65 2a 20 73 74 72 20 3d  t unicode* str =
2bd0: 20 6c 69 6e 65 2e 73 74 72 28 29 3b 0d 0a 09 09   line.str();....
2be0: 75 63 68 61 72 2a 20 20 20 20 20 20 20 20 20 66  uchar*         f
2bf0: 6c 67 20 3d 20 6c 69 6e 65 2e 66 6c 67 28 29 3b  lg = line.flg();
2c00: 0d 0a 09 09 75 6c 6f 6e 67 20 20 20 20 20 20 20  ....ulong       
2c10: 20 20 20 20 69 65 20 3d 20 6c 69 6e 65 2e 73 69      ie = line.si
2c20: 7a 65 28 29 3b 0d 0a 09 09 66 6f 72 28 20 75 6c  ze();....for( ul
2c30: 6f 6e 67 20 69 3d 30 3b 20 69 3c 69 65 3b 20 69  ong i=0; i<ie; i
2c40: 3d 6a 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 6a 20  =j )....{.....j 
2c50: 3d 20 69 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 41 53  = i;.......// AS
2c60: 43 49 49 95 b6 8e 9a 82 c5 82 c8 82 a2 8f ea 8d  CII.............
2c70: 87 0d 0a 09 09 09 69 66 28 20 73 74 72 5b 69 5d  ......if( str[i]
2c80: 20 3e 3d 20 30 78 30 30 37 66 20 29 0d 0a 09 09   >= 0x007f )....
2c90: 09 7b 0d 0a 09 09 09 09 66 20 3d 20 28 41 4c 50  .{......f = (ALP
2ca0: 20 7c 20 63 6f 6d 6d 65 6e 74 62 69 74 29 3b 0d   | commentbit);.
2cb0: 0a 09 09 09 09 69 66 28 20 73 74 72 5b 69 5d 20  .....if( str[i] 
2cc0: 3d 3d 20 30 78 33 30 30 30 20 29 2f 2f 4c 27 81  == 0x3000 )//L'.
2cd0: 40 27 20 29 0d 0a 09 09 09 09 09 77 68 69 6c 65  @' ).......while
2ce0: 28 20 73 74 72 5b 2b 2b 6a 5d 20 3d 3d 20 30 78  ( str[++j] == 0x
2cf0: 33 30 30 30 20 29 0d 0a 09 09 09 09 09 09 66 6c  3000 )........fl
2d00: 67 5b 6a 5d 20 3d 20 66 3b 0d 0a 09 09 09 09 65  g[j] = f;......e
2d10: 6c 73 65 0d 0a 09 09 09 09 09 77 68 69 6c 65 28  lse.......while(
2d20: 20 73 74 72 5b 2b 2b 6a 5d 20 3e 3d 20 30 78 38   str[++j] >= 0x8
2d30: 30 20 26 26 20 73 74 72 5b 6a 5d 21 3d 30 78 33  0 && str[j]!=0x3
2d40: 30 30 30 20 29 0d 0a 09 09 09 09 09 09 66 6c 67  000 )........flg
2d50: 5b 6a 5d 20 3d 20 66 3b 0d 0a 09 09 09 09 66 6c  [j] = f;......fl
2d60: 67 5b 69 5d 20 3d 20 73 74 61 74 69 63 5f 63 61  g[i] = static_ca
2d70: 73 74 3c 75 63 68 61 72 3e 28 74 6b 65 6e 63 28  st<uchar>(tkenc(
2d80: 6a 2d 69 29 20 7c 20 66 29 3b 0d 0a 09 09 09 7d  j-i) | f);.....}
2d90: 0d 0a 09 09 09 2f 2f 20 41 53 43 49 49 95 b6 8e  .....// ASCII...
2da0: 9a 82 cc 8f ea 8d 87 3f 3f 0d 0a 09 09 09 65 6c  .......??.....el
2db0: 73 65 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 74 20  se.....{......t 
2dc0: 3d 20 6c 65 74 74 65 72 5f 74 79 70 65 5b 73 74  = letter_type[st
2dd0: 72 5b 69 5d 5d 3b 0d 0a 09 09 09 09 69 66 28 20  r[i]];......if( 
2de0: 74 3d 3d 53 20 26 26 20 74 61 67 5f 2e 64 6f 65  t==S && tag_.doe
2df0: 73 5f 65 73 63 28 29 20 29 0d 0a 09 09 09 09 09  s_esc() ).......
2e00: 64 6f 0d 0a 09 09 09 09 09 09 69 66 28 20 6a 2b  do........if( j+
2e10: 31 3c 69 65 20 26 26 20 73 74 72 5b 6a 5d 3d 3d  1<ie && str[j]==
2e20: 4c 27 5c 5c 27 20 29 0d 0a 09 09 09 09 09 09 09  L'\\' ).........
2e30: 6a 2b 2b 3b 0d 0a 09 09 09 09 09 77 68 69 6c 65  j++;.......while
2e40: 28 20 73 74 72 5b 2b 2b 6a 5d 3c 30 78 37 66 20  ( str[++j]<0x7f 
2e50: 26 26 20 53 3d 3d 6c 65 74 74 65 72 5f 74 79 70  && S==letter_typ
2e60: 65 5b 73 74 72 5b 6a 5d 5d 20 29 3b 0d 0a 09 09  e[str[j]] );....
2e70: 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 77 68 69  ..else.......whi
2e80: 6c 65 28 20 73 74 72 5b 2b 2b 6a 5d 3c 30 78 37  le( str[++j]<0x7
2e90: 66 20 26 26 20 74 3d 3d 6c 65 74 74 65 72 5f 74  f && t==letter_t
2ea0: 79 70 65 5b 73 74 72 5b 6a 5d 5d 20 29 3b 0d 0a  ype[str[j]] );..
2eb0: 0d 0a 09 09 09 09 66 20 3d 20 28 74 20 7c 20 63  ......f = (t | c
2ec0: 6f 6d 6d 65 6e 74 62 69 74 29 3b 0d 0a 0d 0a 09  ommentbit);.....
2ed0: 09 09 09 73 77 69 74 63 68 28 20 74 20 29 0d 0a  ...switch( t )..
2ee0: 09 09 09 09 7b 0d 0a 09 09 09 09 2f 2f 20 83 41  ....{......// .A
2ef0: 83 8b 83 74 83 40 83 78 83 62 83 67 81 95 90 94  ...t.@.x.b.g....
2f00: 8e 9a 0d 0a 09 09 09 09 63 61 73 65 20 41 3a 0d  ........case A:.
2f10: 0a 09 09 09 09 09 66 20 7c 3d 20 6b 77 64 5f 2e  ......f |= kwd_.
2f20: 69 73 4b 65 79 77 6f 72 64 28 20 73 74 72 2b 69  isKeyword( str+i
2f30: 2c 20 6a 2d 69 20 29 3b 0d 0a 09 09 09 09 09 2f  , j-i );......./
2f40: 2f 20 66 61 6c 6c 2e 2e 2e 0d 0a 0d 0a 09 09 09  / fall..........
2f50: 09 2f 2f 20 83 5e 83 75 81 45 90 a7 8c e4 95 b6  .// .^.u.E......
2f60: 8e 9a 0d 0a 09 09 09 09 63 61 73 65 20 54 3a 0d  ........case T:.
2f70: 0a 09 09 09 09 09 2f 2f 20 66 61 6c 6c 2e 2e 2e  ......// fall...
2f80: 0d 0a 0d 0a 09 09 09 09 2f 2f 20 94 bc 8a 70 8b  ........// ...p.
2f90: f3 94 92 0d 0a 09 09 09 09 63 61 73 65 20 57 3a  .........case W:
2fa0: 0d 0a 09 09 09 09 09 66 6f 72 28 20 6b 3d 69 2b  .......for( k=i+
2fb0: 31 3b 20 6b 3c 6a 3b 20 2b 2b 6b 20 29 0d 0a 09  1; k<j; ++k )...
2fc0: 09 09 09 09 09 66 6c 67 5b 6b 5d 20 3d 20 66 3b  .....flg[k] = f;
2fd0: 0d 0a 09 09 09 09 09 66 6c 67 5b 69 5d 20 3d 20  .......flg[i] = 
2fe0: 28 75 63 68 61 72 29 28 74 6b 65 6e 63 28 6a 2d  (uchar)(tkenc(j-
2ff0: 69 29 7c 66 29 3b 0d 0a 09 09 09 09 09 62 72 65  i)|f);.......bre
3000: 61 6b 3b 0d 0a 0d 0a 09 09 09 09 2f 2f 20 8b 4c  ak;........// .L
3010: 8d 86 0d 0a 09 09 09 09 63 61 73 65 20 53 3a 0d  ........case S:.
3020: 0a 09 09 09 09 09 6b 20 3d 20 69 3b 0d 0a 09 09  ......k = i;....
3030: 09 09 09 77 68 69 6c 65 28 20 6b 20 3c 20 6a 20  ...while( k < j 
3040: 29 0d 0a 09 09 09 09 09 7b 0d 0a 09 09 09 09 09  ).......{.......
3050: 09 2f 2f 20 83 7d 83 62 83 60 82 b5 82 c8 82 a9  .// .}.b.`......
3060: 82 c1 82 bd 95 94 95 aa 0d 0a 09 09 09 09 09 09  ................
3070: 75 6d 20 3d 20 74 61 67 5f 2e 53 79 6d 62 6f 6c  um = tag_.Symbol
3080: 4c 6f 6f 70 28 20 73 74 72 2b 6b 2c 20 6a 2d 6b  Loop( str+k, j-k
3090: 2c 20 6d 2c 20 73 79 6d 20 29 3b 0d 0a 09 09 09  , m, sym );.....
30a0: 09 09 09 66 20 3d 20 28 30 78 32 30 20 7c 20 41  ...f = (0x20 | A
30b0: 4c 50 20 7c 20 63 6f 6d 6d 65 6e 74 62 69 74 29  LP | commentbit)
30c0: 3b 0d 0a 09 09 09 09 09 09 77 68 69 6c 65 28 20  ;........while( 
30d0: 75 6d 2d 2d 20 29 0d 0a 09 09 09 09 09 09 09 66  um-- ).........f
30e0: 6c 67 5b 6b 2b 2b 5d 20 3d 20 66 3b 0d 0a 09 09  lg[k++] = f;....
30f0: 09 09 09 09 69 66 28 20 6b 20 3e 3d 20 6a 20 29  ....if( k >= j )
3100: 0d 0a 09 09 09 09 09 09 09 62 72 65 61 6b 3b 0d  .........break;.
3110: 0a 0d 0a 09 09 09 09 09 09 2f 2f 20 83 7d 83 62  .........// .}.b
3120: 83 60 82 b5 82 bd 95 94 95 aa 0d 0a 09 09 09 09  .`..............
3130: 09 09 66 20 3d 20 28 43 45 20 7c 20 63 6f 6d 6d  ..f = (CE | comm
3140: 65 6e 74 62 69 74 29 3b 0d 0a 09 09 09 09 09 09  entbit);........
3150: 64 66 61 5b 30 5d 2e 74 72 61 6e 73 69 74 28 20  dfa[0].transit( 
3160: 73 79 6d 20 29 3b 0d 0a 09 09 09 09 09 09 64 66  sym );........df
3170: 61 5b 31 5d 2e 74 72 61 6e 73 69 74 28 20 73 79  a[1].transit( sy
3180: 6d 20 29 3b 0d 0a 09 09 09 09 09 09 63 6f 6d 6d  m );........comm
3190: 65 6e 74 62 69 74 20 3d 20 63 6d 74 53 74 61 74  entbit = cmtStat
31a0: 65 26 31 3b 0d 0a 09 09 09 09 09 09 69 66 28 20  e&1;........if( 
31b0: 73 79 6d 20 21 3d 20 30 20 29 20 2f 2f 20 30 3a  sym != 0 ) // 0:
31c0: 63 6f 6d 6d 65 6e 74 20 65 6e 64 0d 0a 09 09 09  comment end.....
31d0: 09 09 09 09 66 20 3d 20 28 28 28 73 79 6d 2b 33  ....f = (((sym+3
31e0: 29 3c 3c 32 29 20 7c 20 63 6f 6d 6d 65 6e 74 62  )<<2) | commentb
31f0: 69 74 29 3b 0d 0a 09 09 09 09 09 09 66 6c 67 5b  it);........flg[
3200: 6b 2b 2b 5d 20 3d 20 28 75 63 68 61 72 29 28 74  k++] = (uchar)(t
3210: 6b 65 6e 63 28 6d 29 7c 66 29 3b 0d 0a 09 09 09  kenc(m)|f);.....
3220: 09 09 09 77 68 69 6c 65 28 20 2d 2d 6d 20 29 0d  ...while( --m ).
3230: 0a 09 09 09 09 09 09 09 66 6c 67 5b 6b 2b 2b 5d  ........flg[k++]
3240: 20 3d 20 66 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09   = f;.......}...
3250: 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09  ....break;......
3260: 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a  }.....}....}....
3270: 09 09 2f 2f 20 74 72 61 6e 73 69 74 83 74 83 89  ..// transit.t..
3280: 83 4f 8d 58 90 56 0d 0a 09 09 6c 69 6e 65 2e 53  .O.X.V....line.S
3290: 65 74 54 72 61 6e 73 69 74 46 6c 61 67 28 0d 0a  etTransitFlag(..
32a0: 09 09 09 28 64 66 61 5b 31 5d 2e 73 74 61 74 65  ...(dfa[1].state
32b0: 20 26 20 28 64 66 61 5b 31 5d 2e 73 74 61 74 65   & (dfa[1].state
32c0: 3c 3c 31 29 29 20 7c 0d 0a 09 09 09 28 28 64 66  <<1)) |.....((df
32d0: 61 5b 30 5d 2e 73 74 61 74 65 3e 3e 31 29 20 26  a[0].state>>1) &
32e0: 20 64 66 61 5b 30 5d 2e 73 74 61 74 65 29 0d 0a   dfa[0].state)..
32f0: 09 09 29 3b 0d 0a 09 09 6c 69 6e 65 2e 43 6f 6d  ..);....line.Com
3300: 6d 65 6e 74 42 69 74 55 70 64 61 74 65 64 28 29  mentBitUpdated()
3310: 3b 0d 0a 09 09 72 65 74 75 72 6e 20 6c 69 6e 65  ;....return line
3320: 2e 54 72 61 6e 73 69 74 43 6d 74 28 20 63 6d 73  .TransitCmt( cms
3330: 74 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20  t );...}.....// 
3340: 83 52 83 81 83 93 83 67 83 72 83 62 83 67 82 f0  .R.....g.r.b.g..
3350: 90 b3 82 b5 82 ad 92 b2 90 ae 0d 0a 09 76 6f 69  .............voi
3360: 64 20 53 65 74 43 6f 6d 6d 65 6e 74 42 69 74 28  d SetCommentBit(
3370: 20 4c 69 6e 65 26 20 6c 69 6e 65 20 29 0d 0a 09   Line& line )...
3380: 7b 0d 0a 09 09 43 6f 6d 6d 65 6e 74 44 46 41 20  {....CommentDFA 
3390: 64 66 61 28 20 6c 69 6e 65 2e 69 73 4c 69 6e 65  dfa( line.isLine
33a0: 48 65 61 64 43 6d 74 28 29 3d 3d 31 20 29 3b 0d  HeadCmt()==1 );.
33b0: 0a 09 09 75 6c 6f 6e 67 20 63 6f 6d 6d 65 6e 74  ...ulong comment
33c0: 62 69 74 20 3d 20 64 66 61 2e 73 74 61 74 65 26  bit = dfa.state&
33d0: 31 3b 0d 0a 0d 0a 09 09 2f 2f 20 83 8b 81 5b 83  1;......// ...[.
33e0: 76 81 60 0d 0a 09 09 63 6f 6e 73 74 20 75 6e 69  v.`....const uni
33f0: 63 6f 64 65 2a 20 73 74 72 20 3d 20 6c 69 6e 65  code* str = line
3400: 2e 73 74 72 28 29 3b 0d 0a 09 09 75 63 68 61 72  .str();....uchar
3410: 2a 20 20 20 20 20 20 20 20 20 66 6c 67 20 3d 20  *         flg = 
3420: 6c 69 6e 65 2e 66 6c 67 28 29 3b 0d 0a 09 09 75  line.flg();....u
3430: 6c 6f 6e 67 20 20 20 20 20 20 20 6a 2c 6b 2c 69  long       j,k,i
3440: 65 20 3d 20 6c 69 6e 65 2e 73 69 7a 65 28 29 3b  e = line.size();
3450: 0d 0a 09 09 66 6f 72 28 20 75 6c 6f 6e 67 20 69  ....for( ulong i
3460: 3d 30 3b 20 69 3c 69 65 3b 20 69 3d 6a 20 29 0d  =0; i<ie; i=j ).
3470: 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20 54 6f 6b 65  ...{.....// Toke
3480: 6e 82 cc 8f 49 92 5b 82 f0 93 be 82 e9 0d 0a 09  n...I.[.........
3490: 09 09 6b 20 3d 20 28 66 6c 67 5b 69 5d 3e 3e 35  ..k = (flg[i]>>5
34a0: 29 3b 0d 0a 09 09 09 6a 20 3d 20 69 20 2b 20 6b  );.....j = i + k
34b0: 3b 0d 0a 09 09 09 69 66 28 20 6a 20 3e 3d 20 69  ;.....if( j >= i
34c0: 65 20 29 0d 0a 09 09 09 09 6a 20 3d 20 69 65 3b  e )......j = ie;
34d0: 0d 0a 09 09 09 65 6c 73 65 20 69 66 28 20 6b 3d  .....else if( k=
34e0: 3d 37 20 29 20 2f 2f 20 7c 7c 20 6b 3d 3d 30 20  =7 ) // || k==0 
34f0: 29 0d 0a 09 09 09 09 77 68 69 6c 65 28 20 28 66  )......while( (f
3500: 6c 67 5b 6a 5d 3e 3e 35 29 3d 3d 30 20 26 26 20  lg[j]>>5)==0 && 
3510: 6a 3c 69 65 20 29 0d 0a 09 09 09 09 09 2b 2b 6a  j<ie ).......++j
3520: 3b 0d 0a 0d 0a 09 09 09 6b 20 3d 20 28 66 6c 67  ;.......k = (flg
3530: 5b 69 5d 20 26 20 30 78 31 63 29 3b 0d 0a 09 09  [i] & 0x1c);....
3540: 09 69 66 28 20 6b 20 3c 3d 20 43 45 20 29 0d 0a  .if( k <= CE )..
3550: 09 09 09 7b 0d 0a 09 09 09 09 66 6f 72 28 20 3b  ...{......for( ;
3560: 20 69 3c 6a 3b 20 2b 2b 69 20 29 0d 0a 09 09 09   i<j; ++i ).....
3570: 09 09 66 6c 67 5b 69 5d 20 3d 20 28 75 63 68 61  ..flg[i] = (ucha
3580: 72 29 28 28 66 6c 67 5b 69 5d 20 26 20 30 78 66  r)((flg[i] & 0xf
3590: 65 29 20 7c 20 63 6f 6d 6d 65 6e 74 62 69 74 29  e) | commentbit)
35a0: 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 69 66 28 20  ;.....}.....if( 
35b0: 6b 20 3e 3d 20 43 45 20 29 0d 0a 09 09 09 7b 0d  k >= CE ).....{.
35c0: 0a 09 09 09 09 64 66 61 2e 74 72 61 6e 73 69 74  .....dfa.transit
35d0: 28 20 28 6b 3e 3e 32 29 2d 33 20 29 3b 0d 0a 09  ( (k>>2)-3 );...
35e0: 09 09 09 63 6f 6d 6d 65 6e 74 62 69 74 20 3d 20  ...commentbit = 
35f0: 64 66 61 2e 73 74 61 74 65 26 31 3b 0d 0a 09 09  dfa.state&1;....
3600: 09 09 69 66 28 20 6b 20 21 3d 20 43 45 20 29 0d  ..if( k != CE ).
3610: 0a 09 09 09 09 09 66 6f 72 28 20 3b 20 69 3c 6a  ......for( ; i<j
3620: 3b 20 2b 2b 69 20 29 0d 0a 09 09 09 09 09 09 66  ; ++i )........f
3630: 6c 67 5b 69 5d 20 3d 20 28 75 63 68 61 72 29 28  lg[i] = (uchar)(
3640: 28 66 6c 67 5b 69 5d 20 26 20 30 78 66 65 29 20  (flg[i] & 0xfe) 
3650: 7c 20 63 6f 6d 6d 65 6e 74 62 69 74 29 3b 0d 0a  | commentbit);..
3660: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 6c  ...}....}......l
3670: 69 6e 65 2e 43 6f 6d 6d 65 6e 74 42 69 74 55 70  ine.CommentBitUp
3680: 64 61 74 65 64 28 29 3b 0d 0a 09 7d 0d 0a 7d 3b  dated();...}..};
3690: 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d  ........//------
36a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36e0: 2d 2d 2d 0d 0a 2f 2f 20 92 e8 8b 60 83 74 83 40  ---..// ...`.t.@
36f0: 83 43 83 8b 93 c7 82 dd 82 c6 82 e8 8f 88 97 9d  .C..............
3700: 82 c6 82 a9 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d  ......//--------
3710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3750: 2d 0d 0a 0d 0a 44 6f 63 49 6d 70 6c 3a 3a 44 6f  -....DocImpl::Do
3760: 63 49 6d 70 6c 28 20 44 6f 63 75 6d 65 6e 74 26  cImpl( Document&
3770: 20 74 68 65 44 6f 63 20 29 0d 0a 09 3a 20 64 6f   theDoc )...: do
3780: 63 5f 20 20 20 20 28 20 74 68 65 44 6f 63 20 29  c_    ( theDoc )
3790: 0d 0a 09 2c 20 70 45 76 48 61 6e 5f 20 28 20 32  ..., pEvHan_ ( 2
37a0: 20 29 0d 0a 7b 0d 0a 09 74 65 78 74 5f 2e 41 64   )..{...text_.Ad
37b0: 64 28 20 6e 65 77 20 4c 69 6e 65 28 4c 22 22 2c  d( new Line(L"",
37c0: 30 29 20 29 3b 20 2f 2f 20 8d c5 8f 89 82 cd 88  0) ); // .......
37d0: ea 8d 73 82 be 82 af 0d 0a 09 53 65 74 4b 65 79  ..s.......SetKey
37e0: 77 6f 72 64 28 20 4e 55 4c 4c 2c 20 30 20 29 3b  word( NULL, 0 );
37f0: 20 20 20 20 20 20 20 20 2f 2f 20 83 4c 81 5b 83          // .L.[.
3800: 8f 81 5b 83 68 96 b3 82 b5 0d 0a 7d 0d 0a 0d 0a  ..[.h......}....
3810: 44 6f 63 49 6d 70 6c 3a 3a 7e 44 6f 63 49 6d 70  DocImpl::~DocImp
3820: 6c 28 29 0d 0a 7b 0d 0a 09 2f 2f 20 82 b1 82 cc  l()..{...// ....
3830: 83 74 83 40 83 43 83 8b 82 c9 83 66 83 58 83 67  .t.@.C.....f.X.g
3840: 83 89 83 4e 83 5e 82 f0 93 fc 82 ea 82 c4 82 a8  ...N.^..........
3850: 82 a9 82 c8 82 a2 82 c6 81 41 0d 0a 09 2f 2f 20  .........A...// 
3860: 64 65 6c 65 74 65 20 70 61 72 73 65 72 5f 20 82  delete parser_ .
3870: aa 8f 6f 97 88 82 c8 82 ad 82 c8 82 e9 81 42 5e  ..o...........B^
3880: 5e 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 44 6f  ^;..}....void Do
3890: 63 49 6d 70 6c 3a 3a 53 65 74 4b 65 79 77 6f 72  cImpl::SetKeywor
38a0: 64 28 20 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65  d( const unicode
38b0: 2a 20 64 65 66 62 75 66 2c 20 75 6c 6f 6e 67 20  * defbuf, ulong 
38c0: 73 69 7a 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 42 4f  siz )..{...// BO
38d0: 4d 82 aa 82 a0 82 c1 82 bd 82 e7 83 58 83 4c 83  M...........X.L.
38e0: 62 83 76 0d 0a 09 69 66 28 20 73 69 7a 21 3d 30  b.v...if( siz!=0
38f0: 20 26 26 20 2a 64 65 66 62 75 66 3d 3d 30 78 66   && *defbuf==0xf
3900: 65 66 66 20 29 0d 0a 09 09 2b 2b 64 65 66 62 75  eff )....++defbu
3910: 66 2c 20 2d 2d 73 69 7a 3b 0d 0a 0d 0a 09 2f 2f  f, --siz;.....//
3920: 20 93 c7 82 dd 8d 9e 82 dd 8f 80 94 f5 0d 0a 09   ...............
3930: 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 73  const unicode* s
3940: 74 72 3b 0d 0a 09 75 6c 6f 6e 67 20 20 20 20 20  tr;...ulong     
3950: 20 20 20 20 20 6c 65 6e 3b 0d 0a 09 55 6e 69 52       len;...UniR
3960: 65 61 64 65 72 20 72 28 20 64 65 66 62 75 66 2c  eader r( defbuf,
3970: 20 73 69 7a 2c 20 26 73 74 72 2c 20 26 6c 65 6e   siz, &str, &len
3980: 20 29 3b 0d 0a 09 62 6f 6f 6c 20 20 20 20 20 20   );...bool      
3990: 20 20 20 20 66 6c 61 67 73 5b 5d 20 3d 20 7b 66      flags[] = {f
39a0: 61 6c 73 65 2c 66 61 6c 73 65 2c 66 61 6c 73 65  alse,false,false
39b0: 2c 66 61 6c 73 65 7d 3b 0d 0a 09 63 6f 6e 73 74  ,false};...const
39c0: 20 75 6e 69 63 6f 64 65 2a 20 74 61 67 73 5b 5d   unicode* tags[]
39d0: 20 3d 20 7b 4e 55 4c 4c 2c 4e 55 4c 4c 2c 4e 55   = {NULL,NULL,NU
39e0: 4c 4c 7d 3b 0d 0a 09 75 6c 6f 6e 67 20 20 20 20  LL};...ulong    
39f0: 20 20 20 20 74 61 67 6c 65 6e 5b 5d 20 3d 20 7b      taglen[] = {
3a00: 30 2c 30 2c 30 7d 3b 0d 0a 0d 0a 09 69 66 28 20  0,0,0};.....if( 
3a10: 73 69 7a 20 21 3d 20 30 20 29 0d 0a 09 7b 0d 0a  siz != 0 )...{..
3a20: 09 09 2f 2f 20 82 50 8d 73 96 da 3a 83 74 83 89  ..// .P.s..:.t..
3a30: 83 4f 0d 0a 09 09 2f 2f 20 20 20 63 61 73 65 3f  .O....//   case?
3a40: 20 71 31 3f 20 71 32 3f 20 65 73 63 3f 0d 0a 09   q1? q2? esc?...
3a50: 09 72 2e 67 65 74 4c 69 6e 65 28 29 3b 0d 0a 09  .r.getLine();...
3a60: 09 66 6f 72 28 20 75 6c 6f 6e 67 20 69 3d 30 3b  .for( ulong i=0;
3a70: 20 69 3c 6c 65 6e 3b 20 2b 2b 69 20 29 0d 0a 09   i<len; ++i )...
3a80: 09 09 66 6c 61 67 73 5b 69 5d 20 3d 20 28 73 74  ..flags[i] = (st
3a90: 72 5b 69 5d 3d 3d 4c 27 31 27 29 3b 0d 0a 0d 0a  r[i]==L'1');....
3aa0: 09 09 2f 2f 20 82 51 81 60 82 53 8d 73 96 da 0d  ..// .Q.`.S.s...
3ab0: 0a 09 09 2f 2f 20 20 20 83 75 83 8d 83 52 83 81  ...//   .u...R..
3ac0: 8a 4a 8e 6e 8b 4c 8d 86 81 41 83 75 83 8d 83 52  .J.n.L...A.u...R
3ad0: 83 81 8f 49 97 b9 8b 4c 8d 86 81 41 8d 73 83 52  ...I...L...A.s.R
3ae0: 83 81 8b 4c 8d 86 0d 0a 09 09 66 6f 72 28 20 69  ...L......for( i
3af0: 6e 74 20 6a 3d 30 3b 20 6a 3c 33 3b 20 2b 2b 6a  nt j=0; j<3; ++j
3b00: 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 72 2e 67 65   )....{.....r.ge
3b10: 74 4c 69 6e 65 28 29 3b 0d 0a 09 09 09 20 20 74  tLine();.....  t
3b20: 61 67 73 5b 6a 5d 20 3d 20 73 74 72 3b 0d 0a 09  ags[j] = str;...
3b30: 09 09 74 61 67 6c 65 6e 5b 6a 5d 20 3d 20 6c 65  ..taglen[j] = le
3b40: 6e 3b 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 0d 0a 09  n;....}...}.....
3b50: 2f 2f 20 83 70 81 5b 83 54 81 5b 8d ec 90 ac 0d  // .p.[.T.[.....
3b60: 0a 09 61 70 74 72 3c 50 61 72 73 65 72 3e 20 6e  ..aptr<Parser> n
3b70: 70 28 20 6e 65 77 20 50 61 72 73 65 72 28 0d 0a  p( new Parser(..
3b80: 09 09 74 61 67 73 5b 30 5d 2c 20 74 61 67 6c 65  ..tags[0], tagle
3b90: 6e 5b 30 5d 2c 20 74 61 67 73 5b 31 5d 2c 20 74  n[0], tags[1], t
3ba0: 61 67 6c 65 6e 5b 31 5d 2c 20 74 61 67 73 5b 32  aglen[1], tags[2
3bb0: 5d 2c 20 74 61 67 6c 65 6e 5b 32 5d 2c 0d 0a 09  ], taglen[2],...
3bc0: 09 66 6c 61 67 73 5b 31 5d 2c 20 66 6c 61 67 73  .flags[1], flags
3bd0: 5b 32 5d 2c 20 66 6c 61 67 73 5b 33 5d 2c 20 66  [2], flags[3], f
3be0: 6c 61 67 73 5b 30 5d 20 29 20 29 3b 0d 0a 09 70  lags[0] ) );...p
3bf0: 61 72 73 65 72 5f 20 3d 20 6e 70 3b 0d 0a 0d 0a  arser_ = np;....
3c00: 09 2f 2f 20 82 54 8d 73 96 da 88 c8 8d 7e 81 46  .// .T.s.....~.F
3c10: 83 4c 81 5b 83 8f 81 5b 83 68 83 8a 83 58 83 67  .L.[...[.h...X.g
3c20: 0d 0a 09 77 68 69 6c 65 28 20 21 72 2e 69 73 45  ...while( !r.isE
3c30: 6d 70 74 79 28 29 20 29 0d 0a 09 7b 0d 0a 09 09  mpty() )...{....
3c40: 72 2e 67 65 74 4c 69 6e 65 28 29 3b 0d 0a 09 09  r.getLine();....
3c50: 69 66 28 20 6c 65 6e 20 21 3d 20 30 20 29 0d 0a  if( len != 0 )..
3c60: 09 09 09 70 61 72 73 65 72 5f 2d 3e 41 64 64 4b  ...parser_->AddK
3c70: 65 79 77 6f 72 64 28 20 73 74 72 2c 20 6c 65 6e  eyword( str, len
3c80: 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 91   );...}.....// .
3c90: 53 8d 73 89 f0 90 cd 82 b5 92 bc 82 b5 0d 0a 09  S.s.............
3ca0: 52 65 50 61 72 73 65 28 20 30 2c 20 74 6c 6e 28  ReParse( 0, tln(
3cb0: 29 2d 31 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 95 cf  )-1 );.....// ..
3cc0: 8d 58 92 ca 92 6d 0d 0a 09 46 69 72 65 5f 4b 45  .X...m...Fire_KE
3cd0: 59 57 4f 52 44 43 48 41 4e 47 45 28 29 3b 0d 0a  YWORDCHANGE();..
3ce0: 7d 0d 0a 0d 0a 62 6f 6f 6c 20 44 6f 63 49 6d 70  }....bool DocImp
3cf0: 6c 3a 3a 52 65 50 61 72 73 65 28 20 75 6c 6f 6e  l::ReParse( ulon
3d00: 67 20 73 2c 20 75 6c 6f 6e 67 20 65 20 29 0d 0a  g s, ulong e )..
3d10: 7b 0d 0a 09 75 6c 6f 6e 67 20 69 3b 0d 0a 09 75  {...ulong i;...u
3d20: 63 68 61 72 20 63 6d 74 20 3d 20 74 65 78 74 5f  char cmt = text_
3d30: 5b 73 5d 2e 69 73 4c 69 6e 65 48 65 61 64 43 6d  [s].isLineHeadCm
3d40: 74 28 29 3b 0d 0a 0d 0a 09 2f 2f 20 82 dc 82 b8  t();.....// ....
3d50: 82 cd 95 cf 8d 58 94 cd 88 cd 82 f0 8d c4 89 f0  .....X..........
3d60: 90 cd 0d 0a 09 66 6f 72 28 20 69 3d 73 3b 20 69  .....for( i=s; i
3d70: 3c 3d 65 3b 20 2b 2b 69 20 29 0d 0a 09 09 63 6d  <=e; ++i )....cm
3d80: 74 20 3d 20 70 61 72 73 65 72 5f 2d 3e 50 61 72  t = parser_->Par
3d90: 73 65 28 20 74 65 78 74 5f 5b 69 5d 2c 20 63 6d  se( text_[i], cm
3da0: 74 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 83 52 83 81  t );.....// .R..
3db0: 83 93 83 67 83 41 83 45 83 67 8f f3 91 d4 82 c9  ...g.A.E.g......
3dc0: 95 cf 89 bb 82 aa 82 c8 82 a9 82 c1 82 bd 82 e7  ................
3dd0: 82 b1 82 b1 82 c5 82 a8 8f 49 82 a2 81 42 0d 0a  .........I...B..
3de0: 09 69 66 28 20 69 3d 3d 74 6c 6e 28 29 20 7c 7c  .if( i==tln() ||
3df0: 20 74 65 78 74 5f 5b 69 5d 2e 69 73 4c 69 6e 65   text_[i].isLine
3e00: 48 65 61 64 43 6d 74 28 29 3d 3d 63 6d 74 20 29  HeadCmt()==cmt )
3e10: 0d 0a 09 09 72 65 74 75 72 6e 20 66 61 6c 73 65  ....return false
3e20: 3b 0d 0a 0d 0a 09 2f 2f 20 97 e1 82 a6 82 ce 81  ;.....// .......
3e30: 41 2f 2a 20 82 aa 93 fc 97 cd 82 b3 82 ea 82 bd  A/* ............
3e40: 8f ea 8d 87 82 c8 82 c7 82 cd 81 41 89 ba 82 cc  ...........A....
3e50: 95 fb 82 cc 8d 73 82 dc 82 c5 0d 0a 09 2f 2f 20  .....s.......// 
3e60: 83 52 83 81 83 93 83 67 83 41 83 45 83 67 8f f3  .R.....g.A.E.g..
3e70: 91 d4 82 cc 95 cf 89 bb 82 f0 93 60 92 42 82 b7  ...........`.B..
3e80: 82 e9 95 4b 97 76 82 aa 82 a0 82 e9 81 42 0d 0a  ...K.v.......B..
3e90: 09 64 6f 0d 0a 09 09 63 6d 74 20 3d 20 74 65 78  .do....cmt = tex
3ea0: 74 5f 5b 69 2b 2b 5d 2e 54 72 61 6e 73 69 74 43  t_[i++].TransitC
3eb0: 6d 74 28 20 63 6d 74 20 29 3b 0d 0a 09 77 68 69  mt( cmt );...whi
3ec0: 6c 65 28 20 69 3c 74 6c 6e 28 29 20 26 26 20 74  le( i<tln() && t
3ed0: 65 78 74 5f 5b 69 5d 2e 69 73 4c 69 6e 65 48 65  ext_[i].isLineHe
3ee0: 61 64 43 6d 74 28 29 21 3d 63 6d 74 20 29 3b 0d  adCmt()!=cmt );.
3ef0: 0a 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ..return true;..
3f00: 7d 0d 0a 0d 0a 76 6f 69 64 20 44 6f 63 49 6d 70  }....void DocImp
3f10: 6c 3a 3a 53 65 74 43 6f 6d 6d 65 6e 74 42 69 74  l::SetCommentBit
3f20: 28 20 63 6f 6e 73 74 20 4c 69 6e 65 26 20 78 20  ( const Line& x 
3f30: 29 20 63 6f 6e 73 74 0d 0a 7b 0d 0a 09 70 61 72  ) const..{...par
3f40: 73 65 72 5f 2d 3e 53 65 74 43 6f 6d 6d 65 6e 74  ser_->SetComment
3f50: 42 69 74 28 20 63 6f 6e 73 74 5f 63 61 73 74 3c  Bit( const_cast<
3f60: 4c 69 6e 65 26 3e 28 78 29 20 29 3b 0d 0a 7d 0d  Line&>(x) );..}.
3f70: 0a                                               .