Grammalecte  Hex Artifact Content

Artifact 1d91386df2c4a653d0f9942981663f2d525e60a3887c7b43049b34d6caa32dd2:


0000: 2f 2f 20 4a 61 76 61 53 63 72 69 70 74 0a 2f 2f  // JavaScript.//
0010: 20 56 65 72 79 20 73 69 6d 70 6c 65 20 74 6f 6b   Very simple tok
0020: 65 6e 69 7a 65 72 0a 0a 2f 2a 20 6a 73 68 69 6e  enizer../* jshin
0030: 74 20 65 73 76 65 72 73 69 6f 6e 3a 36 2c 20 2d  t esversion:6, -
0040: 57 30 39 37 20 2a 2f 0a 2f 2a 20 6a 73 6c 69 6e  W097 */./* jslin
0050: 74 20 65 73 76 65 72 73 69 6f 6e 3a 36 20 2a 2f  t esversion:6 */
0060: 0a 2f 2a 67 6c 6f 62 61 6c 20 72 65 71 75 69 72  ./*global requir
0070: 65 2c 20 65 78 70 6f 72 74 73 2c 20 63 6f 6e 73  e, exports, cons
0080: 6f 6c 65 2a 2f 0a 0a 22 75 73 65 20 73 74 72 69  ole*/.."use stri
0090: 63 74 22 3b 0a 0a 0a 63 6f 6e 73 74 20 61 54 6b  ct";...const aTk
00a0: 7a 50 61 74 74 65 72 6e 73 20 3d 20 7b 0a 20 20  zPatterns = {.  
00b0: 20 20 2f 2f 20 41 6c 6c 20 72 65 67 65 78 70 73    // All regexps
00c0: 20 6d 75 73 74 20 73 74 61 72 74 20 77 69 74 68   must start with
00d0: 20 5e 2e 0a 20 20 20 20 22 64 65 66 61 75 6c 74   ^..    "default
00e0: 22 3a 0a 20 20 20 20 20 20 20 20 5b 0a 20 20 20  ":.        [.   
00f0: 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 20 c2 a0           [/^[ ..
0100: e2 80 af 5c 74 5d 2b 2f 2c 20 27 53 50 41 43 45  ...\t]+/, 'SPACE
0110: 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  '],.            
0120: 5b 2f 5e 5c 2f 28 3f 3a 7e 7c 62 69 6e 7c 62 6f  [/^\/(?:~|bin|bo
0130: 6f 74 7c 64 65 76 7c 65 74 63 7c 68 6f 6d 65 7c  ot|dev|etc|home|
0140: 6c 69 62 7c 6d 6e 74 7c 6f 70 74 7c 72 6f 6f 74  lib|mnt|opt|root
0150: 7c 73 62 69 6e 7c 74 6d 70 7c 75 73 72 7c 76 61  |sbin|tmp|usr|va
0160: 72 7c 42 75 72 65 61 75 7c 44 6f 63 75 6d 65 6e  r|Bureau|Documen
0170: 74 73 7c 49 6d 61 67 65 73 7c 4d 75 73 69 71 75  ts|Images|Musiqu
0180: 65 7c 50 75 62 6c 69 63 7c 54 c3 a9 6c c3 a9 63  e|Public|T..l..c
0190: 68 61 72 67 65 6d 65 6e 74 73 7c 56 69 64 c3 a9  hargements|Vid..
01a0: 6f 73 29 28 3f 3a 5c 2f 5b 61 2d 7a 41 2d 5a c3  os)(?:\/[a-zA-Z.
01b0: a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3  .-....-..0-9..-.
01c0: bf c3 98 2d c3 9f c4 80 2d ca af ef ac 81 2d ef  ...-....-.....-.
01d0: ac 86 5f 2e 28 29 2d 5d 2b 29 2a 2f 2c 20 27 46  .._.()-]+)*/, 'F
01e0: 4f 4c 44 45 52 55 4e 49 58 27 5d 2c 0a 20 20 20  OLDERUNIX'],.   
01f0: 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 61 2d 7a           [/^[a-z
0200: 41 2d 5a 5d 3a 5c 5c 28 3f 3a 50 72 6f 67 72 61  A-Z]:\\(?:Progra
0210: 6d 20 46 69 6c 65 73 28 3f 3a 20 5c 28 78 38 36  m Files(?: \(x86
0220: 5c 29 7c 29 7c 5b 61 2d 7a 41 2d 5a c3 a0 2d c3  \)|)|[a-zA-Z..-.
0230: b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98  ...-..0-9..-....
0240: 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac 86 2e  -....-.....-....
0250: 28 29 5d 2b 29 28 3f 3a 5c 5c 5b 61 2d 7a 41 2d  ()]+)(?:\\[a-zA-
0260: 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8  Z..-....-..0-9..
0270: 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 81  -....-....-.....
0280: 2d ef ac 86 5f 2e 28 29 2d 5d 2b 29 2a 2f 2c 20  -..._.()-]+)*/, 
0290: 27 46 4f 4c 44 45 52 57 49 4e 27 5d 2c 0a 20 20  'FOLDERWIN'],.  
02a0: 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 2c 2e            [/^[,.
02b0: 3b 3a 21 3f e2 80 a6 c2 ab c2 bb e2 80 9c e2 80  ;:!?............
02c0: 9d e2 80 98 e2 80 99 22 28 29 7b 7d 5c 5b 5c 5d  ......."(){}\[\]
02d0: c2 b7 e2 80 93 e2 80 94 5d 2f 2c 20 27 53 45 50  ........]/, 'SEP
02e0: 41 52 41 54 4f 52 27 5d 2c 0a 20 20 20 20 20 20  ARATOR'],.      
02f0: 20 20 20 20 20 20 5b 2f 5e 5b 41 2d 5a 5d 5b 2e        [/^[A-Z][.
0300: 5d 5b 41 2d 5a 5d 5b 2e 5d 28 3f 3a 5b 41 2d 5a  ][A-Z][.](?:[A-Z
0310: 5d 5b 2e 5d 29 2a 2f 2c 20 27 57 4f 52 44 5f 41  ][.])*/, 'WORD_A
0320: 43 52 4f 4e 59 4d 27 5d 2c 0a 20 20 20 20 20 20  CRONYM'],.      
0330: 20 20 20 20 20 20 5b 2f 5e 28 3f 3a 68 74 74 70        [/^(?:http
0340: 73 3f 3a 5c 2f 5c 2f 7c 77 77 77 5b 2e 5d 7c 5b  s?:\/\/|www[.]|[
0350: 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96  a-zA-Z..-....-..
0360: 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d  0-9..-....-....-
0370: ca af ef ac 81 2d ef ac 86 5f 2d 5d 2b 5b 40 2e  .....-..._-]+[@.
0380: 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d  ][a-zA-Z..-....-
0390: c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4  ..0-9..-....-...
03a0: 80 2d ca af ef ac 81 2d ef ac 86 5f 2d 5d 7b 32  .-.....-..._-]{2
03b0: 2c 7d 5b 40 2e 5d 29 5b 61 2d 7a 41 2d 5a 30 2d  ,}[@.])[a-zA-Z0-
03c0: 39 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80  9][a-zA-Z..-....
03d0: 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f  -..0-9..-....-..
03e0: c4 80 2d ca af ef ac 81 2d ef ac 86 5f 2e 5c 2f  ..-.....-..._.\/
03f0: 3f 26 21 25 3d 2b 2a 22 27 40 24 23 2d 5d 2b 2f  ?&!%=+*"'@$#-]+/
0400: 2c 20 27 4c 49 4e 4b 27 5d 2c 0a 20 20 20 20 20  , 'LINK'],.     
0410: 20 20 20 20 20 20 20 5b 2f 5e 5b 23 40 5d 5b 61         [/^[#@][a
0420: 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30  -zA-Z..-....-..0
0430: 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  -9..-....-....-.
0440: af ef ac 81 2d ef ac 86 5f 2d 5d 2b 2f 2c 20 27  ....-..._-]+/, '
0450: 54 41 47 27 5d 2c 0a 20 20 20 20 20 20 20 20 20  TAG'],.         
0460: 20 20 20 5b 2f 5e 3c 5b 61 2d 7a 41 2d 5a c3 a0     [/^<[a-zA-Z..
0470: 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf  -....-..0-9..-..
0480: c3 98 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac  ..-....-.....-..
0490: 86 5d 2b 2e 2a 3f 3e 7c 3c 5c 2f 5b 61 2d 7a 41  .]+.*?>|<\/[a-zA
04a0: 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3  -Z..-....-..0-9.
04b0: b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac  .-....-....-....
04c0: 81 2d ef ac 86 5d 2b 20 2a 3e 2f 2c 20 27 48 54  .-...]+ *>/, 'HT
04d0: 4d 4c 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  ML'],.          
04e0: 20 20 5b 2f 5e 5c 5b 5c 2f 3f 5b 61 2d 7a 41 2d    [/^\[\/?[a-zA-
04f0: 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8  Z..-....-..0-9..
0500: 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 81  -....-....-.....
0510: 2d ef ac 86 5d 2b 5c 5d 2f 2c 20 27 50 53 45 55  -...]+\]/, 'PSEU
0520: 44 4f 48 54 4d 4c 27 5d 2c 0a 20 20 20 20 20 20  DOHTML'],.      
0530: 20 20 20 20 20 20 5b 2f 5e 26 5c 77 2b 3b 28 3f        [/^&\w+;(?
0540: 3a 5c 77 2b 3b 7c 29 2f 2c 20 27 48 54 4d 4c 45  :\w+;|)/, 'HTMLE
0550: 4e 54 49 54 59 27 5d 2c 0a 20 20 20 20 20 20 20  NTITY'],.       
0560: 20 20 20 20 20 5b 2f 5e 5c 64 5c 64 3f 68 5c 64       [/^\d\d?h\d
0570: 5c 64 5c 62 2f 2c 20 27 48 4f 55 52 27 5d 2c 0a  \d\b/, 'HOUR'],.
0580: 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5c              [/^\
0590: 64 2b 28 3f 3a 5b 2e 2c 5d 5c 64 2b 7c 29 2f 2c  d+(?:[.,]\d+|)/,
05a0: 20 27 4e 55 4d 27 5d 2c 0a 20 20 20 20 20 20 20   'NUM'],.       
05b0: 20 20 20 20 20 5b 2f 5e 5b 25 e2 80 b0 2b 3d 2a       [/^[%...+=*
05c0: 2f 3c 3e e2 a9 be e2 a9 bd 2d 5d 2f 2c 20 27 53  /<>......-]/, 'S
05d0: 49 47 4e 27 5d 2c 0a 20 20 20 20 20 20 20 20 20  IGN'],.         
05e0: 20 20 20 5b 2f 5e 5b 61 2d 7a 41 2d 5a c3 a0 2d     [/^[a-zA-Z..-
05f0: c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3  ....-..0-9..-...
0600: 98 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac 86  .-....-.....-...
0610: e1 b4 80 2d e1 b6 bf 5f 5d 2b 28 3f 3a 5b e2 80  ...-..._]+(?:[..
0620: 99 27 60 2d 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3  .'`-][a-zA-Z..-.
0630: b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98  ...-..0-9..-....
0640: 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac 86 e1  -....-.....-....
0650: b4 80 2d e1 b6 bf 5f 5d 2b 29 2a 2f 2c 20 27 57  ..-..._]+)*/, 'W
0660: 4f 52 44 27 5d 0a 20 20 20 20 20 20 20 20 5d 2c  ORD'].        ],
0670: 0a 20 20 20 20 22 66 72 22 3a 0a 20 20 20 20 20  .    "fr":.     
0680: 20 20 20 5b 0a 20 20 20 20 20 20 20 20 20 20 20     [.           
0690: 20 5b 2f 5e 5b 20 c2 a0 e2 80 af 5c 74 5d 2b 2f   [/^[ .....\t]+/
06a0: 2c 20 27 53 50 41 43 45 27 5d 2c 0a 20 20 20 20  , 'SPACE'],.    
06b0: 20 20 20 20 20 20 20 20 5b 2f 5e 5c 2f 28 3f 3a          [/^\/(?:
06c0: 7e 7c 62 69 6e 7c 62 6f 6f 74 7c 64 65 76 7c 65  ~|bin|boot|dev|e
06d0: 74 63 7c 68 6f 6d 65 7c 6c 69 62 7c 6d 6e 74 7c  tc|home|lib|mnt|
06e0: 6f 70 74 7c 72 6f 6f 74 7c 73 62 69 6e 7c 74 6d  opt|root|sbin|tm
06f0: 70 7c 75 73 72 7c 76 61 72 7c 42 75 72 65 61 75  p|usr|var|Bureau
0700: 7c 44 6f 63 75 6d 65 6e 74 73 7c 49 6d 61 67 65  |Documents|Image
0710: 73 7c 4d 75 73 69 71 75 65 7c 50 75 62 6c 69 63  s|Musique|Public
0720: 7c 54 c3 a9 6c c3 a9 63 68 61 72 67 65 6d 65 6e  |T..l..chargemen
0730: 74 73 7c 56 69 64 c3 a9 6f 73 29 28 3f 3a 5c 2f  ts|Vid..os)(?:\/
0740: 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3  [a-zA-Z..-....-.
0750: 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80  .0-9..-....-....
0760: 2d ca af ef ac 81 2d ef ac 86 5f 2e 28 29 2d 5d  -.....-..._.()-]
0770: 2b 29 2a 2f 2c 20 27 46 4f 4c 44 45 52 55 4e 49  +)*/, 'FOLDERUNI
0780: 58 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  X'],.           
0790: 20 5b 2f 5e 5b 61 2d 7a 41 2d 5a 5d 3a 5c 5c 28   [/^[a-zA-Z]:\\(
07a0: 3f 3a 50 72 6f 67 72 61 6d 20 46 69 6c 65 73 28  ?:Program Files(
07b0: 3f 3a 20 5c 28 78 38 36 5c 29 7c 29 7c 5b 61 2d  ?: \(x86\)|)|[a-
07c0: 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d  zA-Z..-....-..0-
07d0: 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af  9..-....-....-..
07e0: ef ac 81 2d ef ac 86 2e 28 29 5d 2b 29 28 3f 3a  ...-....()]+)(?:
07f0: 5c 5c 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80  \\[a-zA-Z..-....
0800: 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f  -..0-9..-....-..
0810: c4 80 2d ca af ef ac 81 2d ef ac 86 5f 2e 28 29  ..-.....-..._.()
0820: 2d 5d 2b 29 2a 2f 2c 20 27 46 4f 4c 44 45 52 57  -]+)*/, 'FOLDERW
0830: 49 4e 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  IN'],.          
0840: 20 20 5b 2f 5e 5b 2c 2e 3b 3a 21 3f e2 80 a6 c2    [/^[,.;:!?....
0850: ab c2 bb e2 80 9c e2 80 9d e2 80 98 e2 80 99 22  ..............."
0860: 28 29 7b 7d 5c 5b 5c 5d c2 b7 e2 80 93 e2 80 94  (){}\[\]........
0870: 5d 2f 2c 20 27 53 45 50 41 52 41 54 4f 52 27 5d  ]/, 'SEPARATOR']
0880: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f  ,.            [/
0890: 5e 5b 41 2d 5a 5d 5b 2e 5d 5b 41 2d 5a 5d 5b 2e  ^[A-Z][.][A-Z][.
08a0: 5d 28 3f 3a 5b 41 2d 5a 5d 5b 2e 5d 29 2a 2f 2c  ](?:[A-Z][.])*/,
08b0: 20 27 57 4f 52 44 5f 41 43 52 4f 4e 59 4d 27 5d   'WORD_ACRONYM']
08c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f  ,.            [/
08d0: 5e 28 3f 3a 68 74 74 70 73 3f 3a 5c 2f 5c 2f 7c  ^(?:https?:\/\/|
08e0: 77 77 77 5b 2e 5d 7c 5b 61 2d 7a 41 2d 5a c3 a0  www[.]|[a-zA-Z..
08f0: 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf  -....-..0-9..-..
0900: c3 98 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac  ..-....-.....-..
0910: 86 5f 2d 5d 2b 5b 40 2e 5d 5b 61 2d 7a 41 2d 5a  ._-]+[@.][a-zA-Z
0920: c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d  ..-....-..0-9..-
0930: c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 81 2d  ....-....-.....-
0940: ef ac 86 5f 2d 5d 7b 32 2c 7d 5b 40 2e 5d 29 5b  ..._-]{2,}[@.])[
0950: 61 2d 7a 41 2d 5a 30 2d 39 5d 5b 61 2d 7a 41 2d  a-zA-Z0-9][a-zA-
0960: 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8  Z..-....-..0-9..
0970: 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 81  -....-....-.....
0980: 2d ef ac 86 5f 2e 5c 2f 3f 26 21 25 3d 2b 2a 22  -..._.\/?&!%=+*"
0990: 27 40 24 23 2d 5d 2b 2f 2c 20 27 4c 49 4e 4b 27  '@$#-]+/, 'LINK'
09a0: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ],.            [
09b0: 2f 5e 5b 23 40 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d  /^[#@][a-zA-Z..-
09c0: c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3  ....-..0-9..-...
09d0: 98 2d c3 9f c4 80 2d ca af ef ac 81 2d ef ac 86  .-....-.....-...
09e0: 5f 2d 5d 2b 2f 2c 20 27 54 41 47 27 5d 2c 0a 20  _-]+/, 'TAG'],. 
09f0: 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 3c 5b             [/^<[
0a00: 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96  a-zA-Z..-....-..
0a10: 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d  0-9..-....-....-
0a20: ca af ef ac 81 2d ef ac 86 5d 2b 2e 2a 3f 3e 7c  .....-...]+.*?>|
0a30: 3c 5c 2f 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3  <\/[a-zA-Z..-...
0a40: 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3  .-..0-9..-....-.
0a50: 9f c4 80 2d ca af ef ac 81 2d ef ac 86 5d 2b 20  ...-.....-...]+ 
0a60: 2a 3e 2f 2c 20 27 48 54 4d 4c 27 5d 2c 0a 20 20  *>/, 'HTML'],.  
0a70: 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5c 5b 5c            [/^\[\
0a80: 2f 3f 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80  /?[a-zA-Z..-....
0a90: 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f  -..0-9..-....-..
0aa0: c4 80 2d ca af ef ac 81 2d ef ac 86 5d 2b 5c 5d  ..-.....-...]+\]
0ab0: 2f 2c 20 27 50 53 45 55 44 4f 48 54 4d 4c 27 5d  /, 'PSEUDOHTML']
0ac0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f  ,.            [/
0ad0: 5e 26 5c 77 2b 3b 28 3f 3a 5c 77 2b 3b 7c 29 2f  ^&\w+;(?:\w+;|)/
0ae0: 2c 20 27 48 54 4d 4c 45 4e 54 49 54 59 27 5d 2c  , 'HTMLENTITY'],
0af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e  .            [/^
0b00: 28 3f 3a 6c 7c 64 7c 6e 7c 6d 7c 74 7c 73 7c 6a  (?:l|d|n|m|t|s|j
0b10: 7c 63 7c c3 a7 7c 6c 6f 72 73 71 75 7c 70 75 69  |c|..|lorsqu|pui
0b20: 73 71 75 7c 6a 75 73 71 75 7c 71 75 6f 69 71 75  squ|jusqu|quoiqu
0b30: 7c 71 75 29 5b 27 e2 80 99 60 5d 2f 69 2c 20 27  |qu)['...`]/i, '
0b40: 57 4f 52 44 5f 45 4c 49 44 45 44 27 5d 2c 0a 20  WORD_ELIDED'],. 
0b50: 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5c 64             [/^\d
0b60: 5c 64 3f 5b 68 6d 5d 5c 64 5c 64 5c 62 2f 2c 20  \d?[hm]\d\d\b/, 
0b70: 27 48 4f 55 52 27 5d 2c 0a 20 20 20 20 20 20 20  'HOUR'],.       
0b80: 20 20 20 20 20 5b 2f 5e 5c 64 2b 28 3f 3a 65 72       [/^\d+(?:er
0b90: 73 3f 5c 62 7c 6e 64 73 3f 5c 62 7c 65 73 3f 5c  s?\b|nds?\b|es?\
0ba0: 62 7c 64 65 73 3f 5c 62 7c 69 c3 a8 6d 65 73 3f  b|des?\b|i..mes?
0bb0: 5c 62 7c c3 a8 6d 65 73 3f 5c 62 7c 65 6d 65 73  \b|..mes?\b|emes
0bc0: 3f 5c 62 7c e1 b5 89 ca b3 cb a2 3f 7c e2 81 bf  ?\b|.......?|...
0bd0: e1 b5 88 cb a2 3f 7c e1 b5 89 cb a2 3f 7c e1 b5  .....?|.....?|..
0be0: 88 e1 b5 89 cb a2 3f 29 2f 2c 20 27 57 4f 52 44  ......?)/, 'WORD
0bf0: 5f 4f 52 44 49 4e 41 4c 27 5d 2c 0a 20 20 20 20  _ORDINAL'],.    
0c00: 20 20 20 20 20 20 20 20 5b 2f 5e 5c 64 2b 28 3f          [/^\d+(?
0c10: 3a 5b 2e 2c 5d 5c 64 2b 7c 29 2f 2c 20 27 4e 55  :[.,]\d+|)/, 'NU
0c20: 4d 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  M'],.           
0c30: 20 5b 2f 5e 5b 25 e2 80 b0 2b 3d 2a 2f 3c 3e e2   [/^[%...+=*/<>.
0c40: a9 be e2 a9 bd 2d 5d 2f 2c 20 27 53 49 47 4e 27  .....-]/, 'SIGN'
0c50: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ],.            [
0c60: 2f 5e 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80  /^[a-zA-Z..-....
0c70: 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f  -..0-9..-....-..
0c80: c4 80 2d ca af ef ac 81 2d ef ac 86 e1 b4 80 2d  ..-.....-......-
0c90: e1 b6 bf e1 b5 89 ca b3 cb a2 e2 81 bf e1 b5 88  ................
0ca0: 5f 5d 2b 28 3f 3a 5b e2 80 99 27 60 2d 5d 5b 61  _]+(?:[...'`-][a
0cb0: 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30  -zA-Z..-....-..0
0cc0: 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  -9..-....-....-.
0cd0: af ef ac 81 2d ef ac 86 e1 b4 80 2d e1 b6 bf e1  ....-......-....
0ce0: b5 89 ca b3 cb a2 e2 81 bf e1 b5 88 5f 5d 2b 29  ............_]+)
0cf0: 2a 2f 2c 20 27 57 4f 52 44 27 5d 0a 20 20 20 20  */, 'WORD'].    
0d00: 20 20 20 20 5d 0a 7d 3b 0a 0a 0a 63 6c 61 73 73      ].};...class
0d10: 20 54 6f 6b 65 6e 69 7a 65 72 20 7b 0a 0a 20 20   Tokenizer {..  
0d20: 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 28 73    constructor (s
0d30: 4c 61 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20  Lang) {.        
0d40: 74 68 69 73 2e 73 4c 61 6e 67 20 3d 20 73 4c 61  this.sLang = sLa
0d50: 6e 67 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ng;.        if (
0d60: 21 61 54 6b 7a 50 61 74 74 65 72 6e 73 2e 68 61  !aTkzPatterns.ha
0d70: 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 73 4c 61  sOwnProperty(sLa
0d80: 6e 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ng)) {.         
0d90: 20 20 20 74 68 69 73 2e 73 4c 61 6e 67 20 3d 20     this.sLang = 
0da0: 22 64 65 66 61 75 6c 74 22 3b 0a 20 20 20 20 20  "default";.     
0db0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69     }.        thi
0dc0: 73 2e 61 52 75 6c 65 73 20 3d 20 61 54 6b 7a 50  s.aRules = aTkzP
0dd0: 61 74 74 65 72 6e 73 5b 74 68 69 73 2e 73 4c 61  atterns[this.sLa
0de0: 6e 67 5d 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ng];.    }..    
0df0: 2a 20 67 65 6e 54 6f 6b 65 6e 73 20 28 73 54 65  * genTokens (sTe
0e00: 78 74 2c 20 62 53 74 61 72 74 45 6e 64 54 6f 6b  xt, bStartEndTok
0e10: 65 6e 3d 66 61 6c 73 65 2c 20 62 57 69 74 68 53  en=false, bWithS
0e20: 70 61 63 65 73 3d 66 61 6c 73 65 29 20 7b 0a 20  paces=false) {. 
0e30: 20 20 20 20 20 20 20 6c 65 74 20 6d 3b 0a 20 20         let m;.  
0e40: 20 20 20 20 20 20 6c 65 74 20 69 54 6f 6b 65 6e        let iToken
0e50: 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 6c 65   = 0;.        le
0e60: 74 20 69 4e 65 78 74 20 3d 20 30 3b 0a 20 20 20  t iNext = 0;.   
0e70: 20 20 20 20 20 6c 65 74 20 69 45 6e 64 20 3d 20       let iEnd = 
0e80: 73 54 65 78 74 2e 6c 65 6e 67 74 68 3b 0a 20 20  sText.length;.  
0e90: 20 20 20 20 20 20 69 66 20 28 62 53 74 61 72 74        if (bStart
0ea0: 45 6e 64 54 6f 6b 65 6e 29 20 7b 0a 20 20 20 20  EndToken) {.    
0eb0: 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 7b 20          yield { 
0ec0: 22 69 22 3a 20 30 2c 20 22 73 54 79 70 65 22 3a  "i": 0, "sType":
0ed0: 20 22 49 4e 46 4f 22 2c 20 22 73 56 61 6c 75 65   "INFO", "sValue
0ee0: 22 3a 20 22 3c 73 74 61 72 74 3e 22 2c 20 22 6e  ": "<start>", "n
0ef0: 53 74 61 72 74 22 3a 20 30 2c 20 22 6e 45 6e 64  Start": 0, "nEnd
0f00: 22 3a 20 30 2c 20 22 6c 4d 6f 72 70 68 22 3a 20  ": 0, "lMorph": 
0f10: 5b 22 3c 73 74 61 72 74 3e 22 5d 20 7d 3b 0a 20  ["<start>"] };. 
0f20: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
0f30: 20 77 68 69 6c 65 20 28 73 54 65 78 74 29 20 7b   while (sText) {
0f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
0f50: 20 69 43 75 74 20 3d 20 31 3b 0a 20 20 20 20 20   iCut = 1;.     
0f60: 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20         for (let 
0f70: 5b 7a 52 65 67 65 78 2c 20 73 54 79 70 65 5d 20  [zRegex, sType] 
0f80: 6f 66 20 74 68 69 73 2e 61 52 75 6c 65 73 29 20  of this.aRules) 
0f90: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
0fa0: 20 20 69 66 20 28 73 54 79 70 65 20 21 3d 3d 20    if (sType !== 
0fb0: 22 53 50 41 43 45 22 20 20 7c 7c 20 20 62 57 69  "SPACE"  ||  bWi
0fc0: 74 68 53 70 61 63 65 73 29 20 7b 0a 20 20 20 20  thSpaces) {.    
0fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fe0: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20  try {.          
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1000: 20 28 28 6d 20 3d 20 7a 52 65 67 65 78 2e 65 78   ((m = zRegex.ex
1010: 65 63 28 73 54 65 78 74 29 29 20 21 3d 3d 20 6e  ec(sText)) !== n
1020: 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ull) {.         
1030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1040: 20 20 20 69 54 6f 6b 65 6e 20 2b 3d 20 31 3b 0a     iToken += 1;.
1050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1060: 20 20 20 20 20 20 20 20 20 20 20 20 79 69 65 6c              yiel
1070: 64 20 7b 20 22 69 22 3a 20 69 54 6f 6b 65 6e 2c  d { "i": iToken,
1080: 20 22 73 54 79 70 65 22 3a 20 73 54 79 70 65 2c   "sType": sType,
1090: 20 22 73 56 61 6c 75 65 22 3a 20 6d 5b 30 5d 2c   "sValue": m[0],
10a0: 20 22 6e 53 74 61 72 74 22 3a 20 69 4e 65 78 74   "nStart": iNext
10b0: 2c 20 22 6e 45 6e 64 22 3a 20 69 4e 65 78 74 20  , "nEnd": iNext 
10c0: 2b 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 20 7d 3b  + m[0].length };
10d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 75               iCu
10f0: 74 20 3d 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 3b  t = m[0].length;
1100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1110: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
1120: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ak;.            
1130: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
1140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1150: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
1160: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65          catch (e
1170: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1180: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
1190: 6f 6c 65 2e 65 72 72 6f 72 28 65 29 3b 0a 20 20  ole.error(e);.  
11a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
11c0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
11d0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
11e0: 69 4e 65 78 74 20 2b 3d 20 69 43 75 74 3b 0a 20  iNext += iCut;. 
11f0: 20 20 20 20 20 20 20 20 20 20 20 73 54 65 78 74             sText
1200: 20 3d 20 73 54 65 78 74 2e 73 6c 69 63 65 28 69   = sText.slice(i
1210: 43 75 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  Cut);.        }.
1220: 20 20 20 20 20 20 20 20 69 66 20 28 62 53 74 61          if (bSta
1230: 72 74 45 6e 64 54 6f 6b 65 6e 29 20 7b 0a 20 20  rtEndToken) {.  
1240: 20 20 20 20 20 20 20 20 20 20 79 69 65 6c 64 20            yield 
1250: 7b 20 22 69 22 3a 20 69 54 6f 6b 65 6e 2b 31 2c  { "i": iToken+1,
1260: 20 22 73 54 79 70 65 22 3a 20 22 49 4e 46 4f 22   "sType": "INFO"
1270: 2c 20 22 73 56 61 6c 75 65 22 3a 20 22 3c 65 6e  , "sValue": "<en
1280: 64 3e 22 2c 20 22 6e 53 74 61 72 74 22 3a 20 69  d>", "nStart": i
1290: 45 6e 64 2c 20 22 6e 45 6e 64 22 3a 20 69 45 6e  End, "nEnd": iEn
12a0: 64 2c 20 22 6c 4d 6f 72 70 68 22 3a 20 5b 22 3c  d, "lMorph": ["<
12b0: 65 6e 64 3e 22 5d 20 7d 3b 0a 20 20 20 20 20 20  end>"] };.      
12c0: 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 69 66    }.    }.}...if
12d0: 20 28 74 79 70 65 6f 66 28 65 78 70 6f 72 74 73   (typeof(exports
12e0: 29 20 21 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64  ) !== 'undefined
12f0: 27 29 20 7b 0a 20 20 20 20 65 78 70 6f 72 74 73  ') {.    exports
1300: 2e 54 6f 6b 65 6e 69 7a 65 72 20 3d 20 54 6f 6b  .Tokenizer = Tok
1310: 65 6e 69 7a 65 72 3b 0a 7d 0a                    enizer;.}.