Grammalecte  Hex Artifact Content

Artifact 2f6a31a87ab04a4b21c1ab879c1971733c23eac32b451a9fce0e35e612a8d8c1:


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 80 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 80 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 80  -....-....-.....
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 c2 bf c2 a1 5d 2f 2c 20  ............]/, 
02e0: 27 50 55 4e 43 27 5d 2c 0a 20 20 20 20 20 20 20  'PUNC'],.       
02f0: 20 20 20 20 20 5b 2f 5e 5b 41 2d 5a 5d 5b 2e 5d       [/^[A-Z][.]
0300: 5b 41 2d 5a 5d 5b 2e 5d 28 3f 3a 5b 41 2d 5a 5d  [A-Z][.](?:[A-Z]
0310: 5b 2e 5d 29 2a 2f 2c 20 27 57 4f 52 44 5f 41 43  [.])*/, 'WORD_AC
0320: 52 4f 4e 59 4d 27 5d 2c 0a 20 20 20 20 20 20 20  RONYM'],.       
0330: 20 20 20 20 20 5b 2f 5e 28 3f 3a 68 74 74 70 73       [/^(?:https
0340: 3f 3a 5c 2f 5c 2f 7c 77 77 77 5b 2e 5d 7c 5b 61  ?:\/\/|www[.]|[a
0350: 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30  -zA-Z..-....-..0
0360: 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  -9..-....-....-.
0370: af ef ac 80 2d ef ac 86 5f 2d 5d 2b 5b 40 2e 5d  ....-..._-]+[@.]
0380: 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3  [a-zA-Z..-....-.
0390: 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80  .0-9..-....-....
03a0: 2d ca af ef ac 80 2d ef ac 86 5f 2d 5d 7b 32 2c  -.....-..._-]{2,
03b0: 7d 5b 40 2e 5d 29 5b 61 2d 7a 41 2d 5a 30 2d 39  }[@.])[a-zA-Z0-9
03c0: 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d  ][a-zA-Z..-....-
03d0: c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4  ..0-9..-....-...
03e0: 80 2d ca af ef ac 80 2d ef ac 86 5f 2e 5c 2f 3f  .-.....-..._.\/?
03f0: 26 21 25 3d 2b 2a 22 27 40 24 23 2d 5d 2b 2f 2c  &!%=+*"'@$#-]+/,
0400: 20 27 4c 49 4e 4b 27 5d 2c 0a 20 20 20 20 20 20   'LINK'],.      
0410: 20 20 20 20 20 20 5b 2f 5e 5b 23 40 5d 5b 61 2d        [/^[#@][a-
0420: 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d  zA-Z..-....-..0-
0430: 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af  9..-....-....-..
0440: ef ac 80 2d ef ac 86 5f 2d 5d 2b 2f 2c 20 27 54  ...-..._-]+/, 'T
0450: 41 47 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  AG'],.          
0460: 20 20 5b 2f 5e 3c 5b 61 2d 7a 41 2d 5a c3 a0 2d    [/^<[a-zA-Z..-
0470: c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3  ....-..0-9..-...
0480: 98 2d c3 9f c4 80 2d ca af ef ac 80 2d ef ac 86  .-....-.....-...
0490: 5d 2b 2e 2a 3f 3e 7c 3c 5c 2f 5b 61 2d 7a 41 2d  ]+.*?>|<\/[a-zA-
04a0: 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8  Z..-....-..0-9..
04b0: 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 80  -....-....-.....
04c0: 2d ef ac 86 5d 2b 20 2a 3e 2f 2c 20 27 48 54 4d  -...]+ *>/, 'HTM
04d0: 4c 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  L'],.           
04e0: 20 5b 2f 5e 5c 5b 5c 2f 3f 5b 61 2d 7a 41 2d 5a   [/^\[\/?[a-zA-Z
04f0: c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d  ..-....-..0-9..-
0500: c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 80 2d  ....-....-.....-
0510: ef ac 86 5d 2b 5c 5d 2f 2c 20 27 50 53 45 55 44  ...]+\]/, 'PSEUD
0520: 4f 48 54 4d 4c 27 5d 2c 0a 20 20 20 20 20 20 20  OHTML'],.       
0530: 20 20 20 20 20 5b 2f 5e 26 5c 77 2b 3b 28 3f 3a       [/^&\w+;(?:
0540: 5c 77 2b 3b 7c 29 2f 2c 20 27 48 54 4d 4c 45 4e  \w+;|)/, 'HTMLEN
0550: 54 49 54 59 27 5d 2c 0a 20 20 20 20 20 20 20 20  TITY'],.        
0560: 20 20 20 20 5b 2f 5e 5c 64 5c 64 3f 5b 68 3a 5d      [/^\d\d?[h:]
0570: 5c 64 5c 64 28 3f 3a 5b 6d 3a 5d 5c 64 5c 64 73  \d\d(?:[m:]\d\ds
0580: 3f 7c 29 5c 62 2f 2c 20 27 48 4f 55 52 27 5d 2c  ?|)\b/, 'HOUR'],
0590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e  .            [/^
05a0: 5c 64 2b 28 3f 3a 5b 2e 2c 5d 5c 64 2b 7c 29 2f  \d+(?:[.,]\d+|)/
05b0: 2c 20 27 4e 55 4d 27 5d 2c 0a 20 20 20 20 20 20  , 'NUM'],.      
05c0: 20 20 20 20 20 20 5b 2f 5e 5b 26 25 e2 80 b0 e2        [/^[&%....
05d0: 82 ac 24 2b c2 b1 3d 2a 2f 3c 3e e2 a9 be e2 a9  ..$+..=*/<>.....
05e0: bd 23 7c c3 97 c2 a5 c2 a3 c2 a7 c2 a2 c2 ac c3  .#|.............
05f0: b7 40 2d 5d 2f 2c 20 27 53 49 47 4e 27 5d 2c 0a  .@-]/, 'SIGN'],.
0600: 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b              [/^[
0610: 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96  a-zA-Z..-....-..
0620: 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d  0-9..-....-....-
0630: ca af ef ac 80 2d ef ac 86 e1 b4 80 2d e1 b6 bf  .....-......-...
0640: 5f 5d 2b 28 3f 3a 5b e2 80 99 27 60 2d 5d 5b 61  _]+(?:[...'`-][a
0650: 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30  -zA-Z..-....-..0
0660: 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  -9..-....-....-.
0670: af ef ac 80 2d ef ac 86 e1 b4 80 2d e1 b6 bf 5f  ....-......-..._
0680: 5d 2b 29 2a 2f 2c 20 27 57 4f 52 44 27 5d 0a 20  ]+)*/, 'WORD']. 
0690: 20 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 22 66         ],.    "f
06a0: 72 22 3a 0a 20 20 20 20 20 20 20 20 5b 0a 20 20  r":.        [.  
06b0: 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 20 c2            [/^[ .
06c0: a0 e2 80 af 5c 74 5d 2b 2f 2c 20 27 53 50 41 43  ....\t]+/, 'SPAC
06d0: 45 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  E'],.           
06e0: 20 5b 2f 5e 5c 2f 28 3f 3a 7e 7c 62 69 6e 7c 62   [/^\/(?:~|bin|b
06f0: 6f 6f 74 7c 64 65 76 7c 65 74 63 7c 68 6f 6d 65  oot|dev|etc|home
0700: 7c 6c 69 62 7c 6d 6e 74 7c 6f 70 74 7c 72 6f 6f  |lib|mnt|opt|roo
0710: 74 7c 73 62 69 6e 7c 74 6d 70 7c 75 73 72 7c 76  t|sbin|tmp|usr|v
0720: 61 72 7c 42 75 72 65 61 75 7c 44 6f 63 75 6d 65  ar|Bureau|Docume
0730: 6e 74 73 7c 49 6d 61 67 65 73 7c 4d 75 73 69 71  nts|Images|Musiq
0740: 75 65 7c 50 75 62 6c 69 63 7c 54 c3 a9 6c c3 a9  ue|Public|T..l..
0750: 63 68 61 72 67 65 6d 65 6e 74 73 7c 56 69 64 c3  chargements|Vid.
0760: a9 6f 73 29 28 3f 3a 5c 2f 5b 61 2d 7a 41 2d 5a  .os)(?:\/[a-zA-Z
0770: c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d  ..-....-..0-9..-
0780: c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 80 2d  ....-....-.....-
0790: ef ac 86 5f 2e 28 29 2d 5d 2b 29 2a 2f 2c 20 27  ..._.()-]+)*/, '
07a0: 46 4f 4c 44 45 52 55 4e 49 58 27 5d 2c 0a 20 20  FOLDERUNIX'],.  
07b0: 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 61 2d            [/^[a-
07c0: 7a 41 2d 5a 5d 3a 5c 5c 28 3f 3a 50 72 6f 67 72  zA-Z]:\\(?:Progr
07d0: 61 6d 20 46 69 6c 65 73 28 3f 3a 20 5c 28 78 38  am Files(?: \(x8
07e0: 36 5c 29 7c 29 7c 5b 61 2d 7a 41 2d 5a c3 a0 2d  6\)|)|[a-zA-Z..-
07f0: c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3  ....-..0-9..-...
0800: 98 2d c3 9f c4 80 2d ca af ef ac 80 2d ef ac 86  .-....-.....-...
0810: 2e 28 29 5d 2b 29 28 3f 3a 5c 5c 5b 61 2d 7a 41  .()]+)(?:\\[a-zA
0820: 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3  -Z..-....-..0-9.
0830: b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac  .-....-....-....
0840: 80 2d ef ac 86 5f 2e 28 29 2d 5d 2b 29 2a 2f 2c  .-..._.()-]+)*/,
0850: 20 27 46 4f 4c 44 45 52 57 49 4e 27 5d 2c 0a 20   'FOLDERWIN'],. 
0860: 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5b 2c             [/^[,
0870: 2e 3b 3a 21 3f e2 80 a6 c2 ab c2 bb e2 80 9c e2  .;:!?...........
0880: 80 9d e2 80 98 e2 80 99 22 28 29 7b 7d 5c 5b 5c  ........"(){}\[\
0890: 5d c2 b7 e2 80 93 e2 80 94 c2 bf c2 a1 5d 2f 2c  ]............]/,
08a0: 20 27 50 55 4e 43 27 5d 2c 0a 20 20 20 20 20 20   'PUNC'],.      
08b0: 20 20 20 20 20 20 5b 2f 5e 5b 41 2d 5a 5d 5b 2e        [/^[A-Z][.
08c0: 5d 5b 41 2d 5a 5d 5b 2e 5d 28 3f 3a 5b 41 2d 5a  ][A-Z][.](?:[A-Z
08d0: 5d 5b 2e 5d 29 2a 2f 2c 20 27 57 4f 52 44 5f 41  ][.])*/, 'WORD_A
08e0: 43 52 4f 4e 59 4d 27 5d 2c 0a 20 20 20 20 20 20  CRONYM'],.      
08f0: 20 20 20 20 20 20 5b 2f 5e 28 3f 3a 68 74 74 70        [/^(?:http
0900: 73 3f 3a 5c 2f 5c 2f 7c 77 77 77 5b 2e 5d 7c 5b  s?:\/\/|www[.]|[
0910: 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96  a-zA-Z..-....-..
0920: 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d  0-9..-....-....-
0930: ca af ef ac 80 2d ef ac 86 5f 2d 5d 2b 5b 40 2e  .....-..._-]+[@.
0940: 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d  ][a-zA-Z..-....-
0950: c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4  ..0-9..-....-...
0960: 80 2d ca af ef ac 80 2d ef ac 86 5f 2d 5d 7b 32  .-.....-..._-]{2
0970: 2c 7d 5b 40 2e 5d 29 5b 61 2d 7a 41 2d 5a 30 2d  ,}[@.])[a-zA-Z0-
0980: 39 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80  9][a-zA-Z..-....
0990: 2d c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f  -..0-9..-....-..
09a0: c4 80 2d ca af ef ac 80 2d ef ac 86 5f 2e 5c 2f  ..-.....-..._.\/
09b0: 3f 26 21 25 3d 2b 2a 22 27 40 24 23 2d 5d 2b 2f  ?&!%=+*"'@$#-]+/
09c0: 2c 20 27 4c 49 4e 4b 27 5d 2c 0a 20 20 20 20 20  , 'LINK'],.     
09d0: 20 20 20 20 20 20 20 5b 2f 5e 5b 23 40 5d 5b 61         [/^[#@][a
09e0: 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30  -zA-Z..-....-..0
09f0: 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  -9..-....-....-.
0a00: af ef ac 80 2d ef ac 86 5f 2d 5d 2b 2f 2c 20 27  ....-..._-]+/, '
0a10: 54 41 47 27 5d 2c 0a 20 20 20 20 20 20 20 20 20  TAG'],.         
0a20: 20 20 20 5b 2f 5e 3c 5b 61 2d 7a 41 2d 5a c3 a0     [/^<[a-zA-Z..
0a30: 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8 2d c3 bf  -....-..0-9..-..
0a40: c3 98 2d c3 9f c4 80 2d ca af ef ac 80 2d ef ac  ..-....-.....-..
0a50: 86 5d 2b 2e 2a 3f 3e 7c 3c 5c 2f 5b 61 2d 7a 41  .]+.*?>|<\/[a-zA
0a60: 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3  -Z..-....-..0-9.
0a70: b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac  .-....-....-....
0a80: 80 2d ef ac 86 5d 2b 20 2a 3e 2f 2c 20 27 48 54  .-...]+ *>/, 'HT
0a90: 4d 4c 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  ML'],.          
0aa0: 20 20 5b 2f 5e 5c 5b 5c 2f 3f 5b 61 2d 7a 41 2d    [/^\[\/?[a-zA-
0ab0: 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d 39 c3 b8  Z..-....-..0-9..
0ac0: 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af ef ac 80  -....-....-.....
0ad0: 2d ef ac 86 5d 2b 5c 5d 2f 2c 20 27 50 53 45 55  -...]+\]/, 'PSEU
0ae0: 44 4f 48 54 4d 4c 27 5d 2c 0a 20 20 20 20 20 20  DOHTML'],.      
0af0: 20 20 20 20 20 20 5b 2f 5e 26 5c 77 2b 3b 28 3f        [/^&\w+;(?
0b00: 3a 5c 77 2b 3b 7c 29 2f 2c 20 27 48 54 4d 4c 45  :\w+;|)/, 'HTMLE
0b10: 4e 54 49 54 59 27 5d 2c 0a 20 20 20 20 20 20 20  NTITY'],.       
0b20: 20 20 20 20 20 5b 2f 5e 28 3f 3a 6c 7c 64 7c 6e       [/^(?:l|d|n
0b30: 7c 6d 7c 74 7c 73 7c 6a 7c 63 7c c3 a7 7c 6c 6f  |m|t|s|j|c|..|lo
0b40: 72 73 71 75 7c 70 75 69 73 71 75 7c 6a 75 73 71  rsqu|puisqu|jusq
0b50: 75 7c 71 75 6f 69 71 75 7c 71 75 29 5b 27 e2 80  u|quoiqu|qu)['..
0b60: 99 60 5d 2f 69 2c 20 27 57 4f 52 44 5f 45 4c 49  .`]/i, 'WORD_ELI
0b70: 44 45 44 27 5d 2c 0a 20 20 20 20 20 20 20 20 20  DED'],.         
0b80: 20 20 20 5b 2f 5e 5c 64 5c 64 3f 5b 68 3a 5d 5c     [/^\d\d?[h:]\
0b90: 64 5c 64 28 3f 3a 5b 6d 3a 5d 5c 64 5c 64 73 3f  d\d(?:[m:]\d\ds?
0ba0: 7c 29 5c 62 2f 2c 20 27 48 4f 55 52 27 5d 2c 0a  |)\b/, 'HOUR'],.
0bb0: 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f 5e 5c              [/^\
0bc0: 64 2b 28 3f 3a 65 72 73 3f 5c 62 7c 72 65 73 3f  d+(?:ers?\b|res?
0bd0: 5c 62 7c c3 a8 5b 72 6d 5d 65 73 3f 5c 62 7c 69  \b|..[rm]es?\b|i
0be0: 5b c3 a8 65 5d 5b 6d 72 5d 65 73 3f 5c 62 7c 64  [..e][mr]es?\b|d
0bf0: 65 3f 73 3f 5c 62 7c 6e 64 65 3f 73 3f 5c 62 7c  e?s?\b|nde?s?\b|
0c00: c3 a8 73 3f 5c 62 7c 65 73 3f 5c 62 7c e1 b5 89  ..s?\b|es?\b|...
0c10: ca b3 cb a2 3f 7c ca b3 e1 b5 89 cb a2 3f 7c e1  ....?|.......?|.
0c20: b5 88 e1 b5 89 3f cb a2 3f 7c e2 81 bf e1 b5 88  .....?..?|......
0c30: e1 b5 89 3f cb a2 3f 7c e1 b5 89 cb a2 3f 29 2f  ...?..?|.....?)/
0c40: 2c 20 27 57 4f 52 44 5f 4f 52 44 49 4e 41 4c 27  , 'WORD_ORDINAL'
0c50: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ],.            [
0c60: 2f 5e 5c 64 2b 28 3f 3a 5b 2e 2c 5d 5c 64 2b 7c  /^\d+(?:[.,]\d+|
0c70: 29 2f 2c 20 27 4e 55 4d 27 5d 2c 0a 20 20 20 20  )/, 'NUM'],.    
0c80: 20 20 20 20 20 20 20 20 5b 2f 5e 5b 26 25 e2 80          [/^[&%..
0c90: b0 e2 82 ac 24 2b c2 b1 3d 2a 2f 3c 3e e2 a9 be  ....$+..=*/<>...
0ca0: e2 a9 bd 23 7c c3 97 c2 a5 c2 a3 c2 a7 c2 a2 c2  ...#|...........
0cb0: ac c3 b7 40 2d 5d 2f 2c 20 27 53 49 47 4e 27 5d  ...@-]/, 'SIGN']
0cc0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 2f  ,.            [/
0cd0: 5e 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d  ^[a-zA-Z..-....-
0ce0: c3 96 30 2d 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4  ..0-9..-....-...
0cf0: 80 2d ca af ef ac 80 2d ef ac 86 e1 b4 80 2d e1  .-.....-......-.
0d00: b6 bf e1 b5 89 ca b3 cb a2 e2 81 bf e1 b5 88 5f  ..............._
0d10: 5d 2b 28 3f 3a 5b e2 80 99 27 60 2d 5d 5b 61 2d  ]+(?:[...'`-][a-
0d20: 7a 41 2d 5a c3 a0 2d c3 b6 c3 80 2d c3 96 30 2d  zA-Z..-....-..0-
0d30: 39 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca af  9..-....-....-..
0d40: ef ac 80 2d ef ac 86 e1 b4 80 2d e1 b6 bf e1 b5  ...-......-.....
0d50: 89 ca b3 cb a2 e2 81 bf e1 b5 88 5f 5d 2b 29 2a  ..........._]+)*
0d60: 2f 2c 20 27 57 4f 52 44 27 5d 0a 20 20 20 20 20  /, 'WORD'].     
0d70: 20 20 20 5d 0a 7d 3b 0a 0a 0a 63 6c 61 73 73 20     ].};...class 
0d80: 54 6f 6b 65 6e 69 7a 65 72 20 7b 0a 0a 20 20 20  Tokenizer {..   
0d90: 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 28 73 4c   constructor (sL
0da0: 61 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 74  ang) {.        t
0db0: 68 69 73 2e 73 4c 61 6e 67 20 3d 20 73 4c 61 6e  his.sLang = sLan
0dc0: 67 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  g;.        if (!
0dd0: 61 54 6b 7a 50 61 74 74 65 72 6e 73 2e 68 61 73  aTkzPatterns.has
0de0: 4f 77 6e 50 72 6f 70 65 72 74 79 28 73 4c 61 6e  OwnProperty(sLan
0df0: 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  g)) {.          
0e00: 20 20 74 68 69 73 2e 73 4c 61 6e 67 20 3d 20 22    this.sLang = "
0e10: 64 65 66 61 75 6c 74 22 3b 0a 20 20 20 20 20 20  default";.      
0e20: 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69 73    }.        this
0e30: 2e 61 52 75 6c 65 73 20 3d 20 61 54 6b 7a 50 61  .aRules = aTkzPa
0e40: 74 74 65 72 6e 73 5b 74 68 69 73 2e 73 4c 61 6e  tterns[this.sLan
0e50: 67 5d 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2a  g];.    }..    *
0e60: 20 67 65 6e 54 6f 6b 65 6e 73 20 28 73 54 65 78   genTokens (sTex
0e70: 74 2c 20 62 53 74 61 72 74 45 6e 64 54 6f 6b 65  t, bStartEndToke
0e80: 6e 3d 66 61 6c 73 65 2c 20 62 57 69 74 68 53 70  n=false, bWithSp
0e90: 61 63 65 73 3d 66 61 6c 73 65 29 20 7b 0a 20 20  aces=false) {.  
0ea0: 20 20 20 20 20 20 6c 65 74 20 6d 3b 0a 20 20 20        let m;.   
0eb0: 20 20 20 20 20 6c 65 74 20 69 54 6f 6b 65 6e 20       let iToken 
0ec0: 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 6c 65 74  = 0;.        let
0ed0: 20 69 4e 65 78 74 20 3d 20 30 3b 0a 20 20 20 20   iNext = 0;.    
0ee0: 20 20 20 20 6c 65 74 20 69 45 6e 64 20 3d 20 73      let iEnd = s
0ef0: 54 65 78 74 2e 6c 65 6e 67 74 68 3b 0a 20 20 20  Text.length;.   
0f00: 20 20 20 20 20 69 66 20 28 62 53 74 61 72 74 45       if (bStartE
0f10: 6e 64 54 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20  ndToken) {.     
0f20: 20 20 20 20 20 20 20 79 69 65 6c 64 20 7b 20 22         yield { "
0f30: 69 22 3a 20 30 2c 20 22 73 54 79 70 65 22 3a 20  i": 0, "sType": 
0f40: 22 49 4e 46 4f 22 2c 20 22 73 56 61 6c 75 65 22  "INFO", "sValue"
0f50: 3a 20 22 3c 73 74 61 72 74 3e 22 2c 20 22 6e 53  : "<start>", "nS
0f60: 74 61 72 74 22 3a 20 30 2c 20 22 6e 45 6e 64 22  tart": 0, "nEnd"
0f70: 3a 20 30 2c 20 22 6c 4d 6f 72 70 68 22 3a 20 5b  : 0, "lMorph": [
0f80: 22 3c 73 74 61 72 74 3e 22 5d 20 7d 3b 0a 20 20  "<start>"] };.  
0f90: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
0fa0: 77 68 69 6c 65 20 28 73 54 65 78 74 29 20 7b 0a  while (sText) {.
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
0fc0: 69 43 75 74 20 3d 20 31 3b 0a 20 20 20 20 20 20  iCut = 1;.      
0fd0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 5b        for (let [
0fe0: 7a 52 65 67 65 78 2c 20 73 54 79 70 65 5d 20 6f  zRegex, sType] o
0ff0: 66 20 74 68 69 73 2e 61 52 75 6c 65 73 29 20 7b  f this.aRules) {
1000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1010: 20 69 66 20 28 73 54 79 70 65 20 21 3d 3d 20 22   if (sType !== "
1020: 53 50 41 43 45 22 20 20 7c 7c 20 20 62 57 69 74  SPACE"  ||  bWit
1030: 68 53 70 61 63 65 73 29 20 7b 0a 20 20 20 20 20  hSpaces) {.     
1040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1050: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
1060: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1070: 28 28 6d 20 3d 20 7a 52 65 67 65 78 2e 65 78 65  ((m = zRegex.exe
1080: 63 28 73 54 65 78 74 29 29 20 21 3d 3d 20 6e 75  c(sText)) !== nu
1090: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ll) {.          
10a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b0: 20 20 69 54 6f 6b 65 6e 20 2b 3d 20 31 3b 0a 20    iToken += 1;. 
10c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d0: 20 20 20 20 20 20 20 20 20 20 20 79 69 65 6c 64             yield
10e0: 20 7b 20 22 69 22 3a 20 69 54 6f 6b 65 6e 2c 20   { "i": iToken, 
10f0: 22 73 54 79 70 65 22 3a 20 73 54 79 70 65 2c 20  "sType": sType, 
1100: 22 73 56 61 6c 75 65 22 3a 20 6d 5b 30 5d 2c 20  "sValue": m[0], 
1110: 22 6e 53 74 61 72 74 22 3a 20 69 4e 65 78 74 2c  "nStart": iNext,
1120: 20 22 6e 45 6e 64 22 3a 20 69 4e 65 78 74 20 2b   "nEnd": iNext +
1130: 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 20 7d 3b 0a   m[0].length };.
1140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1150: 20 20 20 20 20 20 20 20 20 20 20 20 69 43 75 74              iCut
1160: 20 3d 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0a   = m[0].length;.
1170: 20 20 20 20 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 62 72 65 61              brea
1190: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  k;.             
11a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
11d0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29         catch (e)
11e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
11f0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f             conso
1200: 6c 65 2e 65 72 72 6f 72 28 65 29 3b 0a 20 20 20  le.error(e);.   
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1220: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
1230: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
1240: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69   }.            i
1250: 4e 65 78 74 20 2b 3d 20 69 43 75 74 3b 0a 20 20  Next += iCut;.  
1260: 20 20 20 20 20 20 20 20 20 20 73 54 65 78 74 20            sText 
1270: 3d 20 73 54 65 78 74 2e 73 6c 69 63 65 28 69 43  = sText.slice(iC
1280: 75 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  ut);.        }. 
1290: 20 20 20 20 20 20 20 69 66 20 28 62 53 74 61 72         if (bStar
12a0: 74 45 6e 64 54 6f 6b 65 6e 29 20 7b 0a 20 20 20  tEndToken) {.   
12b0: 20 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 7b           yield {
12c0: 20 22 69 22 3a 20 69 54 6f 6b 65 6e 2b 31 2c 20   "i": iToken+1, 
12d0: 22 73 54 79 70 65 22 3a 20 22 49 4e 46 4f 22 2c  "sType": "INFO",
12e0: 20 22 73 56 61 6c 75 65 22 3a 20 22 3c 65 6e 64   "sValue": "<end
12f0: 3e 22 2c 20 22 6e 53 74 61 72 74 22 3a 20 69 45  >", "nStart": iE
1300: 6e 64 2c 20 22 6e 45 6e 64 22 3a 20 69 45 6e 64  nd, "nEnd": iEnd
1310: 2c 20 22 6c 4d 6f 72 70 68 22 3a 20 5b 22 3c 65  , "lMorph": ["<e
1320: 6e 64 3e 22 5d 20 7d 3b 0a 20 20 20 20 20 20 20  nd>"] };.       
1330: 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 69 66 20   }.    }.}...if 
1340: 28 74 79 70 65 6f 66 28 65 78 70 6f 72 74 73 29  (typeof(exports)
1350: 20 21 3d 3d 20 27 75 6e 64 65 66 69 6e 65 64 27   !== 'undefined'
1360: 29 20 7b 0a 20 20 20 20 65 78 70 6f 72 74 73 2e  ) {.    exports.
1370: 54 6f 6b 65 6e 69 7a 65 72 20 3d 20 54 6f 6b 65  Tokenizer = Toke
1380: 6e 69 7a 65 72 3b 0a 7d 0a                       nizer;.}.