0000: ef bb bf 2f 2a 21 0d 0a 20 2a 20 4a 53 48 69 6e .../*!.. * JSHin
0010: 74 2c 20 62 79 20 4a 53 48 69 6e 74 20 43 6f 6d t, by JSHint Com
0020: 6d 75 6e 69 74 79 2e 0d 0a 20 2a 0d 0a 20 2a 20 munity... *.. *
0030: 4c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 Licensed under t
0040: 68 65 20 73 61 6d 65 20 73 6c 69 67 68 74 6c 79 he same slightly
0050: 20 6d 6f 64 69 66 69 65 64 20 4d 49 54 20 6c 69 modified MIT li
0060: 63 65 6e 73 65 20 74 68 61 74 20 4a 53 4c 69 6e cense that JSLin
0070: 74 20 69 73 2e 0d 0a 20 2a 20 49 74 20 73 74 6f t is... * It sto
0080: 70 73 20 65 76 69 6c 2d 64 6f 65 72 73 20 65 76 ps evil-doers ev
0090: 65 72 79 77 68 65 72 65 2e 0d 0a 20 2a 0d 0a 20 erywhere... *..
00a0: 2a 20 4a 53 48 69 6e 74 20 69 73 20 61 20 64 65 * JSHint is a de
00b0: 72 69 76 61 74 69 76 65 20 77 6f 72 6b 20 6f 66 rivative work of
00c0: 20 4a 53 4c 69 6e 74 3a 0d 0a 20 2a 0d 0a 20 2a JSLint:.. *.. *
00d0: 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 Copyright (c)
00e0: 20 32 30 30 32 20 44 6f 75 67 6c 61 73 20 43 72 2002 Douglas Cr
00f0: 6f 63 6b 66 6f 72 64 20 20 28 77 77 77 2e 4a 53 ockford (www.JS
0100: 4c 69 6e 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20 Lint.com).. *..
0110: 2a 20 20 20 50 65 72 6d 69 73 73 69 6f 6e 20 69 * Permission i
0120: 73 20 68 65 72 65 62 79 20 67 72 61 6e 74 65 64 s hereby granted
0130: 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65 , free of charge
0140: 2c 20 74 6f 20 61 6e 79 20 70 65 72 73 6f 6e 20 , to any person
0150: 6f 62 74 61 69 6e 69 6e 67 0d 0a 20 2a 20 20 20 obtaining.. *
0160: 61 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 73 a copy of this s
0170: 6f 66 74 77 61 72 65 20 61 6e 64 20 61 73 73 6f oftware and asso
0180: 63 69 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61 ciated documenta
0190: 74 69 6f 6e 20 66 69 6c 65 73 20 28 74 68 65 20 tion files (the
01a0: 22 53 6f 66 74 77 61 72 65 22 29 2c 0d 0a 20 2a "Software"),.. *
01b0: 20 20 20 74 6f 20 64 65 61 6c 20 69 6e 20 74 68 to deal in th
01c0: 65 20 53 6f 66 74 77 61 72 65 20 77 69 74 68 6f e Software witho
01d0: 75 74 20 72 65 73 74 72 69 63 74 69 6f 6e 2c 20 ut restriction,
01e0: 69 6e 63 6c 75 64 69 6e 67 20 77 69 74 68 6f 75 including withou
01f0: 74 20 6c 69 6d 69 74 61 74 69 6f 6e 0d 0a 20 2a t limitation.. *
0200: 20 20 20 74 68 65 20 72 69 67 68 74 73 20 74 6f the rights to
0210: 20 75 73 65 2c 20 63 6f 70 79 2c 20 6d 6f 64 69 use, copy, modi
0220: 66 79 2c 20 6d 65 72 67 65 2c 20 70 75 62 6c 69 fy, merge, publi
0230: 73 68 2c 20 64 69 73 74 72 69 62 75 74 65 2c 20 sh, distribute,
0240: 73 75 62 6c 69 63 65 6e 73 65 2c 0d 0a 20 2a 20 sublicense,.. *
0250: 20 20 61 6e 64 2f 6f 72 20 73 65 6c 6c 20 63 6f and/or sell co
0260: 70 69 65 73 20 6f 66 20 74 68 65 20 53 6f 66 74 pies of the Soft
0270: 77 61 72 65 2c 20 61 6e 64 20 74 6f 20 70 65 72 ware, and to per
0280: 6d 69 74 20 70 65 72 73 6f 6e 73 20 74 6f 20 77 mit persons to w
0290: 68 6f 6d 0d 0a 20 2a 20 20 20 74 68 65 20 53 6f hom.. * the So
02a0: 66 74 77 61 72 65 20 69 73 20 66 75 72 6e 69 73 ftware is furnis
02b0: 68 65 64 20 74 6f 20 64 6f 20 73 6f 2c 20 73 75 hed to do so, su
02c0: 62 6a 65 63 74 20 74 6f 20 74 68 65 20 66 6f 6c bject to the fol
02d0: 6c 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e lowing condition
02e0: 73 3a 0d 0a 20 2a 0d 0a 20 2a 20 20 20 54 68 65 s:.. *.. * The
02f0: 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 above copyright
0300: 20 6e 6f 74 69 63 65 20 61 6e 64 20 74 68 69 73 notice and this
0310: 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 permission noti
0320: 63 65 20 73 68 61 6c 6c 20 62 65 20 69 6e 63 6c ce shall be incl
0330: 75 64 65 64 0d 0a 20 2a 20 20 20 69 6e 20 61 6c uded.. * in al
0340: 6c 20 63 6f 70 69 65 73 20 6f 72 20 73 75 62 73 l copies or subs
0350: 74 61 6e 74 69 61 6c 20 70 6f 72 74 69 6f 6e 73 tantial portions
0360: 20 6f 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 of the Software
0370: 2e 0d 0a 20 2a 0d 0a 20 2a 20 20 20 54 68 65 20 ... *.. * The
0380: 53 6f 66 74 77 61 72 65 20 73 68 61 6c 6c 20 62 Software shall b
0390: 65 20 75 73 65 64 20 66 6f 72 20 47 6f 6f 64 2c e used for Good,
03a0: 20 6e 6f 74 20 45 76 69 6c 2e 0d 0a 20 2a 0d 0a not Evil... *..
03b0: 20 2a 20 20 20 54 48 45 20 53 4f 46 54 57 41 52 * THE SOFTWAR
03c0: 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 E IS PROVIDED "A
03d0: 53 20 49 53 22 2c 20 57 49 54 48 4f 55 54 20 57 S IS", WITHOUT W
03e0: 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b ARRANTY OF ANY K
03f0: 49 4e 44 2c 20 45 58 50 52 45 53 53 20 4f 52 0d IND, EXPRESS OR.
0400: 0a 20 2a 20 20 20 49 4d 50 4c 49 45 44 2c 20 49 . * IMPLIED, I
0410: 4e 43 4c 55 44 49 4e 47 20 42 55 54 20 4e 4f 54 NCLUDING BUT NOT
0420: 20 4c 49 4d 49 54 45 44 20 54 4f 20 54 48 45 20 LIMITED TO THE
0430: 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d 45 WARRANTIES OF ME
0440: 52 43 48 41 4e 54 41 42 49 4c 49 54 59 2c 0d 0a RCHANTABILITY,..
0450: 20 2a 20 20 20 46 49 54 4e 45 53 53 20 46 4f 52 * FITNESS FOR
0460: 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 A PARTICULAR PU
0470: 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e 49 4e 46 RPOSE AND NONINF
0480: 52 49 4e 47 45 4d 45 4e 54 2e 20 49 4e 20 4e 4f RINGEMENT. IN NO
0490: 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 48 45 EVENT SHALL THE
04a0: 0d 0a 20 2a 20 20 20 41 55 54 48 4f 52 53 20 4f .. * AUTHORS O
04b0: 52 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 R COPYRIGHT HOLD
04c0: 45 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f ERS BE LIABLE FO
04d0: 52 20 41 4e 59 20 43 4c 41 49 4d 2c 20 44 41 4d R ANY CLAIM, DAM
04e0: 41 47 45 53 20 4f 52 20 4f 54 48 45 52 0d 0a 20 AGES OR OTHER..
04f0: 2a 20 20 20 4c 49 41 42 49 4c 49 54 59 2c 20 57 * LIABILITY, W
0500: 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41 43 54 HETHER IN AN ACT
0510: 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 54 2c ION OF CONTRACT,
0520: 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52 57 49 TORT OR OTHERWI
0530: 53 45 2c 20 41 52 49 53 49 4e 47 0d 0a 20 2a 20 SE, ARISING.. *
0540: 20 20 46 52 4f 4d 2c 20 4f 55 54 20 4f 46 20 4f FROM, OUT OF O
0550: 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 R IN CONNECTION
0560: 57 49 54 48 20 54 48 45 20 53 4f 46 54 57 41 52 WITH THE SOFTWAR
0570: 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f 52 20 E OR THE USE OR
0580: 4f 54 48 45 52 0d 0a 20 2a 20 20 20 44 45 41 4c OTHER.. * DEAL
0590: 49 4e 47 53 20 49 4e 20 54 48 45 20 53 4f 46 54 INGS IN THE SOFT
05a0: 57 41 52 45 2e 0d 0a 20 2a 0d 0a 20 2a 20 4a 53 WARE... *.. * JS
05b0: 48 69 6e 74 20 77 61 73 20 66 6f 72 6b 65 64 20 Hint was forked
05c0: 66 72 6f 6d 20 74 68 65 20 32 30 31 30 2d 31 32 from the 2010-12
05d0: 2d 31 36 20 65 64 69 74 69 6f 6e 20 6f 66 20 4a -16 edition of J
05e0: 53 4c 69 6e 74 2e 0d 0a 20 2a 0d 0a 20 2a 2f 0d SLint... *.. */.
05f0: 0a 0d 0a 2f 2a 0d 0a 20 4a 53 48 49 4e 54 20 69 .../*.. JSHINT i
0600: 73 20 61 20 67 6c 6f 62 61 6c 20 66 75 6e 63 74 s a global funct
0610: 69 6f 6e 2e 20 49 74 20 74 61 6b 65 73 20 74 77 ion. It takes tw
0620: 6f 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 0d o parameters....
0630: 0a 20 20 20 20 20 76 61 72 20 6d 79 52 65 73 75 . var myResu
0640: 6c 74 20 3d 20 4a 53 48 49 4e 54 28 73 6f 75 72 lt = JSHINT(sour
0650: 63 65 2c 20 6f 70 74 69 6f 6e 29 3b 0d 0a 0d 0a ce, option);....
0660: 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d The first param
0670: 65 74 65 72 20 69 73 20 65 69 74 68 65 72 20 61 eter is either a
0680: 20 73 74 72 69 6e 67 20 6f 72 20 61 6e 20 61 72 string or an ar
0690: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 2e 20 ray of strings.
06a0: 49 66 20 69 74 20 69 73 20 61 0d 0a 20 73 74 72 If it is a.. str
06b0: 69 6e 67 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 ing, it will be
06c0: 73 70 6c 69 74 20 6f 6e 20 27 5c 6e 27 20 6f 72 split on '\n' or
06d0: 20 27 5c 72 27 2e 20 49 66 20 69 74 20 69 73 20 '\r'. If it is
06e0: 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 an array of stri
06f0: 6e 67 73 2c 20 69 74 0d 0a 20 69 73 20 61 73 73 ngs, it.. is ass
0700: 75 6d 65 64 20 74 68 61 74 20 65 61 63 68 20 73 umed that each s
0710: 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 73 tring represents
0720: 20 6f 6e 65 20 6c 69 6e 65 2e 20 54 68 65 20 73 one line. The s
0730: 6f 75 72 63 65 20 63 61 6e 20 62 65 20 61 0d 0a ource can be a..
0740: 20 4a 61 76 61 53 63 72 69 70 74 20 74 65 78 74 JavaScript text
0750: 20 6f 72 20 61 20 4a 53 4f 4e 20 74 65 78 74 2e or a JSON text.
0760: 0d 0a 0d 0a 20 54 68 65 20 73 65 63 6f 6e 64 20 .... The second
0770: 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 6e 20 parameter is an
0780: 6f 70 74 69 6f 6e 61 6c 20 6f 62 6a 65 63 74 20 optional object
0790: 6f 66 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 of options which
07a0: 20 63 6f 6e 74 72 6f 6c 20 74 68 65 0d 0a 20 6f control the.. o
07b0: 70 65 72 61 74 69 6f 6e 20 6f 66 20 4a 53 48 49 peration of JSHI
07c0: 4e 54 2e 20 4d 6f 73 74 20 6f 66 20 74 68 65 20 NT. Most of the
07d0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 62 6f 6f 6c options are bool
07e0: 65 61 6e 73 3a 20 54 68 65 79 20 61 72 65 20 61 eans: They are a
07f0: 6c 6c 0d 0a 20 6f 70 74 69 6f 6e 61 6c 20 61 6e ll.. optional an
0800: 64 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 d have a default
0810: 20 76 61 6c 75 65 20 6f 66 20 66 61 6c 73 65 2e value of false.
0820: 20 4f 6e 65 20 6f 66 20 74 68 65 20 6f 70 74 69 One of the opti
0830: 6f 6e 73 2c 20 70 72 65 64 65 66 2c 0d 0a 20 63 ons, predef,.. c
0840: 61 6e 20 62 65 20 61 6e 20 61 72 72 61 79 20 6f an be an array o
0850: 66 20 6e 61 6d 65 73 2c 20 77 68 69 63 68 20 77 f names, which w
0860: 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 64 ill be used to d
0870: 65 63 6c 61 72 65 20 67 6c 6f 62 61 6c 20 76 61 eclare global va
0880: 72 69 61 62 6c 65 73 2c 0d 0a 20 6f 72 20 61 6e riables,.. or an
0890: 20 6f 62 6a 65 63 74 20 77 68 6f 73 65 20 6b 65 object whose ke
08a0: 79 73 20 61 72 65 20 75 73 65 64 20 61 73 20 67 ys are used as g
08b0: 6c 6f 62 61 6c 20 6e 61 6d 65 73 2c 20 77 69 74 lobal names, wit
08c0: 68 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 h a boolean valu
08d0: 65 0d 0a 20 74 68 61 74 20 64 65 74 65 72 6d 69 e.. that determi
08e0: 6e 65 73 20 69 66 20 74 68 65 79 20 61 72 65 20 nes if they are
08f0: 61 73 73 69 67 6e 61 62 6c 65 2e 0d 0a 0d 0a 20 assignable.....
0900: 49 66 20 69 74 20 63 68 65 63 6b 73 20 6f 75 74 If it checks out
0910: 2c 20 4a 53 48 49 4e 54 20 72 65 74 75 72 6e 73 , JSHINT returns
0920: 20 74 72 75 65 2e 20 4f 74 68 65 72 77 69 73 65 true. Otherwise
0930: 2c 20 69 74 20 72 65 74 75 72 6e 73 20 66 61 6c , it returns fal
0940: 73 65 2e 0d 0a 0d 0a 20 49 66 20 66 61 6c 73 65 se..... If false
0950: 2c 20 79 6f 75 20 63 61 6e 20 69 6e 73 70 65 63 , you can inspec
0960: 74 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 20 t JSHINT.errors
0970: 74 6f 20 66 69 6e 64 20 6f 75 74 20 74 68 65 20 to find out the
0980: 70 72 6f 62 6c 65 6d 73 2e 0d 0a 20 4a 53 48 49 problems... JSHI
0990: 4e 54 2e 65 72 72 6f 72 73 20 69 73 20 61 6e 20 NT.errors is an
09a0: 61 72 72 61 79 20 6f 66 20 6f 62 6a 65 63 74 73 array of objects
09b0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 73 containing thes
09c0: 65 20 6d 65 6d 62 65 72 73 3a 0d 0a 0d 0a 20 7b e members:.... {
09d0: 0d 0a 20 20 20 20 20 6c 69 6e 65 20 20 20 20 20 .. line
09e0: 20 3a 20 54 68 65 20 6c 69 6e 65 20 28 72 65 6c : The line (rel
09f0: 61 74 69 76 65 20 74 6f 20 31 29 20 61 74 20 77 ative to 1) at w
0a00: 68 69 63 68 20 74 68 65 20 6c 69 6e 74 20 77 61 hich the lint wa
0a10: 73 20 66 6f 75 6e 64 0d 0a 20 20 20 20 20 63 68 s found.. ch
0a20: 61 72 61 63 74 65 72 20 3a 20 54 68 65 20 63 68 aracter : The ch
0a30: 61 72 61 63 74 65 72 20 28 72 65 6c 61 74 69 76 aracter (relativ
0a40: 65 20 74 6f 20 31 29 20 61 74 20 77 68 69 63 68 e to 1) at which
0a50: 20 74 68 65 20 6c 69 6e 74 20 77 61 73 20 66 6f the lint was fo
0a60: 75 6e 64 0d 0a 20 20 20 20 20 72 65 61 73 6f 6e und.. reason
0a70: 20 20 20 20 3a 20 54 68 65 20 70 72 6f 62 6c 65 : The proble
0a80: 6d 0d 0a 20 20 20 20 20 65 76 69 64 65 6e 63 65 m.. evidence
0a90: 20 20 3a 20 54 68 65 20 74 65 78 74 20 6c 69 6e : The text lin
0aa0: 65 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 70 e in which the p
0ab0: 72 6f 62 6c 65 6d 20 6f 63 63 75 72 72 65 64 0d roblem occurred.
0ac0: 0a 20 20 20 20 20 72 61 77 20 20 20 20 20 20 20 . raw
0ad0: 3a 20 54 68 65 20 72 61 77 20 6d 65 73 73 61 67 : The raw messag
0ae0: 65 20 62 65 66 6f 72 65 20 74 68 65 20 64 65 74 e before the det
0af0: 61 69 6c 73 20 77 65 72 65 20 69 6e 73 65 72 74 ails were insert
0b00: 65 64 0d 0a 20 20 20 20 20 61 20 20 20 20 20 20 ed.. a
0b10: 20 20 20 3a 20 54 68 65 20 66 69 72 73 74 20 64 : The first d
0b20: 65 74 61 69 6c 0d 0a 20 20 20 20 20 62 20 20 20 etail.. b
0b30: 20 20 20 20 20 20 3a 20 54 68 65 20 73 65 63 6f : The seco
0b40: 6e 64 20 64 65 74 61 69 6c 0d 0a 20 20 20 20 20 nd detail..
0b50: 63 20 20 20 20 20 20 20 20 20 3a 20 54 68 65 20 c : The
0b60: 74 68 69 72 64 20 64 65 74 61 69 6c 0d 0a 20 20 third detail..
0b70: 20 20 20 64 20 20 20 20 20 20 20 20 20 3a 20 54 d : T
0b80: 68 65 20 66 6f 75 72 74 68 20 64 65 74 61 69 6c he fourth detail
0b90: 0d 0a 20 7d 0d 0a 0d 0a 20 49 66 20 61 20 66 61 .. }.... If a fa
0ba0: 74 61 6c 20 65 72 72 6f 72 20 77 61 73 20 66 6f tal error was fo
0bb0: 75 6e 64 2c 20 61 20 6e 75 6c 6c 20 77 69 6c 6c und, a null will
0bc0: 20 62 65 20 74 68 65 20 6c 61 73 74 20 65 6c 65 be the last ele
0bd0: 6d 65 6e 74 20 6f 66 20 74 68 65 0d 0a 20 4a 53 ment of the.. JS
0be0: 48 49 4e 54 2e 65 72 72 6f 72 73 20 61 72 72 61 HINT.errors arra
0bf0: 79 2e 0d 0a 0d 0a 20 59 6f 75 20 63 61 6e 20 72 y..... You can r
0c00: 65 71 75 65 73 74 20 61 20 64 61 74 61 20 73 74 equest a data st
0c10: 72 75 63 74 75 72 65 20 77 68 69 63 68 20 63 6f ructure which co
0c20: 6e 74 61 69 6e 73 20 4a 53 48 69 6e 74 27 73 20 ntains JSHint's
0c30: 72 65 73 75 6c 74 73 2e 0d 0a 0d 0a 20 20 20 20 results.....
0c40: 20 76 61 72 20 6d 79 44 61 74 61 20 3d 20 4a 53 var myData = JS
0c50: 48 49 4e 54 2e 64 61 74 61 28 29 3b 0d 0a 0d 0a HINT.data();....
0c60: 20 49 74 20 72 65 74 75 72 6e 73 20 61 20 73 74 It returns a st
0c70: 72 75 63 74 75 72 65 20 77 69 74 68 20 74 68 69 ructure with thi
0c80: 73 20 66 6f 72 6d 3a 0d 0a 0d 0a 20 7b 0d 0a 20 s form:.... {..
0c90: 20 20 20 20 65 72 72 6f 72 73 3a 20 5b 0d 0a 20 errors: [..
0ca0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 {..
0cb0: 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 4e 55 line: NU
0cc0: 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20 20 20 20 MBER,..
0cd0: 20 20 20 20 63 68 61 72 61 63 74 65 72 3a 20 4e character: N
0ce0: 55 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20 20 20 UMBER,..
0cf0: 20 20 20 20 20 72 65 61 73 6f 6e 3a 20 53 54 52 reason: STR
0d00: 49 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ING,..
0d10: 20 20 20 65 76 69 64 65 6e 63 65 3a 20 53 54 52 evidence: STR
0d20: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d ING.. }.
0d30: 0a 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 66 . ],.. f
0d40: 75 6e 63 74 69 6f 6e 73 3a 20 5b 0d 0a 20 20 20 unctions: [..
0d50: 20 20 20 20 20 20 6e 61 6d 65 3a 20 53 54 52 49 name: STRI
0d60: 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20 20 6c 69 NG,.. li
0d70: 6e 65 3a 20 4e 55 4d 42 45 52 2c 0d 0a 20 20 20 ne: NUMBER,..
0d80: 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 3a character:
0d90: 20 4e 55 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20 NUMBER,..
0da0: 20 20 20 6c 61 73 74 3a 20 4e 55 4d 42 45 52 2c last: NUMBER,
0db0: 0d 0a 20 20 20 20 20 20 20 20 20 6c 61 73 74 63 .. lastc
0dc0: 68 61 72 61 63 74 65 72 3a 20 4e 55 4d 42 45 52 haracter: NUMBER
0dd0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 70 61 72 61 ,.. para
0de0: 6d 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 20 m: [..
0df0: 20 20 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20 STRING..
0e00: 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 20 20 20 ],..
0e10: 20 63 6c 6f 73 75 72 65 3a 20 5b 0d 0a 20 20 20 closure: [..
0e20: 20 20 20 20 20 20 20 20 20 20 53 54 52 49 4e 47 STRING
0e30: 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c 0d 0a 20 .. ],..
0e40: 20 20 20 20 20 20 20 20 76 61 72 3a 20 5b 0d 0a var: [..
0e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52 STR
0e60: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c ING.. ],
0e70: 0d 0a 20 20 20 20 20 20 20 20 20 65 78 63 65 70 .. excep
0e80: 74 69 6f 6e 3a 20 5b 0d 0a 20 20 20 20 20 20 20 tion: [..
0e90: 20 20 20 20 20 20 53 54 52 49 4e 47 0d 0a 20 20 STRING..
0ea0: 20 20 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 ],..
0eb0: 20 20 20 20 6f 75 74 65 72 3a 20 5b 0d 0a 20 20 outer: [..
0ec0: 20 20 20 20 20 20 20 20 20 20 20 53 54 52 49 4e STRIN
0ed0: 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c 0d 0a G.. ],..
0ee0: 20 20 20 20 20 20 20 20 20 75 6e 75 73 65 64 3a unused:
0ef0: 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 [..
0f00: 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20 20 20 STRING..
0f10: 20 20 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 67 ],.. g
0f20: 6c 6f 62 61 6c 3a 20 5b 0d 0a 20 20 20 20 20 20 lobal: [..
0f30: 20 20 20 20 20 20 20 53 54 52 49 4e 47 0d 0a 20 STRING..
0f40: 20 20 20 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 ],..
0f50: 20 20 20 20 20 6c 61 62 65 6c 3a 20 5b 0d 0a 20 label: [..
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52 49 STRI
0f70: 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 0d 0a NG.. ]..
0f80: 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 67 6c ],.. gl
0f90: 6f 62 61 6c 73 3a 20 5b 0d 0a 20 20 20 20 20 20 obals: [..
0fa0: 20 20 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20 STRING..
0fb0: 5d 2c 0d 0a 20 20 20 20 20 6d 65 6d 62 65 72 3a ],.. member:
0fc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 53 54 52 {.. STR
0fd0: 49 4e 47 3a 20 4e 55 4d 42 45 52 0d 0a 20 20 20 ING: NUMBER..
0fe0: 20 20 7d 2c 0d 0a 20 20 20 20 20 75 6e 75 73 65 },.. unuse
0ff0: 64 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 7b d: [.. {
1000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6e .. n
1010: 61 6d 65 3a 20 53 54 52 49 4e 47 2c 0d 0a 20 20 ame: STRING,..
1020: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a line:
1030: 20 4e 55 4d 42 45 52 0d 0a 20 20 20 20 20 20 20 NUMBER..
1040: 20 20 7d 0d 0a 20 20 20 20 20 5d 2c 0d 0a 20 20 }.. ],..
1050: 20 20 20 69 6d 70 6c 69 65 64 73 3a 20 5b 0d 0a implieds: [..
1060: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 {..
1070: 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3a 20 53 name: S
1080: 54 52 49 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20 TRING,..
1090: 20 20 20 20 20 6c 69 6e 65 3a 20 4e 55 4d 42 45 line: NUMBE
10a0: 52 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 R.. }..
10b0: 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 75 72 6c ],.. url
10c0: 73 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 53 s: [.. S
10d0: 54 52 49 4e 47 0d 0a 20 20 20 20 20 5d 2c 0d 0a TRING.. ],..
10e0: 20 20 20 20 20 6a 73 6f 6e 3a 20 42 4f 4f 4c 45 json: BOOLE
10f0: 41 4e 0d 0a 20 7d 0d 0a 0d 0a 20 45 6d 70 74 79 AN.. }.... Empty
1100: 20 61 72 72 61 79 73 20 77 69 6c 6c 20 6e 6f 74 arrays will not
1110: 20 62 65 20 69 6e 63 6c 75 64 65 64 2e 0d 0a 0d be included....
1120: 0a 2a 2f 0d 0a 0d 0a 2f 2a 6a 73 68 69 6e 74 0d .*/..../*jshint.
1130: 0a 20 65 76 69 6c 3a 20 74 72 75 65 2c 20 6e 6f . evil: true, no
1140: 6d 65 6e 3a 20 66 61 6c 73 65 2c 20 6f 6e 65 76 men: false, onev
1150: 61 72 3a 20 66 61 6c 73 65 2c 20 72 65 67 65 78 ar: false, regex
1160: 70 3a 20 66 61 6c 73 65 2c 20 73 74 72 69 63 74 p: false, strict
1170: 3a 20 74 72 75 65 2c 20 62 6f 73 73 3a 20 74 72 : true, boss: tr
1180: 75 65 2c 0d 0a 20 75 6e 64 65 66 3a 20 74 72 75 ue,.. undef: tru
1190: 65 2c 20 6d 61 78 6c 65 6e 3a 20 31 30 30 2c 20 e, maxlen: 100,
11a0: 69 6e 64 65 6e 74 3a 20 34 2c 20 71 75 6f 74 6d indent: 4, quotm
11b0: 61 72 6b 3a 20 64 6f 75 62 6c 65 2c 20 75 6e 75 ark: double, unu
11c0: 73 65 64 3a 20 74 72 75 65 0d 0a 2a 2f 0d 0a 0d sed: true..*/...
11d0: 0a 2f 2a 6d 65 6d 62 65 72 73 20 22 5c 62 22 2c ./*members "\b",
11e0: 20 22 5c 74 22 2c 20 22 5c 6e 22 2c 20 22 5c 66 "\t", "\n", "\f
11f0: 22 2c 20 22 5c 72 22 2c 20 22 21 3d 22 2c 20 22 ", "\r", "!=", "
1200: 21 3d 3d 22 2c 20 22 5c 22 22 2c 20 22 25 22 2c !==", "\"", "%",
1210: 20 22 28 62 65 67 69 6e 29 22 2c 0d 0a 20 22 28 "(begin)",.. "(
1220: 62 72 65 61 6b 61 67 65 29 22 2c 20 22 28 63 68 breakage)", "(ch
1230: 61 72 61 63 74 65 72 29 22 2c 20 22 28 63 6f 6e aracter)", "(con
1240: 74 65 78 74 29 22 2c 20 22 28 65 72 72 6f 72 29 text)", "(error)
1250: 22 2c 20 22 28 65 78 70 6c 69 63 69 74 4e 65 77 ", "(explicitNew
1260: 63 61 70 29 22 2c 20 22 28 67 6c 6f 62 61 6c 29 cap)", "(global)
1270: 22 2c 0d 0a 20 22 28 69 64 65 6e 74 69 66 69 65 ",.. "(identifie
1280: 72 29 22 2c 20 22 28 6c 61 73 74 29 22 2c 20 22 r)", "(last)", "
1290: 28 6c 61 73 74 63 68 61 72 61 63 74 65 72 29 22 (lastcharacter)"
12a0: 2c 20 22 28 6c 69 6e 65 29 22 2c 20 22 28 6c 6f , "(line)", "(lo
12b0: 6f 70 61 67 65 29 22 2c 20 22 28 6e 61 6d 65 29 opage)", "(name)
12c0: 22 2c 0d 0a 20 22 28 6f 6e 65 76 61 72 29 22 2c ",.. "(onevar)",
12d0: 20 22 28 70 61 72 61 6d 73 29 22 2c 20 22 28 73 "(params)", "(s
12e0: 63 6f 70 65 29 22 2c 20 22 28 73 74 61 74 65 6d cope)", "(statem
12f0: 65 6e 74 29 22 2c 20 22 28 76 65 72 62 29 22 2c ent)", "(verb)",
1300: 20 22 28 74 6f 6b 65 6e 73 29 22 2c 0d 0a 20 22 "(tokens)",.. "
1310: 2a 22 2c 20 22 2b 22 2c 20 22 2b 2b 22 2c 20 22 *", "+", "++", "
1320: 2d 22 2c 20 22 2d 2d 22 2c 20 22 5c 2f 22 2c 20 -", "--", "\/",
1330: 22 3c 22 2c 20 22 3c 3d 22 2c 20 22 3d 3d 22 2c "<", "<=", "==",
1340: 0d 0a 20 22 3d 3d 3d 22 2c 20 22 3e 22 2c 20 22 .. "===", ">", "
1350: 3e 3d 22 2c 20 24 2c 20 24 24 2c 20 24 41 2c 20 >=", $, $$, $A,
1360: 24 46 2c 20 24 48 2c 20 24 52 2c 20 24 62 72 65 $F, $H, $R, $bre
1370: 61 6b 2c 20 24 63 6f 6e 74 69 6e 75 65 2c 20 24 ak, $continue, $
1380: 77 2c 20 41 62 73 74 72 61 63 74 2c 20 41 6a 61 w, Abstract, Aja
1390: 78 2c 0d 0a 20 5f 5f 66 69 6c 65 6e 61 6d 65 2c x,.. __filename,
13a0: 20 5f 5f 64 69 72 6e 61 6d 65 2c 20 41 63 74 69 __dirname, Acti
13b0: 76 65 58 4f 62 6a 65 63 74 2c 20 41 72 72 61 79 veXObject, Array
13c0: 2c 20 41 72 72 61 79 42 75 66 66 65 72 2c 20 41 , ArrayBuffer, A
13d0: 72 72 61 79 42 75 66 66 65 72 56 69 65 77 2c 20 rrayBufferView,
13e0: 41 75 64 69 6f 2c 0d 0a 20 41 75 74 6f 63 6f 6d Audio,.. Autocom
13f0: 70 6c 65 74 65 72 2c 20 41 73 73 65 74 73 2c 20 pleter, Assets,
1400: 42 6f 6f 6c 65 61 6e 2c 20 42 75 69 6c 64 65 72 Boolean, Builder
1410: 2c 20 42 75 66 66 65 72 2c 20 42 72 6f 77 73 65 , Buffer, Browse
1420: 72 2c 20 43 4f 4d 2c 20 43 53 63 72 69 70 74 2c r, COM, CScript,
1430: 20 43 61 6e 76 61 73 2c 0d 0a 20 43 75 73 74 6f Canvas,.. Custo
1440: 6d 41 6e 69 6d 61 74 69 6f 6e 2c 20 43 6c 61 73 mAnimation, Clas
1450: 73 2c 20 43 6f 6e 74 72 6f 6c 2c 20 43 68 61 69 s, Control, Chai
1460: 6e 2c 20 43 6f 6c 6f 72 2c 20 43 6f 6f 6b 69 65 n, Color, Cookie
1470: 2c 20 43 6f 72 65 2c 20 44 61 74 61 56 69 65 77 , Core, DataView
1480: 2c 20 44 61 74 65 2c 0d 0a 20 44 65 62 75 67 2c , Date,.. Debug,
1490: 20 44 72 61 67 67 61 62 6c 65 2c 20 44 72 61 67 Draggable, Drag
14a0: 67 61 62 6c 65 73 2c 20 44 72 6f 70 70 61 62 6c gables, Droppabl
14b0: 65 73 2c 20 44 6f 63 75 6d 65 6e 74 2c 20 44 6f es, Document, Do
14c0: 6d 52 65 61 64 79 2c 20 44 4f 4d 52 65 61 64 79 mReady, DOMReady
14d0: 2c 20 44 4f 4d 50 61 72 73 65 72 2c 20 44 72 61 , DOMParser, Dra
14e0: 67 2c 0d 0a 20 45 2c 20 45 6e 75 6d 65 72 61 74 g,.. E, Enumerat
14f0: 6f 72 2c 20 45 6e 75 6d 65 72 61 62 6c 65 2c 20 or, Enumerable,
1500: 45 6c 65 6d 65 6e 74 2c 20 45 6c 65 6d 65 6e 74 Element, Element
1510: 73 2c 20 45 72 72 6f 72 2c 20 45 66 66 65 63 74 s, Error, Effect
1520: 2c 20 45 76 61 6c 45 72 72 6f 72 2c 20 45 76 65 , EvalError, Eve
1530: 6e 74 2c 0d 0a 20 45 76 65 6e 74 73 2c 20 46 61 nt,.. Events, Fa
1540: 64 65 41 6e 69 6d 61 74 69 6f 6e 2c 20 46 69 65 deAnimation, Fie
1550: 6c 64 2c 20 46 6c 61 73 68 2c 20 46 6c 6f 61 74 ld, Flash, Float
1560: 33 32 41 72 72 61 79 2c 20 46 6c 6f 61 74 36 34 32Array, Float64
1570: 41 72 72 61 79 2c 20 46 6f 72 6d 2c 0d 0a 20 46 Array, Form,.. F
1580: 6f 72 6d 46 69 65 6c 64 2c 20 46 72 61 6d 65 2c ormField, Frame,
1590: 20 46 6f 72 6d 44 61 74 61 2c 20 46 75 6e 63 74 FormData, Funct
15a0: 69 6f 6e 2c 20 46 78 2c 20 47 65 74 4f 62 6a 65 ion, Fx, GetObje
15b0: 63 74 2c 20 47 72 6f 75 70 2c 20 48 61 73 68 2c ct, Group, Hash,
15c0: 20 48 6f 74 4b 65 79 2c 0d 0a 20 48 54 4d 4c 45 HotKey,.. HTMLE
15d0: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 41 6e 63 68 lement, HTMLAnch
15e0: 6f 72 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 42 orElement, HTMLB
15f0: 61 73 65 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c aseElement, HTML
1600: 42 6c 6f 63 6b 71 75 6f 74 65 45 6c 65 6d 65 6e BlockquoteElemen
1610: 74 2c 0d 0a 20 48 54 4d 4c 42 6f 64 79 45 6c 65 t,.. HTMLBodyEle
1620: 6d 65 6e 74 2c 20 48 54 4d 4c 42 52 45 6c 65 6d ment, HTMLBRElem
1630: 65 6e 74 2c 20 48 54 4d 4c 42 75 74 74 6f 6e 45 ent, HTMLButtonE
1640: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 43 61 6e 76 lement, HTMLCanv
1650: 61 73 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 44 asElement, HTMLD
1660: 69 72 65 63 74 6f 72 79 45 6c 65 6d 65 6e 74 2c irectoryElement,
1670: 0d 0a 20 48 54 4d 4c 44 69 76 45 6c 65 6d 65 6e .. HTMLDivElemen
1680: 74 2c 20 48 54 4d 4c 44 4c 69 73 74 45 6c 65 6d t, HTMLDListElem
1690: 65 6e 74 2c 20 48 54 4d 4c 46 69 65 6c 64 53 65 ent, HTMLFieldSe
16a0: 74 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c tElement,.. HTML
16b0: 46 6f 6e 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d FontElement, HTM
16c0: 4c 46 6f 72 6d 45 6c 65 6d 65 6e 74 2c 20 48 54 LFormElement, HT
16d0: 4d 4c 46 72 61 6d 65 45 6c 65 6d 65 6e 74 2c 20 MLFrameElement,
16e0: 48 54 4d 4c 46 72 61 6d 65 53 65 74 45 6c 65 6d HTMLFrameSetElem
16f0: 65 6e 74 2c 0d 0a 20 48 54 4d 4c 48 65 61 64 45 ent,.. HTMLHeadE
1700: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 48 65 61 64 lement, HTMLHead
1710: 69 6e 67 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c ingElement, HTML
1720: 48 52 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 48 HRElement, HTMLH
1730: 74 6d 6c 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 tmlElement,.. HT
1740: 4d 4c 49 46 72 61 6d 65 45 6c 65 6d 65 6e 74 2c MLIFrameElement,
1750: 20 48 54 4d 4c 49 6d 61 67 65 45 6c 65 6d 65 6e HTMLImageElemen
1760: 74 2c 20 48 54 4d 4c 49 6e 70 75 74 45 6c 65 6d t, HTMLInputElem
1770: 65 6e 74 2c 20 48 54 4d 4c 49 73 49 6e 64 65 78 ent, HTMLIsIndex
1780: 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c 4c Element,.. HTMLL
1790: 61 62 65 6c 45 6c 65 6d 65 6e 74 2c 20 48 54 4d abelElement, HTM
17a0: 4c 4c 61 79 65 72 45 6c 65 6d 65 6e 74 2c 20 48 LLayerElement, H
17b0: 54 4d 4c 4c 65 67 65 6e 64 45 6c 65 6d 65 6e 74 TMLLegendElement
17c0: 2c 20 48 54 4d 4c 4c 49 45 6c 65 6d 65 6e 74 2c , HTMLLIElement,
17d0: 0d 0a 20 48 54 4d 4c 4c 69 6e 6b 45 6c 65 6d 65 .. HTMLLinkEleme
17e0: 6e 74 2c 20 48 54 4d 4c 4d 61 70 45 6c 65 6d 65 nt, HTMLMapEleme
17f0: 6e 74 2c 20 48 54 4d 4c 4d 65 6e 75 45 6c 65 6d nt, HTMLMenuElem
1800: 65 6e 74 2c 20 48 54 4d 4c 4d 65 74 61 45 6c 65 ent, HTMLMetaEle
1810: 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c 4d 6f 64 45 ment,.. HTMLModE
1820: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 4f 62 6a 65 lement, HTMLObje
1830: 63 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 4f ctElement, HTMLO
1840: 4c 69 73 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d ListElement, HTM
1850: 4c 4f 70 74 47 72 6f 75 70 45 6c 65 6d 65 6e 74 LOptGroupElement
1860: 2c 0d 0a 20 48 54 4d 4c 4f 70 74 69 6f 6e 45 6c ,.. HTMLOptionEl
1870: 65 6d 65 6e 74 2c 20 48 54 4d 4c 50 61 72 61 67 ement, HTMLParag
1880: 72 61 70 68 45 6c 65 6d 65 6e 74 2c 20 48 54 4d raphElement, HTM
1890: 4c 50 61 72 61 6d 45 6c 65 6d 65 6e 74 2c 20 48 LParamElement, H
18a0: 54 4d 4c 50 72 65 45 6c 65 6d 65 6e 74 2c 0d 0a TMLPreElement,..
18b0: 20 48 54 4d 4c 51 75 6f 74 65 45 6c 65 6d 65 6e HTMLQuoteElemen
18c0: 74 2c 20 48 54 4d 4c 53 63 72 69 70 74 45 6c 65 t, HTMLScriptEle
18d0: 6d 65 6e 74 2c 20 48 54 4d 4c 53 65 6c 65 63 74 ment, HTMLSelect
18e0: 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 53 74 79 Element, HTMLSty
18f0: 6c 65 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 74 6d leElement,.. Htm
1900: 6c 54 61 62 6c 65 2c 20 48 54 4d 4c 54 61 62 6c lTable, HTMLTabl
1910: 65 43 61 70 74 69 6f 6e 45 6c 65 6d 65 6e 74 2c eCaptionElement,
1920: 20 48 54 4d 4c 54 61 62 6c 65 43 65 6c 6c 45 6c HTMLTableCellEl
1930: 65 6d 65 6e 74 2c 20 48 54 4d 4c 54 61 62 6c 65 ement, HTMLTable
1940: 43 6f 6c 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 ColElement,.. HT
1950: 4d 4c 54 61 62 6c 65 45 6c 65 6d 65 6e 74 2c 20 MLTableElement,
1960: 48 54 4d 4c 54 61 62 6c 65 52 6f 77 45 6c 65 6d HTMLTableRowElem
1970: 65 6e 74 2c 20 48 54 4d 4c 54 61 62 6c 65 53 65 ent, HTMLTableSe
1980: 63 74 69 6f 6e 45 6c 65 6d 65 6e 74 2c 0d 0a 20 ctionElement,..
1990: 48 54 4d 4c 54 65 78 74 41 72 65 61 45 6c 65 6d HTMLTextAreaElem
19a0: 65 6e 74 2c 20 48 54 4d 4c 54 69 74 6c 65 45 6c ent, HTMLTitleEl
19b0: 65 6d 65 6e 74 2c 20 48 54 4d 4c 55 4c 69 73 74 ement, HTMLUList
19c0: 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 56 69 64 Element, HTMLVid
19d0: 65 6f 45 6c 65 6d 65 6e 74 2c 0d 0a 20 49 66 72 eoElement,.. Ifr
19e0: 61 6d 65 2c 20 49 66 72 61 6d 65 53 68 69 6d 2c ame, IframeShim,
19f0: 20 49 6d 61 67 65 2c 20 69 6d 70 6f 72 74 53 63 Image, importSc
1a00: 72 69 70 74 73 2c 20 49 6e 74 31 36 41 72 72 61 ripts, Int16Arra
1a10: 79 2c 20 49 6e 74 33 32 41 72 72 61 79 2c 20 49 y, Int32Array, I
1a20: 6e 74 38 41 72 72 61 79 2c 0d 0a 20 49 6e 73 65 nt8Array,.. Inse
1a30: 72 74 69 6f 6e 2c 20 49 6e 70 75 74 56 61 6c 69 rtion, InputVali
1a40: 64 61 74 6f 72 2c 20 4a 53 4f 4e 2c 20 4b 65 79 dator, JSON, Key
1a50: 62 6f 61 72 64 2c 20 4c 6f 63 61 6c 65 2c 20 4c board, Locale, L
1a60: 4e 31 30 2c 20 4c 4e 32 2c 20 4c 4f 47 31 30 45 N10, LN2, LOG10E
1a70: 2c 20 4c 4f 47 32 45 2c 0d 0a 20 4d 41 58 5f 56 , LOG2E,.. MAX_V
1a80: 41 4c 55 45 2c 20 4d 49 4e 5f 56 41 4c 55 45 2c ALUE, MIN_VALUE,
1a90: 20 4d 61 73 6b 2c 20 4d 61 74 68 2c 20 4d 65 6e Mask, Math, Men
1aa0: 75 49 74 65 6d 2c 20 4d 65 73 73 61 67 65 43 68 uItem, MessageCh
1ab0: 61 6e 6e 65 6c 2c 20 4d 65 73 73 61 67 65 45 76 annel, MessageEv
1ac0: 65 6e 74 2c 20 4d 65 73 73 61 67 65 50 6f 72 74 ent, MessagePort
1ad0: 2c 0d 0a 20 4d 6f 76 65 41 6e 69 6d 61 74 69 6f ,.. MoveAnimatio
1ae0: 6e 2c 20 4d 6f 6f 54 6f 6f 6c 73 2c 20 4d 75 74 n, MooTools, Mut
1af0: 61 74 69 6f 6e 4f 62 73 65 72 76 65 72 2c 20 4e ationObserver, N
1b00: 61 74 69 76 65 2c 20 4e 45 47 41 54 49 56 45 5f ative, NEGATIVE_
1b10: 49 4e 46 49 4e 49 54 59 2c 20 4e 6f 64 65 2c 20 INFINITY, Node,
1b20: 4e 6f 64 65 46 69 6c 74 65 72 2c 0d 0a 20 4e 75 NodeFilter,.. Nu
1b30: 6d 62 65 72 2c 20 4f 62 6a 65 63 74 2c 20 4f 62 mber, Object, Ob
1b40: 6a 65 63 74 52 61 6e 67 65 2c 0d 0a 20 4f 70 74 jectRange,.. Opt
1b50: 69 6f 6e 2c 20 4f 70 74 69 6f 6e 73 2c 20 4f 76 ion, Options, Ov
1b60: 65 72 54 65 78 74 2c 20 50 49 2c 20 50 4f 53 49 erText, PI, POSI
1b70: 54 49 56 45 5f 49 4e 46 49 4e 49 54 59 2c 20 50 TIVE_INFINITY, P
1b80: 65 72 69 6f 64 69 63 61 6c 45 78 65 63 75 74 65 eriodicalExecute
1b90: 72 2c 20 50 6f 69 6e 74 2c 20 50 6f 73 69 74 69 r, Point, Positi
1ba0: 6f 6e 2c 20 50 72 6f 74 6f 74 79 70 65 2c 0d 0a on, Prototype,..
1bb0: 20 52 61 6e 67 65 45 72 72 6f 72 2c 20 52 65 63 RangeError, Rec
1bc0: 74 61 6e 67 6c 65 2c 20 52 65 66 65 72 65 6e 63 tangle, Referenc
1bd0: 65 45 72 72 6f 72 2c 20 52 65 67 45 78 70 2c 20 eError, RegExp,
1be0: 52 65 73 69 7a 65 41 6e 69 6d 61 74 69 6f 6e 2c ResizeAnimation,
1bf0: 20 52 65 71 75 65 73 74 2c 20 52 6f 74 61 74 65 Request, Rotate
1c00: 41 6e 69 6d 61 74 69 6f 6e 2c 0d 0a 20 53 51 52 Animation,.. SQR
1c10: 54 31 5f 32 2c 20 53 51 52 54 32 2c 20 53 63 72 T1_2, SQRT2, Scr
1c20: 6f 6c 6c 42 61 72 2c 20 53 63 72 69 70 74 45 6e ollBar, ScriptEn
1c30: 67 69 6e 65 2c 20 53 63 72 69 70 74 45 6e 67 69 gine, ScriptEngi
1c40: 6e 65 42 75 69 6c 64 56 65 72 73 69 6f 6e 2c 0d neBuildVersion,.
1c50: 0a 20 53 63 72 69 70 74 45 6e 67 69 6e 65 4d 61 . ScriptEngineMa
1c60: 6a 6f 72 56 65 72 73 69 6f 6e 2c 20 53 63 72 69 jorVersion, Scri
1c70: 70 74 45 6e 67 69 6e 65 4d 69 6e 6f 72 56 65 72 ptEngineMinorVer
1c80: 73 69 6f 6e 2c 20 53 63 72 69 70 74 61 63 75 6c sion, Scriptacul
1c90: 6f 75 73 2c 20 53 63 72 6f 6c 6c 65 72 2c 0d 0a ous, Scroller,..
1ca0: 20 53 6c 69 63 6b 2c 20 53 6c 69 64 65 72 2c 20 Slick, Slider,
1cb0: 53 65 6c 65 63 74 6f 72 2c 20 53 68 61 72 65 64 Selector, Shared
1cc0: 57 6f 72 6b 65 72 2c 20 53 74 72 69 6e 67 2c 20 Worker, String,
1cd0: 53 74 79 6c 65 2c 20 53 79 6e 74 61 78 45 72 72 Style, SyntaxErr
1ce0: 6f 72 2c 20 53 6f 72 74 61 62 6c 65 2c 20 53 6f or, Sortable, So
1cf0: 72 74 61 62 6c 65 73 2c 0d 0a 20 53 6f 72 74 61 rtables,.. Sorta
1d00: 62 6c 65 4f 62 73 65 72 76 65 72 2c 20 53 6f 75 bleObserver, Sou
1d10: 6e 64 2c 20 53 70 69 6e 6e 65 72 2c 20 53 79 73 nd, Spinner, Sys
1d20: 74 65 6d 2c 20 53 77 69 66 66 2c 20 54 65 78 74 tem, Swiff, Text
1d30: 2c 20 54 65 78 74 41 72 65 61 2c 20 54 65 6d 70 , TextArea, Temp
1d40: 6c 61 74 65 2c 0d 0a 20 54 69 6d 65 72 2c 20 54 late,.. Timer, T
1d50: 69 70 73 2c 20 54 79 70 65 2c 20 54 79 70 65 45 ips, Type, TypeE
1d60: 72 72 6f 72 2c 20 54 6f 67 67 6c 65 2c 20 54 72 rror, Toggle, Tr
1d70: 79 2c 20 22 75 73 65 20 73 74 72 69 63 74 22 2c y, "use strict",
1d80: 20 75 6e 65 73 63 61 70 65 2c 20 55 52 49 2c 20 unescape, URI,
1d90: 55 52 49 45 72 72 6f 72 2c 20 55 52 4c 2c 0d 0a URIError, URL,..
1da0: 20 56 42 41 72 72 61 79 2c 20 57 53 48 2c 20 57 VBArray, WSH, W
1db0: 53 63 72 69 70 74 2c 20 58 44 6f 6d 61 69 6e 52 Script, XDomainR
1dc0: 65 71 75 65 73 74 2c 20 57 65 62 2c 20 57 69 6e equest, Web, Win
1dd0: 64 6f 77 2c 20 58 4d 4c 44 4f 4d 2c 20 58 4d 4c dow, XMLDOM, XML
1de0: 48 74 74 70 52 65 71 75 65 73 74 2c 20 58 4d 4c HttpRequest, XML
1df0: 53 65 72 69 61 6c 69 7a 65 72 2c 0d 0a 20 58 50 Serializer,.. XP
1e00: 61 74 68 45 76 61 6c 75 61 74 6f 72 2c 20 58 50 athEvaluator, XP
1e10: 61 74 68 45 78 63 65 70 74 69 6f 6e 2c 20 58 50 athException, XP
1e20: 61 74 68 45 78 70 72 65 73 73 69 6f 6e 2c 20 58 athExpression, X
1e30: 50 61 74 68 4e 61 6d 65 73 70 61 63 65 2c 20 58 PathNamespace, X
1e40: 50 61 74 68 4e 53 52 65 73 6f 6c 76 65 72 2c 20 PathNSResolver,
1e50: 58 50 61 74 68 52 65 73 75 6c 74 2c 0d 0a 20 22 XPathResult,.. "
1e60: 5c 5c 22 2c 20 61 2c 20 61 62 73 2c 20 61 64 64 \\", a, abs, add
1e70: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 2c 20 61 EventListener, a
1e80: 64 64 72 65 73 73 2c 20 61 6c 65 72 74 2c 20 61 ddress, alert, a
1e90: 70 70 6c 79 2c 20 61 70 70 6c 69 63 61 74 69 6f pply, applicatio
1ea0: 6e 43 61 63 68 65 2c 20 61 72 67 75 6d 65 6e 74 nCache, argument
1eb0: 73 2c 20 61 72 69 74 79 2c 0d 0a 20 61 73 69 2c s, arity,.. asi,
1ec0: 20 61 74 6f 62 2c 20 62 2c 20 62 61 73 69 63 2c atob, b, basic,
1ed0: 20 62 61 73 69 63 54 6f 6b 65 6e 2c 20 62 69 74 basicToken, bit
1ee0: 77 69 73 65 2c 20 62 6c 61 63 6b 6c 69 73 74 2c wise, blacklist,
1ef0: 20 62 6c 6f 63 6b 2c 20 62 6c 75 72 2c 20 62 6f block, blur, bo
1f00: 6f 6c 4f 70 74 69 6f 6e 73 2c 20 62 6f 73 73 2c olOptions, boss,
1f10: 0d 0a 20 62 72 6f 77 73 65 72 2c 20 62 74 6f 61 .. browser, btoa
1f20: 2c 20 63 2c 20 63 61 6c 6c 2c 20 63 61 6c 6c 65 , c, call, calle
1f30: 65 2c 20 63 61 6c 6c 65 72 2c 20 63 61 6d 65 6c e, caller, camel
1f40: 63 61 73 65 2c 20 63 61 73 65 73 2c 20 63 68 61 case, cases, cha
1f50: 72 41 74 2c 20 63 68 61 72 43 6f 64 65 41 74 2c rAt, charCodeAt,
1f60: 20 63 68 61 72 61 63 74 65 72 2c 0d 0a 20 63 6c character,.. cl
1f70: 65 61 72 49 6e 74 65 72 76 61 6c 2c 20 63 6c 65 earInterval, cle
1f80: 61 72 54 69 6d 65 6f 75 74 2c 20 63 6c 6f 73 65 arTimeout, close
1f90: 2c 20 63 6c 6f 73 65 64 2c 20 63 6c 6f 73 75 72 , closed, closur
1fa0: 65 2c 20 63 6f 6d 6d 65 6e 74 2c 20 63 6f 6e 64 e, comment, cond
1fb0: 69 74 69 6f 6e 2c 20 63 6f 6e 66 69 72 6d 2c 20 ition, confirm,
1fc0: 63 6f 6e 73 6f 6c 65 2c 0d 0a 20 63 6f 6e 73 74 console,.. const
1fd0: 72 75 63 74 6f 72 2c 20 63 6f 6e 74 65 6e 74 2c ructor, content,
1fe0: 20 63 6f 75 63 68 2c 20 63 72 65 61 74 65 2c 20 couch, create,
1ff0: 63 73 73 2c 20 63 75 72 6c 79 2c 20 64 2c 20 64 css, curly, d, d
2000: 61 74 61 2c 20 64 61 74 61 6c 69 73 74 2c 20 64 ata, datalist, d
2010: 64 2c 20 64 65 62 75 67 2c 20 64 65 63 6f 64 65 d, debug, decode
2020: 55 52 49 2c 0d 0a 20 64 65 63 6f 64 65 55 52 49 URI,.. decodeURI
2030: 43 6f 6d 70 6f 6e 65 6e 74 2c 20 64 65 66 61 75 Component, defau
2040: 6c 74 53 74 61 74 75 73 2c 20 64 65 66 69 6e 65 ltStatus, define
2050: 43 6c 61 73 73 2c 20 64 65 73 65 72 69 61 6c 69 Class, deseriali
2060: 7a 65 2c 20 64 65 76 65 6c 2c 20 64 6f 63 75 6d ze, devel, docum
2070: 65 6e 74 2c 0d 0a 20 64 6f 6a 6f 2c 20 64 69 6a ent,.. dojo, dij
2080: 69 74 2c 20 64 6f 6a 6f 78 2c 20 64 65 66 69 6e it, dojox, defin
2090: 65 2c 20 65 6c 73 65 2c 20 65 6d 69 74 2c 20 65 e, else, emit, e
20a0: 6e 63 6f 64 65 55 52 49 2c 20 65 6e 63 6f 64 65 ncodeURI, encode
20b0: 55 52 49 43 6f 6d 70 6f 6e 65 6e 74 2c 0d 0a 20 URIComponent,..
20c0: 65 71 65 71 2c 20 65 71 65 71 65 71 2c 20 65 71 eqeq, eqeqeq, eq
20d0: 6e 75 6c 6c 2c 20 65 72 72 6f 72 73 2c 20 65 73 null, errors, es
20e0: 35 2c 20 65 73 63 61 70 65 2c 20 65 73 6e 65 78 5, escape, esnex
20f0: 74 2c 20 65 76 61 6c 2c 20 65 76 65 6e 74 2c 20 t, eval, event,
2100: 65 76 69 64 65 6e 63 65 2c 20 65 76 69 6c 2c 0d evidence, evil,.
2110: 0a 20 65 78 2c 20 65 78 63 65 70 74 69 6f 6e 2c . ex, exception,
2120: 20 65 78 65 63 2c 20 65 78 70 73 2c 20 65 78 70 exec, exps, exp
2130: 72 2c 20 65 78 70 6f 72 74 73 2c 20 46 69 6c 65 r, exports, File
2140: 52 65 61 64 65 72 2c 20 66 69 72 73 74 2c 20 66 Reader, first, f
2150: 6c 6f 6f 72 2c 20 66 6f 63 75 73 2c 20 66 6f 72 loor, focus, for
2160: 45 61 63 68 2c 0d 0a 20 66 6f 72 69 6e 2c 20 66 Each,.. forin, f
2170: 72 61 67 6d 65 6e 74 2c 20 66 72 61 6d 65 73 2c ragment, frames,
2180: 20 66 72 6f 6d 2c 20 66 72 6f 6d 43 68 61 72 43 from, fromCharC
2190: 6f 64 65 2c 20 66 75 64 2c 20 66 75 6e 63 73 63 ode, fud, funcsc
21a0: 6f 70 65 2c 20 66 75 6e 63 74 2c 20 66 75 6e 63 ope, funct, func
21b0: 74 69 6f 6e 2c 20 66 75 6e 63 74 69 6f 6e 73 2c tion, functions,
21c0: 0d 0a 20 67 2c 20 67 63 2c 20 67 65 74 43 6f 6d .. g, gc, getCom
21d0: 70 75 74 65 64 53 74 79 6c 65 2c 20 67 65 74 52 putedStyle, getR
21e0: 6f 77 2c 20 67 65 74 74 65 72 2c 20 67 65 74 74 ow, getter, gett
21f0: 65 72 54 6f 6b 65 6e 2c 20 47 4c 4f 42 41 4c 2c erToken, GLOBAL,
2200: 20 67 6c 6f 62 61 6c 2c 20 67 6c 6f 62 61 6c 73 global, globals
2210: 2c 20 67 6c 6f 62 61 6c 73 74 72 69 63 74 2c 0d , globalstrict,.
2220: 0a 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 . hasOwnProperty
2230: 2c 20 68 65 6c 70 2c 20 68 69 73 74 6f 72 79 2c , help, history,
2240: 20 69 2c 20 69 64 2c 20 69 64 65 6e 74 69 66 69 i, id, identifi
2250: 65 72 2c 20 69 6d 6d 65 64 2c 20 69 6d 70 6c 69 er, immed, impli
2260: 65 64 73 2c 20 69 6d 70 6f 72 74 50 61 63 6b 61 eds, importPacka
2270: 67 65 2c 20 69 6e 63 6c 75 64 65 2c 0d 0a 20 69 ge, include,.. i
2280: 6e 64 65 6e 74 2c 20 69 6e 64 65 78 4f 66 2c 20 ndent, indexOf,
2290: 69 6e 69 74 2c 20 69 6e 73 2c 20 69 6e 73 74 61 init, ins, insta
22a0: 6e 63 65 4f 66 2c 20 69 73 41 6c 70 68 61 2c 20 nceOf, isAlpha,
22b0: 69 73 41 70 70 6c 69 63 61 74 69 6f 6e 52 75 6e isApplicationRun
22c0: 6e 69 6e 67 2c 20 69 73 41 72 72 61 79 2c 0d 0a ning, isArray,..
22d0: 20 69 73 44 69 67 69 74 2c 20 69 73 46 69 6e 69 isDigit, isFini
22e0: 74 65 2c 20 69 73 4e 61 4e 2c 20 69 74 65 72 61 te, isNaN, itera
22f0: 74 6f 72 2c 20 6a 61 76 61 2c 20 6a 6f 69 6e 2c tor, java, join,
2300: 20 6a 73 68 69 6e 74 2c 0d 0a 20 4a 53 48 49 4e jshint,.. JSHIN
2310: 54 2c 20 6a 73 6f 6e 2c 20 6a 71 75 65 72 79 2c T, json, jquery,
2320: 20 6a 51 75 65 72 79 2c 20 6b 65 79 73 2c 20 6c jQuery, keys, l
2330: 61 62 65 6c 2c 20 6c 61 62 65 6c 6c 65 64 2c 20 abel, labelled,
2340: 6c 61 73 74 2c 20 6c 61 73 74 63 68 61 72 61 63 last, lastcharac
2350: 74 65 72 2c 20 6c 61 73 74 73 65 6d 69 63 2c 20 ter, lastsemic,
2360: 6c 61 78 62 72 65 61 6b 2c 0d 0a 20 6c 61 78 63 laxbreak,.. laxc
2370: 6f 6d 6d 61 2c 20 6c 61 74 65 64 65 66 2c 20 6c omma, latedef, l
2380: 62 70 2c 20 6c 65 64 2c 20 6c 65 66 74 2c 20 6c bp, led, left, l
2390: 65 6e 67 74 68 2c 20 6c 69 6e 65 2c 20 6c 6f 61 ength, line, loa
23a0: 64 2c 20 6c 6f 61 64 43 6c 61 73 73 2c 20 6c 6f d, loadClass, lo
23b0: 63 61 6c 53 74 6f 72 61 67 65 2c 20 6c 6f 63 61 calStorage, loca
23c0: 74 69 6f 6e 2c 0d 0a 20 6c 6f 67 2c 20 6c 6f 6f tion,.. log, loo
23d0: 70 66 75 6e 63 2c 20 6d 2c 20 6d 61 74 63 68 2c pfunc, m, match,
23e0: 20 6d 61 78 2c 20 6d 61 78 65 72 72 2c 20 6d 61 max, maxerr, ma
23f0: 78 6c 65 6e 2c 20 6d 65 6d 62 65 72 2c 6d 65 73 xlen, member,mes
2400: 73 61 67 65 2c 20 6d 65 74 61 2c 20 6d 6f 64 75 sage, meta, modu
2410: 6c 65 2c 20 6d 6f 76 65 42 79 2c 0d 0a 20 6d 6f le, moveBy,.. mo
2420: 76 65 54 6f 2c 20 6d 6f 6f 74 6f 6f 6c 73 2c 20 veTo, mootools,
2430: 6d 75 6c 74 69 73 74 72 2c 20 6e 61 6d 65 2c 20 multistr, name,
2440: 6e 61 76 69 67 61 74 6f 72 2c 20 6e 65 77 2c 20 navigator, new,
2450: 6e 65 77 63 61 70 2c 20 6e 6f 61 72 67 2c 20 6e newcap, noarg, n
2460: 6f 64 65 2c 20 6e 6f 65 6d 70 74 79 2c 20 6e 6f ode, noempty, no
2470: 6d 65 6e 2c 0d 0a 20 6e 6f 6e 65 77 2c 20 6e 6f men,.. nonew, no
2480: 6e 73 74 61 6e 64 61 72 64 2c 20 6e 75 64 2c 20 nstandard, nud,
2490: 6f 6e 62 65 66 6f 72 65 75 6e 6c 6f 61 64 2c 20 onbeforeunload,
24a0: 6f 6e 62 6c 75 72 2c 20 6f 6e 65 72 72 6f 72 2c onblur, onerror,
24b0: 20 6f 6e 65 76 61 72 2c 20 6f 6e 65 63 61 73 65 onevar, onecase
24c0: 2c 20 6f 6e 66 6f 63 75 73 2c 0d 0a 20 6f 6e 6c , onfocus,.. onl
24d0: 6f 61 64 2c 20 6f 6e 72 65 73 69 7a 65 2c 20 6f oad, onresize, o
24e0: 6e 75 6e 6c 6f 61 64 2c 20 6f 70 65 6e 2c 20 6f nunload, open, o
24f0: 70 65 6e 44 61 74 61 62 61 73 65 2c 20 6f 70 65 penDatabase, ope
2500: 6e 55 52 4c 2c 20 6f 70 65 6e 65 72 2c 20 6f 70 nURL, opener, op
2510: 65 72 61 2c 20 6f 70 74 69 6f 6e 73 2c 20 6f 75 era, options, ou
2520: 74 65 72 2c 20 70 61 72 61 6d 2c 0d 0a 20 70 61 ter, param,.. pa
2530: 72 65 6e 74 2c 20 70 61 72 73 65 46 6c 6f 61 74 rent, parseFloat
2540: 2c 20 70 61 72 73 65 49 6e 74 2c 20 70 61 73 73 , parseInt, pass
2550: 66 61 69 6c 2c 20 70 6c 75 73 70 6c 75 73 2c 20 fail, plusplus,
2560: 70 6f 73 74 4d 65 73 73 61 67 65 2c 20 70 6f 70 postMessage, pop
2570: 2c 20 70 72 65 64 65 66 2c 20 70 72 69 6e 74 2c , predef, print,
2580: 20 70 72 6f 63 65 73 73 2c 20 70 72 6f 6d 70 74 process, prompt
2590: 2c 0d 0a 20 70 72 6f 74 6f 2c 20 70 72 6f 74 6f ,.. proto, proto
25a0: 74 79 70 65 2c 20 70 72 6f 74 6f 74 79 70 65 6a type, prototypej
25b0: 73 2c 20 70 72 6f 76 69 64 65 73 2c 20 70 75 73 s, provides, pus
25c0: 68 2c 20 71 75 69 74 2c 20 71 75 6f 74 6d 61 72 h, quit, quotmar
25d0: 6b 2c 20 72 61 6e 67 65 2c 20 72 61 77 2c 20 72 k, range, raw, r
25e0: 65 61 63 68 2c 20 72 65 61 73 6f 6e 2c 20 72 65 each, reason, re
25f0: 67 65 78 70 2c 0d 0a 20 72 65 61 64 46 69 6c 65 gexp,.. readFile
2600: 2c 20 72 65 61 64 55 72 6c 2c 20 72 65 67 65 78 , readUrl, regex
2610: 64 61 73 68 2c 20 72 65 6d 6f 76 65 45 76 65 6e dash, removeEven
2620: 74 4c 69 73 74 65 6e 65 72 2c 20 72 65 70 6c 61 tListener, repla
2630: 63 65 2c 20 72 65 70 6f 72 74 2c 20 72 65 71 75 ce, report, requ
2640: 69 72 65 2c 0d 0a 20 72 65 73 65 72 76 65 64 2c ire,.. reserved,
2650: 20 72 65 73 69 7a 65 42 79 2c 20 72 65 73 69 7a resizeBy, resiz
2660: 65 54 6f 2c 20 72 65 73 6f 6c 76 65 50 61 74 68 eTo, resolvePath
2670: 2c 20 72 65 73 75 6d 65 55 70 64 61 74 65 73 2c , resumeUpdates,
2680: 20 72 65 73 70 6f 6e 64 2c 20 72 68 69 6e 6f 2c respond, rhino,
2690: 20 72 69 67 68 74 2c 0d 0a 20 72 75 6e 43 6f 6d right,.. runCom
26a0: 6d 61 6e 64 2c 20 73 63 72 6f 6c 6c 2c 20 73 63 mand, scroll, sc
26b0: 72 65 65 6e 2c 20 73 63 72 69 70 74 75 72 6c 2c reen, scripturl,
26c0: 20 73 63 72 6f 6c 6c 42 79 2c 20 73 63 72 6f 6c scrollBy, scrol
26d0: 6c 54 6f 2c 20 73 63 72 6f 6c 6c 62 61 72 2c 20 lTo, scrollbar,
26e0: 73 65 61 72 63 68 2c 20 73 65 61 6c 2c 20 73 65 search, seal, se
26f0: 6c 66 2c 0d 0a 20 73 65 6e 64 2c 20 73 65 72 69 lf,.. send, seri
2700: 61 6c 69 7a 65 2c 20 73 65 73 73 69 6f 6e 53 74 alize, sessionSt
2710: 6f 72 61 67 65 2c 20 73 65 74 49 6e 74 65 72 76 orage, setInterv
2720: 61 6c 2c 20 73 65 74 54 69 6d 65 6f 75 74 2c 20 al, setTimeout,
2730: 73 65 74 74 65 72 2c 20 73 65 74 74 65 72 54 6f setter, setterTo
2740: 6b 65 6e 2c 20 73 68 69 66 74 2c 20 73 6c 69 63 ken, shift, slic
2750: 65 2c 0d 0a 20 73 6d 61 72 74 74 61 62 73 2c 20 e,.. smarttabs,
2760: 73 6f 72 74 2c 20 73 70 61 77 6e 2c 20 73 70 6c sort, spawn, spl
2770: 69 74 2c 20 73 74 61 63 6b 2c 20 73 74 61 74 75 it, stack, statu
2780: 73 2c 20 73 74 61 72 74 2c 20 73 74 72 69 63 74 s, start, strict
2790: 2c 20 73 75 62 2c 20 73 75 62 73 74 72 2c 20 73 , sub, substr, s
27a0: 75 70 65 72 6e 65 77 2c 20 73 68 61 64 6f 77 2c upernew, shadow,
27b0: 0d 0a 20 73 75 70 70 6c 61 6e 74 2c 20 73 75 6d .. supplant, sum
27c0: 2c 20 73 79 6e 63 2c 20 74 65 73 74 2c 20 74 6f , sync, test, to
27d0: 4c 6f 77 65 72 43 61 73 65 2c 20 74 6f 53 74 72 LowerCase, toStr
27e0: 69 6e 67 2c 20 74 6f 55 70 70 65 72 43 61 73 65 ing, toUpperCase
27f0: 2c 20 74 6f 69 6e 74 33 32 2c 20 74 6f 6b 65 6e , toint32, token
2800: 2c 20 74 6f 6b 65 6e 73 2c 20 74 6f 70 2c 0d 0a , tokens, top,..
2810: 20 74 72 61 69 6c 69 6e 67 2c 20 74 79 70 65 2c trailing, type,
2820: 20 74 79 70 65 4f 66 2c 20 55 69 6e 74 31 36 41 typeOf, Uint16A
2830: 72 72 61 79 2c 20 55 69 6e 74 33 32 41 72 72 61 rray, Uint32Arra
2840: 79 2c 20 55 69 6e 74 38 41 72 72 61 79 2c 20 75 y, Uint8Array, u
2850: 6e 64 65 66 2c 20 75 6e 64 65 66 73 2c 20 75 6e ndef, undefs, un
2860: 75 73 65 64 2c 0d 0a 20 75 72 6c 73 2c 20 76 61 used,.. urls, va
2870: 6c 69 64 74 68 69 73 2c 20 76 61 6c 75 65 2c 20 lidthis, value,
2880: 76 61 6c 75 65 4f 66 2c 20 76 61 72 2c 20 76 61 valueOf, var, va
2890: 72 73 2c 20 76 65 72 73 69 6f 6e 2c 20 57 65 62 rs, version, Web
28a0: 53 6f 63 6b 65 74 2c 20 77 69 74 68 73 74 6d 74 Socket, withstmt
28b0: 2c 20 77 68 69 74 65 2c 20 77 69 6e 64 6f 77 2c , white, window,
28c0: 20 77 69 6e 64 6f 77 73 2c 0d 0a 20 57 6f 72 6b windows,.. Work
28d0: 65 72 2c 20 77 6f 72 6b 65 72 2c 20 77 73 68 2a er, worker, wsh*
28e0: 2f 0d 0a 0d 0a 2f 2a 67 6c 6f 62 61 6c 20 65 78 /..../*global ex
28f0: 70 6f 72 74 73 3a 20 66 61 6c 73 65 20 2a 2f 0d ports: false */.
2900: 0a 0d 0a 2f 2f 20 57 65 20 62 75 69 6c 64 20 74 ...// We build t
2910: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 he application i
2920: 6e 73 69 64 65 20 61 20 66 75 6e 63 74 69 6f 6e nside a function
2930: 20 73 6f 20 74 68 61 74 20 77 65 20 70 72 6f 64 so that we prod
2940: 75 63 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c uce only a singl
2950: 65 0d 0a 2f 2f 20 67 6c 6f 62 61 6c 20 76 61 72 e..// global var
2960: 69 61 62 6c 65 2e 20 54 68 61 74 20 66 75 6e 63 iable. That func
2970: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 69 6e 76 tion will be inv
2980: 6f 6b 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 oked immediately
2990: 2c 20 61 6e 64 20 69 74 73 20 72 65 74 75 72 6e , and its return
29a0: 0d 0a 2f 2f 20 76 61 6c 75 65 20 69 73 20 74 68 ..// value is th
29b0: 65 20 4a 53 48 49 4e 54 20 66 75 6e 63 74 69 6f e JSHINT functio
29c0: 6e 20 69 74 73 65 6c 66 2e 0d 0a 0d 0a 76 61 72 n itself.....var
29d0: 20 4a 53 48 49 4e 54 20 3d 20 28 66 75 6e 63 74 JSHINT = (funct
29e0: 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 22 75 ion () {.. "u
29f0: 73 65 20 73 74 72 69 63 74 22 3b 0d 0a 0d 0a 20 se strict";....
2a00: 20 20 20 76 61 72 20 61 6e 6f 6e 6e 61 6d 65 2c var anonname,
2a10: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 67 75 // The gu
2a20: 65 73 73 65 64 20 6e 61 6d 65 20 66 6f 72 20 61 essed name for a
2a30: 6e 6f 6e 79 6d 6f 75 73 20 66 75 6e 63 74 69 6f nonymous functio
2a40: 6e 73 2e 0d 0a 0d 0a 2f 2f 20 54 68 65 73 65 20 ns.....// These
2a50: 61 72 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68 are operators th
2a60: 61 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 at should not be
2a70: 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20 21 used with the !
2a80: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 0d 0a 20 20 operator.....
2a90: 20 20 20 20 20 20 62 61 6e 67 20 3d 20 7b 0d 0a bang = {..
2aa0: 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 22 20 "<"
2ab0: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
2ac0: 20 20 20 20 20 20 22 3c 3d 22 20 3a 20 74 72 75 "<=" : tru
2ad0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
2ae0: 22 3d 3d 22 20 3a 20 74 72 75 65 2c 0d 0a 20 20 "==" : true,..
2af0: 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d 22 3a "===":
2b00: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 true,..
2b10: 20 20 20 20 22 21 3d 3d 22 3a 20 74 72 75 65 2c "!==": true,
2b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 21 .. "!
2b30: 3d 22 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 =" : true,..
2b40: 20 20 20 20 20 20 20 20 22 3e 22 20 20 3a 20 74 ">" : t
2b50: 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 rue,..
2b60: 20 20 22 3e 3d 22 20 3a 20 74 72 75 65 2c 0d 0a ">=" : true,..
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 22 2b 22 20 "+"
2b80: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
2b90: 20 20 20 20 20 20 22 2d 22 20 20 3a 20 74 72 75 "-" : tru
2ba0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
2bb0: 22 2a 22 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 "*" : true,..
2bc0: 20 20 20 20 20 20 20 20 20 20 22 2f 22 20 20 3a "/" :
2bd0: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 true,..
2be0: 20 20 20 20 22 25 22 20 20 3a 20 74 72 75 65 0d "%" : true.
2bf0: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 . },....
2c00: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 73 65 20 // These
2c10: 61 72 65 20 74 68 65 20 4a 53 48 69 6e 74 20 62 are the JSHint b
2c20: 6f 6f 6c 65 61 6e 20 6f 70 74 69 6f 6e 73 2e 0d oolean options..
2c30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 4f 70 74 . boolOpt
2c40: 69 6f 6e 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 ions = {..
2c50: 20 20 20 20 20 20 61 73 69 20 20 20 20 20 20 20 asi
2c60: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 : true, // if
2c70: 61 75 74 6f 6d 61 74 69 63 20 73 65 6d 69 63 6f automatic semico
2c80: 6c 6f 6e 20 69 6e 73 65 72 74 69 6f 6e 20 73 68 lon insertion sh
2c90: 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61 74 65 ould be tolerate
2ca0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 d.. b
2cb0: 69 74 77 69 73 65 20 20 20 20 20 3a 20 74 72 75 itwise : tru
2cc0: 65 2c 20 2f 2f 20 69 66 20 62 69 74 77 69 73 65 e, // if bitwise
2cd0: 20 6f 70 65 72 61 74 6f 72 73 20 73 68 6f 75 6c operators shoul
2ce0: 64 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 77 65 64 d not be allowed
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f .. bo
2d00: 73 73 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 ss : true
2d10: 2c 20 2f 2f 20 69 66 20 61 64 76 61 6e 63 65 64 , // if advanced
2d20: 20 75 73 61 67 65 20 6f 66 20 61 73 73 69 67 6e usage of assign
2d30: 6d 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 ments should be
2d40: 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 allowed..
2d50: 20 20 20 20 20 62 72 6f 77 73 65 72 20 20 20 20 browser
2d60: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74 : true, // if t
2d70: 68 65 20 73 74 61 6e 64 61 72 64 20 62 72 6f 77 he standard brow
2d80: 73 65 72 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 ser globals shou
2d90: 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 ld be predefined
2da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 .. ca
2db0: 6d 65 6c 63 61 73 65 20 20 20 3a 20 74 72 75 65 melcase : true
2dc0: 2c 20 2f 2f 20 69 66 20 69 64 65 6e 74 69 66 69 , // if identifi
2dd0: 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 72 65 ers should be re
2de0: 71 75 69 72 65 64 20 69 6e 20 63 61 6d 65 6c 20 quired in camel
2df0: 63 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 case..
2e00: 20 20 63 6f 75 63 68 20 20 20 20 20 20 20 3a 20 couch :
2e10: 74 72 75 65 2c 20 2f 2f 20 69 66 20 43 6f 75 63 true, // if Couc
2e20: 68 44 42 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 hDB globals shou
2e30: 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 ld be predefined
2e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75 .. cu
2e50: 72 6c 79 20 20 20 20 20 20 20 3a 20 74 72 75 65 rly : true
2e60: 2c 20 2f 2f 20 69 66 20 63 75 72 6c 79 20 62 72 , // if curly br
2e70: 61 63 65 73 20 61 72 6f 75 6e 64 20 61 6c 6c 20 aces around all
2e80: 62 6c 6f 63 6b 73 20 73 68 6f 75 6c 64 20 62 65 blocks should be
2e90: 20 72 65 71 75 69 72 65 64 0d 0a 20 20 20 20 20 required..
2ea0: 20 20 20 20 20 20 20 64 65 62 75 67 20 20 20 20 debug
2eb0: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 : true, // if
2ec0: 20 64 65 62 75 67 67 65 72 20 73 74 61 74 65 6d debugger statem
2ed0: 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 61 ents should be a
2ee0: 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 20 llowed..
2ef0: 20 20 20 20 64 65 76 65 6c 20 20 20 20 20 20 20 devel
2f00: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 6c 6f : true, // if lo
2f10: 67 67 69 6e 67 20 67 6c 6f 62 61 6c 73 20 73 68 gging globals sh
2f20: 6f 75 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e ould be predefin
2f30: 65 64 20 28 63 6f 6e 73 6f 6c 65 2c 0d 0a 20 20 ed (console,..
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
2f60: 20 61 6c 65 72 74 2c 20 65 74 63 2e 29 0d 0a 20 alert, etc.)..
2f70: 20 20 20 20 20 20 20 20 20 20 20 64 6f 6a 6f 20 dojo
2f80: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f : true, /
2f90: 2f 20 69 66 20 44 6f 6a 6f 20 54 6f 6f 6c 6b 69 / if Dojo Toolki
2fa0: 74 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 t globals should
2fb0: 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a be predefined..
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 65 71 65 71 eqeq
2fd0: 65 71 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 eq : true,
2fe0: 2f 2f 20 69 66 20 3d 3d 3d 20 73 68 6f 75 6c 64 // if === should
2ff0: 20 62 65 20 72 65 71 75 69 72 65 64 0d 0a 20 20 be required..
3000: 20 20 20 20 20 20 20 20 20 20 65 71 6e 75 6c 6c eqnull
3010: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f : true, //
3020: 20 69 66 20 3d 3d 20 6e 75 6c 6c 20 63 6f 6d 70 if == null comp
3030: 61 72 69 73 6f 6e 73 20 73 68 6f 75 6c 64 20 62 arisons should b
3040: 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20 20 e tolerated..
3050: 20 20 20 20 20 20 20 20 20 65 73 35 20 20 20 20 es5
3060: 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 : true, //
3070: 69 66 20 45 53 35 20 73 79 6e 74 61 78 20 73 68 if ES5 syntax sh
3080: 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d ould be allowed.
3090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 73 6e . esn
30a0: 65 78 74 20 20 20 20 20 20 3a 20 74 72 75 65 2c ext : true,
30b0: 20 2f 2f 20 69 66 20 65 73 2e 6e 65 78 74 20 73 // if es.next s
30c0: 70 65 63 69 66 69 63 20 73 79 6e 74 61 78 20 73 pecific syntax s
30d0: 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 hould be allowed
30e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76 .. ev
30f0: 69 6c 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 il : true
3100: 2c 20 2f 2f 20 69 66 20 65 76 61 6c 20 73 68 6f , // if eval sho
3110: 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a uld be allowed..
3120: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 expr
3130: 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 : true,
3140: 2f 2f 20 69 66 20 45 78 70 72 65 73 73 69 6f 6e // if Expression
3150: 53 74 61 74 65 6d 65 6e 74 20 73 68 6f 75 6c 64 Statement should
3160: 20 62 65 20 61 6c 6c 6f 77 65 64 20 61 73 20 50 be allowed as P
3170: 72 6f 67 72 61 6d 73 0d 0a 20 20 20 20 20 20 20 rograms..
3180: 20 20 20 20 20 66 6f 72 69 6e 20 20 20 20 20 20 forin
3190: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 66 : true, // if f
31a0: 6f 72 20 69 6e 20 73 74 61 74 65 6d 65 6e 74 73 or in statements
31b0: 20 6d 75 73 74 20 66 69 6c 74 65 72 0d 0a 20 20 must filter..
31c0: 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 73 63 funcsc
31d0: 6f 70 65 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f ope : true, //
31e0: 20 69 66 20 6f 6e 6c 79 20 66 75 6e 63 74 69 6f if only functio
31f0: 6e 20 73 63 6f 70 65 20 73 68 6f 75 6c 64 20 62 n scope should b
3200: 65 20 75 73 65 64 20 66 6f 72 20 73 63 6f 70 65 e used for scope
3210: 20 74 65 73 74 73 0d 0a 20 20 20 20 20 20 20 20 tests..
3220: 20 20 20 20 67 6c 6f 62 61 6c 73 74 72 69 63 74 globalstrict
3230: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 67 6c : true, // if gl
3240: 6f 62 61 6c 20 22 75 73 65 20 73 74 72 69 63 74 obal "use strict
3250: 22 3b 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 6c "; should be all
3260: 6f 77 65 64 20 28 61 6c 73 6f 0d 0a 20 20 20 20 owed (also..
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3280: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 // e
3290: 6e 61 62 6c 65 73 20 27 73 74 72 69 63 74 27 29 nables 'strict')
32a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d .. im
32b0: 6d 65 64 20 20 20 20 20 20 20 3a 20 74 72 75 65 med : true
32c0: 2c 20 2f 2f 20 69 66 20 69 6d 6d 65 64 69 61 74 , // if immediat
32d0: 65 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20 6d 75 e invocations mu
32e0: 73 74 20 62 65 20 77 72 61 70 70 65 64 20 69 6e st be wrapped in
32f0: 20 70 61 72 65 6e 73 0d 0a 20 20 20 20 20 20 20 parens..
3300: 20 20 20 20 20 69 74 65 72 61 74 6f 72 20 20 20 iterator
3310: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74 : true, // if t
3320: 68 65 20 60 5f 5f 69 74 65 72 61 74 6f 72 5f 5f he `__iterator__
3330: 60 20 70 72 6f 70 65 72 74 79 20 73 68 6f 75 6c ` property shoul
3340: 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 d be allowed..
3350: 20 20 20 20 20 20 20 20 20 20 6a 71 75 65 72 79 jquery
3360: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f : true, //
3370: 20 69 66 20 6a 51 75 65 72 79 20 67 6c 6f 62 61 if jQuery globa
3380: 6c 73 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65 ls should be pre
3390: 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 defined..
33a0: 20 20 20 20 20 6c 61 73 74 73 65 6d 69 63 20 20 lastsemic
33b0: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 73 : true, // if s
33c0: 65 6d 69 63 6f 6c 6f 6e 73 20 6d 61 79 20 62 65 emicolons may be
33d0: 20 6f 6d 6d 69 74 74 65 64 20 66 6f 72 20 74 68 ommitted for th
33e0: 65 20 74 72 61 69 6c 69 6e 67 0d 0a 20 20 20 20 e trailing..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 // s
3410: 74 61 74 65 6d 65 6e 74 73 20 69 6e 73 69 64 65 tatements inside
3420: 20 6f 66 20 61 20 6f 6e 65 2d 6c 69 6e 65 20 62 of a one-line b
3430: 6c 6f 63 6b 73 2e 0d 0a 20 20 20 20 20 20 20 20 locks...
3440: 20 20 20 20 6c 61 74 65 64 65 66 20 20 20 20 20 latedef
3450: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74 68 : true, // if th
3460: 65 20 75 73 65 20 62 65 66 6f 72 65 20 64 65 66 e use before def
3470: 69 6e 69 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e inition should n
3480: 6f 74 20 62 65 20 74 6f 6c 65 72 61 74 65 64 0d ot be tolerated.
3490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 78 . lax
34a0: 62 72 65 61 6b 20 20 20 20 3a 20 74 72 75 65 2c break : true,
34b0: 20 2f 2f 20 69 66 20 6c 69 6e 65 20 62 72 65 61 // if line brea
34c0: 6b 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 ks should not be
34d0: 20 63 68 65 63 6b 65 64 0d 0a 20 20 20 20 20 20 checked..
34e0: 20 20 20 20 20 20 6c 61 78 63 6f 6d 6d 61 20 20 laxcomma
34f0: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 : true, // if
3500: 6c 69 6e 65 20 62 72 65 61 6b 73 20 73 68 6f 75 line breaks shou
3510: 6c 64 20 6e 6f 74 20 62 65 20 63 68 65 63 6b 65 ld not be checke
3520: 64 20 61 72 6f 75 6e 64 20 63 6f 6d 6d 61 73 0d d around commas.
3530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f . loo
3540: 70 66 75 6e 63 20 20 20 20 3a 20 74 72 75 65 2c pfunc : true,
3550: 20 2f 2f 20 69 66 20 66 75 6e 63 74 69 6f 6e 73 // if functions
3560: 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 should be allow
3570: 65 64 20 74 6f 20 62 65 20 64 65 66 69 6e 65 64 ed to be defined
3580: 20 77 69 74 68 69 6e 0d 0a 20 20 20 20 20 20 20 within..
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
35a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 6f 6f 70 // loop
35b0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d s.. m
35c0: 6f 6f 74 6f 6f 6c 73 20 20 20 20 3a 20 74 72 75 ootools : tru
35d0: 65 2c 20 2f 2f 20 69 66 20 4d 6f 6f 54 6f 6f 6c e, // if MooTool
35e0: 73 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 s globals should
35f0: 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a be predefined..
3600: 20 20 20 20 20 20 20 20 20 20 20 20 6d 75 6c 74 mult
3610: 69 73 74 72 20 20 20 20 3a 20 74 72 75 65 2c 20 istr : true,
3620: 2f 2f 20 61 6c 6c 6f 77 20 6d 75 6c 74 69 6c 69 // allow multili
3630: 6e 65 20 73 74 72 69 6e 67 73 0d 0a 20 20 20 20 ne strings..
3640: 20 20 20 20 20 20 20 20 6e 65 77 63 61 70 20 20 newcap
3650: 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 : true, // i
3660: 66 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 6e 61 f constructor na
3670: 6d 65 73 20 6d 75 73 74 20 62 65 20 63 61 70 69 mes must be capi
3680: 74 61 6c 69 7a 65 64 0d 0a 20 20 20 20 20 20 20 talized..
3690: 20 20 20 20 20 6e 6f 61 72 67 20 20 20 20 20 20 noarg
36a0: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 61 : true, // if a
36b0: 72 67 75 6d 65 6e 74 73 2e 63 61 6c 6c 65 72 20 rguments.caller
36c0: 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 2e 63 61 and arguments.ca
36d0: 6c 6c 65 65 20 73 68 6f 75 6c 64 20 62 65 0d 0a llee should be..
36e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3700: 2f 2f 20 64 69 73 61 6c 6c 6f 77 65 64 0d 0a 20 // disallowed..
3710: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 node
3720: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f : true, /
3730: 2f 20 69 66 20 74 68 65 20 4e 6f 64 65 2e 6a 73 / if the Node.js
3740: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 67 6c 6f environment glo
3750: 62 61 6c 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a bals should be..
3760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3780: 2f 2f 20 70 72 65 64 65 66 69 6e 65 64 0d 0a 20 // predefined..
3790: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 65 6d 70 noemp
37a0: 74 79 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f ty : true, /
37b0: 2f 20 69 66 20 65 6d 70 74 79 20 62 6c 6f 63 6b / if empty block
37c0: 73 20 73 68 6f 75 6c 64 20 62 65 20 64 69 73 61 s should be disa
37d0: 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 20 llowed..
37e0: 20 20 20 20 6e 6f 6e 65 77 20 20 20 20 20 20 20 nonew
37f0: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 75 73 : true, // if us
3800: 69 6e 67 20 60 6e 65 77 60 20 66 6f 72 20 73 69 ing `new` for si
3810: 64 65 2d 65 66 66 65 63 74 73 20 73 68 6f 75 6c de-effects shoul
3820: 64 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 0d d be disallowed.
3830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e . non
3840: 73 74 61 6e 64 61 72 64 20 3a 20 74 72 75 65 2c standard : true,
3850: 20 2f 2f 20 69 66 20 6e 6f 6e 2d 73 74 61 6e 64 // if non-stand
3860: 61 72 64 20 28 62 75 74 20 77 69 64 65 6c 79 20 ard (but widely
3870: 61 64 6f 70 74 65 64 29 20 67 6c 6f 62 61 6c 73 adopted) globals
3880: 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 should..
3890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 62 65 20 70 // be p
38b0: 72 65 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 redefined..
38c0: 20 20 20 20 20 20 20 6e 6f 6d 65 6e 20 20 20 20 nomen
38d0: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 : true, // if
38e0: 20 6e 61 6d 65 73 20 73 68 6f 75 6c 64 20 62 65 names should be
38f0: 20 63 68 65 63 6b 65 64 0d 0a 20 20 20 20 20 20 checked..
3900: 20 20 20 20 20 20 6f 6e 65 76 61 72 20 20 20 20 onevar
3910: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 : true, // if
3920: 6f 6e 6c 79 20 6f 6e 65 20 76 61 72 20 73 74 61 only one var sta
3930: 74 65 6d 65 6e 74 20 70 65 72 20 66 75 6e 63 74 tement per funct
3940: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 ion should be..
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
3970: 2f 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 / allowed..
3980: 20 20 20 20 20 20 20 6f 6e 65 63 61 73 65 20 20 onecase
3990: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 : true, // if
39a0: 20 6f 6e 65 20 63 61 73 65 20 73 77 69 74 63 68 one case switch
39b0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 68 6f 75 statements shou
39c0: 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 ld be allowed..
39d0: 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 66 passf
39e0: 61 69 6c 20 20 20 20 3a 20 74 72 75 65 2c 20 2f ail : true, /
39f0: 2f 20 69 66 20 74 68 65 20 73 63 61 6e 20 73 68 / if the scan sh
3a00: 6f 75 6c 64 20 73 74 6f 70 20 6f 6e 20 66 69 72 ould stop on fir
3a10: 73 74 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 st error..
3a20: 20 20 20 20 20 20 70 6c 75 73 70 6c 75 73 20 20 plusplus
3a30: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 : true, // if
3a40: 69 6e 63 72 65 6d 65 6e 74 2f 64 65 63 72 65 6d increment/decrem
3a50: 65 6e 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 ent should not b
3a60: 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 e allowed..
3a70: 20 20 20 20 20 20 20 70 72 6f 74 6f 20 20 20 20 proto
3a80: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 : true, // if
3a90: 20 74 68 65 20 60 5f 5f 70 72 6f 74 6f 5f 5f 60 the `__proto__`
3aa0: 20 70 72 6f 70 65 72 74 79 20 73 68 6f 75 6c 64 property should
3ab0: 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 be allowed..
3ac0: 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 74 79 prototy
3ad0: 70 65 6a 73 20 3a 20 74 72 75 65 2c 20 2f 2f 20 pejs : true, //
3ae0: 69 66 20 50 72 6f 74 6f 74 79 70 65 20 61 6e 64 if Prototype and
3af0: 20 53 63 72 69 70 74 61 63 75 6c 6f 75 73 20 67 Scriptaculous g
3b00: 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 20 62 65 lobals should be
3b10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b30: 20 20 2f 2f 20 70 72 65 64 65 66 69 6e 65 64 0d // predefined.
3b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 . reg
3b50: 65 78 64 61 73 68 20 20 20 3a 20 74 72 75 65 2c exdash : true,
3b60: 20 2f 2f 20 69 66 20 75 6e 65 73 63 61 70 65 64 // if unescaped
3b70: 20 66 69 72 73 74 2f 6c 61 73 74 20 64 61 73 68 first/last dash
3b80: 20 28 2d 29 20 69 6e 73 69 64 65 20 62 72 61 63 (-) inside brac
3b90: 6b 65 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 kets..
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3bb0: 20 20 20 20 20 20 2f 2f 20 73 68 6f 75 6c 64 20 // should
3bc0: 62 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20 be tolerated..
3bd0: 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 70 regexp
3be0: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f : true, //
3bf0: 20 69 66 20 74 68 65 20 2e 20 73 68 6f 75 6c 64 if the . should
3c00: 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 77 65 64 20 not be allowed
3c10: 69 6e 20 72 65 67 65 78 70 20 6c 69 74 65 72 61 in regexp litera
3c20: 6c 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ls..
3c30: 72 68 69 6e 6f 20 20 20 20 20 20 20 3a 20 74 72 rhino : tr
3c40: 75 65 2c 20 2f 2f 20 69 66 20 74 68 65 20 52 68 ue, // if the Rh
3c50: 69 6e 6f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 ino environment
3c60: 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 20 62 globals should b
3c70: 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a 20 20 e predefined..
3c80: 20 20 20 20 20 20 20 20 20 20 75 6e 64 65 66 20 undef
3c90: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f : true, //
3ca0: 20 69 66 20 76 61 72 69 61 62 6c 65 73 20 73 68 if variables sh
3cb0: 6f 75 6c 64 20 62 65 20 64 65 63 6c 61 72 65 64 ould be declared
3cc0: 20 62 65 66 6f 72 65 20 75 73 65 64 0d 0a 20 20 before used..
3cd0: 20 20 20 20 20 20 20 20 20 20 75 6e 75 73 65 64 unused
3ce0: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f : true, //
3cf0: 20 69 66 20 76 61 72 69 61 62 6c 65 73 20 73 68 if variables sh
3d00: 6f 75 6c 64 20 62 65 20 61 6c 77 61 79 73 20 75 ould be always u
3d10: 73 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 sed..
3d20: 20 73 63 72 69 70 74 75 72 6c 20 20 20 3a 20 74 scripturl : t
3d30: 72 75 65 2c 20 2f 2f 20 69 66 20 73 63 72 69 70 rue, // if scrip
3d40: 74 2d 74 61 72 67 65 74 65 64 20 55 52 4c 73 20 t-targeted URLs
3d50: 73 68 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61 should be tolera
3d60: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ted..
3d70: 20 73 68 61 64 6f 77 20 20 20 20 20 20 3a 20 74 shadow : t
3d80: 72 75 65 2c 20 2f 2f 20 69 66 20 76 61 72 69 61 rue, // if varia
3d90: 62 6c 65 20 73 68 61 64 6f 77 69 6e 67 20 73 68 ble shadowing sh
3da0: 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61 74 65 ould be tolerate
3db0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 d.. s
3dc0: 6d 61 72 74 74 61 62 73 20 20 20 3a 20 74 72 75 marttabs : tru
3dd0: 65 2c 20 2f 2f 20 69 66 20 73 6d 61 72 74 74 61 e, // if smartta
3de0: 62 73 20 73 68 6f 75 6c 64 20 62 65 20 74 6f 6c bs should be tol
3df0: 65 72 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 erated..
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e10: 20 20 20 20 20 20 20 20 2f 2f 20 28 68 74 74 70 // (http
3e20: 3a 2f 2f 77 77 77 2e 65 6d 61 63 73 77 69 6b 69 ://www.emacswiki
3e30: 2e 6f 72 67 2f 65 6d 61 63 73 2f 53 6d 61 72 74 .org/emacs/Smart
3e40: 54 61 62 73 29 0d 0a 20 20 20 20 20 20 20 20 20 Tabs)..
3e50: 20 20 20 73 74 72 69 63 74 20 20 20 20 20 20 3a strict :
3e60: 20 74 72 75 65 2c 20 2f 2f 20 72 65 71 75 69 72 true, // requir
3e70: 65 20 74 68 65 20 22 75 73 65 20 73 74 72 69 63 e the "use stric
3e80: 74 22 3b 20 70 72 61 67 6d 61 0d 0a 20 20 20 20 t"; pragma..
3e90: 20 20 20 20 20 20 20 20 73 75 62 20 20 20 20 20 sub
3ea0: 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 : true, // i
3eb0: 66 20 61 6c 6c 20 66 6f 72 6d 73 20 6f 66 20 73 f all forms of s
3ec0: 75 62 73 63 72 69 70 74 20 6e 6f 74 61 74 69 6f ubscript notatio
3ed0: 6e 20 61 72 65 20 74 6f 6c 65 72 61 74 65 64 0d n are tolerated.
3ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 75 70 . sup
3ef0: 65 72 6e 65 77 20 20 20 20 3a 20 74 72 75 65 2c ernew : true,
3f00: 20 2f 2f 20 69 66 20 60 6e 65 77 20 66 75 6e 63 // if `new func
3f10: 74 69 6f 6e 20 28 29 20 7b 20 2e 2e 2e 20 7d 3b tion () { ... };
3f20: 60 20 61 6e 64 20 60 6e 65 77 20 4f 62 6a 65 63 ` and `new Objec
3f30: 74 3b 60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t;`..
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f50: 20 20 20 20 20 2f 2f 20 73 68 6f 75 6c 64 20 62 // should b
3f60: 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20 20 e tolerated..
3f70: 20 20 20 20 20 20 20 20 20 74 72 61 69 6c 69 6e trailin
3f80: 67 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 g : true, //
3f90: 69 66 20 74 72 61 69 6c 69 6e 67 20 77 68 69 74 if trailing whit
3fa0: 65 73 70 61 63 65 20 72 75 6c 65 73 20 61 70 70 espace rules app
3fb0: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ly..
3fc0: 76 61 6c 69 64 74 68 69 73 20 20 20 3a 20 74 72 validthis : tr
3fd0: 75 65 2c 20 2f 2f 20 69 66 20 27 74 68 69 73 27 ue, // if 'this'
3fe0: 20 69 6e 73 69 64 65 20 61 20 6e 6f 6e 2d 63 6f inside a non-co
3ff0: 6e 73 74 72 75 63 74 6f 72 20 66 75 6e 63 74 69 nstructor functi
4000: 6f 6e 20 69 73 20 76 61 6c 69 64 2e 0d 0a 20 20 on is valid...
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
4030: 20 54 68 69 73 20 69 73 20 61 20 66 75 6e 63 74 This is a funct
4040: 69 6f 6e 20 73 63 6f 70 65 64 20 6f 70 74 69 6f ion scoped optio
4050: 6e 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20 n only...
4060: 20 20 20 20 20 77 69 74 68 73 74 6d 74 20 20 20 withstmt
4070: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 77 : true, // if w
4080: 69 74 68 20 73 74 61 74 65 6d 65 6e 74 73 20 73 ith statements s
4090: 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 hould be allowed
40a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 .. wh
40b0: 69 74 65 20 20 20 20 20 20 20 3a 20 74 72 75 65 ite : true
40c0: 2c 20 2f 2f 20 69 66 20 73 74 72 69 63 74 20 77 , // if strict w
40d0: 68 69 74 65 73 70 61 63 65 20 72 75 6c 65 73 20 hitespace rules
40e0: 61 70 70 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 apply..
40f0: 20 20 20 77 6f 72 6b 65 72 20 20 20 20 20 20 3a worker :
4100: 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 57 65 62 true, // if Web
4110: 20 57 6f 72 6b 65 72 20 73 63 72 69 70 74 20 73 Worker script s
4120: 79 6d 62 6f 6c 73 20 73 68 6f 75 6c 64 20 62 65 ymbols should be
4130: 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 allowed..
4140: 20 20 20 20 20 20 77 73 68 20 20 20 20 20 20 20 wsh
4150: 20 20 3a 20 74 72 75 65 20 20 2f 2f 20 69 66 20 : true // if
4160: 74 68 65 20 57 69 6e 64 6f 77 73 20 53 63 72 69 the Windows Scri
4170: 70 74 69 6e 67 20 48 6f 73 74 20 65 6e 76 69 72 pting Host envir
4180: 6f 6e 6d 65 6e 74 20 67 6c 6f 62 61 6c 73 0d 0a onment globals..
4190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
41b0: 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65 // should be pre
41c0: 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 defined..
41d0: 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f },.... /
41e0: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 / These are the
41f0: 4a 53 48 69 6e 74 20 6f 70 74 69 6f 6e 73 20 74 JSHint options t
4200: 68 61 74 20 63 61 6e 20 74 61 6b 65 20 61 6e 79 hat can take any
4210: 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 value..
4220: 2f 2f 20 28 77 65 20 75 73 65 20 74 68 69 73 20 // (we use this
4230: 6f 62 6a 65 63 74 20 74 6f 20 64 65 74 65 63 74 object to detect
4240: 20 69 6e 76 61 6c 69 64 20 6f 70 74 69 6f 6e 73 invalid options
4250: 29 0d 0a 20 20 20 20 20 20 20 20 76 61 6c 4f 70 ).. valOp
4260: 74 69 6f 6e 73 20 3d 20 7b 0d 0a 20 20 20 20 20 tions = {..
4270: 20 20 20 20 20 20 20 6d 61 78 6c 65 6e 3a 20 66 maxlen: f
4280: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
4290: 20 20 20 69 6e 64 65 6e 74 3a 20 66 61 6c 73 65 indent: false
42a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d ,.. m
42b0: 61 78 65 72 72 3a 20 66 61 6c 73 65 2c 0d 0a 20 axerr: false,..
42c0: 20 20 20 20 20 20 20 20 20 20 20 70 72 65 64 65 prede
42d0: 66 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 f: false,..
42e0: 20 20 20 20 20 20 20 71 75 6f 74 6d 61 72 6b 3a quotmark:
42f0: 20 66 61 6c 73 65 20 2f 2f 27 73 69 6e 67 6c 65 false //'single
4300: 27 7c 27 64 6f 75 62 6c 65 27 7c 74 72 75 65 0d '|'double'|true.
4310: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 . },....
4320: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 73 65 20 // These
4330: 61 72 65 20 4a 53 48 69 6e 74 20 62 6f 6f 6c 65 are JSHint boole
4340: 61 6e 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68 an options which
4350: 20 61 72 65 20 73 68 61 72 65 64 20 77 69 74 68 are shared with
4360: 20 4a 53 4c 69 6e 74 0d 0a 20 20 20 20 20 20 20 JSLint..
4370: 20 2f 2f 20 77 68 65 72 65 20 74 68 65 20 64 65 // where the de
4380: 66 69 6e 69 74 69 6f 6e 20 69 6e 20 4a 53 48 69 finition in JSHi
4390: 6e 74 20 69 73 20 6f 70 70 6f 73 69 74 65 20 4a nt is opposite J
43a0: 53 4c 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 69 SLint.. i
43b0: 6e 76 65 72 74 65 64 4f 70 74 69 6f 6e 73 20 3d nvertedOptions =
43c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
43d0: 62 69 74 77 69 73 65 20 20 20 20 20 3a 20 74 72 bitwise : tr
43e0: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue,..
43f0: 20 66 6f 72 69 6e 20 20 20 20 20 20 20 3a 20 74 forin : t
4400: 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 rue,..
4410: 20 20 6e 65 77 63 61 70 20 20 20 20 20 20 3a 20 newcap :
4420: 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 true,..
4430: 20 20 20 6e 6f 6d 65 6e 20 20 20 20 20 20 20 3a nomen :
4440: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 true,..
4450: 20 20 20 20 70 6c 75 73 70 6c 75 73 20 20 20 20 plusplus
4460: 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 : true,..
4470: 20 20 20 20 20 72 65 67 65 78 70 20 20 20 20 20 regexp
4480: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
4490: 20 20 20 20 20 20 75 6e 64 65 66 20 20 20 20 20 undef
44a0: 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 : true,..
44b0: 20 20 20 20 20 20 20 77 68 69 74 65 20 20 20 20 white
44c0: 20 20 20 3a 20 74 72 75 65 2c 0d 0a 0d 0a 20 20 : true,....
44d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 76 // Inv
44e0: 65 72 74 65 64 20 61 6e 64 20 72 65 6e 61 6d 65 erted and rename
44f0: 64 2c 20 75 73 65 20 4a 53 48 69 6e 74 20 6e 61 d, use JSHint na
4500: 6d 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20 me here..
4510: 20 20 20 20 20 65 71 65 71 65 71 20 20 20 20 20 eqeqeq
4520: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
4530: 20 20 20 20 20 20 6f 6e 65 76 61 72 20 20 20 20 onevar
4540: 20 20 3a 20 74 72 75 65 0d 0a 20 20 20 20 20 20 : true..
4550: 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 },....
4560: 2f 2f 20 54 68 65 73 65 20 61 72 65 20 4a 53 48 // These are JSH
4570: 69 6e 74 20 62 6f 6f 6c 65 61 6e 20 6f 70 74 69 int boolean opti
4580: 6f 6e 73 20 77 68 69 63 68 20 61 72 65 20 73 68 ons which are sh
4590: 61 72 65 64 20 77 69 74 68 20 4a 53 4c 69 6e 74 ared with JSLint
45a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 68 65 .. // whe
45b0: 72 65 20 74 68 65 20 6e 61 6d 65 20 68 61 73 20 re the name has
45c0: 62 65 65 6e 20 63 68 61 6e 67 65 64 20 62 75 74 been changed but
45d0: 20 74 68 65 20 65 66 66 65 63 74 20 69 73 20 75 the effect is u
45e0: 6e 63 68 61 6e 67 65 64 0d 0a 20 20 20 20 20 20 nchanged..
45f0: 20 20 72 65 6e 61 6d 65 64 4f 70 74 69 6f 6e 73 renamedOptions
4600: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 = {..
4610: 20 20 65 71 65 71 20 20 20 20 20 20 20 20 3a 20 eqeq :
4620: 22 65 71 65 71 65 71 22 2c 0d 0a 20 20 20 20 20 "eqeqeq",..
4630: 20 20 20 20 20 20 20 76 61 72 73 20 20 20 20 20 vars
4640: 20 20 20 3a 20 22 6f 6e 65 76 61 72 22 2c 0d 0a : "onevar",..
4650: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 64 wind
4660: 6f 77 73 20 20 20 20 20 3a 20 22 77 73 68 22 0d ows : "wsh".
4670: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 0d . },.....
4680: 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 72 6f 77 . // brow
4690: 73 65 72 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 ser contains a s
46a0: 65 74 20 6f 66 20 67 6c 6f 62 61 6c 20 6e 61 6d et of global nam
46b0: 65 73 20 77 68 69 63 68 20 61 72 65 20 63 6f 6d es which are com
46c0: 6d 6f 6e 6c 79 20 70 72 6f 76 69 64 65 64 20 62 monly provided b
46d0: 79 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 y a.. //
46e0: 77 65 62 20 62 72 6f 77 73 65 72 20 65 6e 76 69 web browser envi
46f0: 72 6f 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 ronment...
4700: 20 20 62 72 6f 77 73 65 72 20 3d 20 7b 0d 0a 20 browser = {..
4710: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 Array
4720: 42 75 66 66 65 72 20 20 20 20 20 20 20 20 20 20 Buffer
4730: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4740: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 Array
4750: 42 75 66 66 65 72 56 69 65 77 20 20 20 20 20 20 BufferView
4760: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4770: 20 20 20 20 20 20 20 20 20 20 20 41 75 64 69 6f Audio
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4790: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
47a0: 20 20 20 20 20 20 20 20 20 20 20 61 64 64 45 76 addEv
47b0: 65 6e 74 4c 69 73 74 65 6e 65 72 20 20 20 20 20 entListener
47c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
47d0: 20 20 20 20 20 20 20 20 20 20 20 61 70 70 6c 69 appli
47e0: 63 61 74 69 6f 6e 43 61 63 68 65 20 20 20 20 20 cationCache
47f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4800: 20 20 20 20 20 20 20 20 20 20 20 61 74 6f 62 20 atob
4810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4820: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4830: 20 20 20 20 20 20 20 20 20 20 20 62 6c 75 72 20 blur
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4850: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4860: 20 20 20 20 20 20 20 20 20 20 20 62 74 6f 61 20 btoa
4870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4880: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4890: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72 clear
48a0: 49 6e 74 65 72 76 61 6c 20 20 20 20 20 20 20 20 Interval
48b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
48c0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72 clear
48d0: 54 69 6d 65 6f 75 74 20 20 20 20 20 20 20 20 20 Timeout
48e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
48f0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 close
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4910: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4920: 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 close
4930: 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d
4940: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4950: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 61 56 DataV
4960: 69 65 77 20 20 20 20 20 20 20 20 20 20 20 20 20 iew
4970: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4980: 20 20 20 20 20 20 20 20 20 20 20 44 4f 4d 50 61 DOMPa
4990: 72 73 65 72 20 20 20 20 20 20 20 20 20 20 20 20 rser
49a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
49b0: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 defau
49c0: 6c 74 53 74 61 74 75 73 20 20 20 20 20 20 20 20 ltStatus
49d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
49e0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d docum
49f0: 65 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 ent
4a00: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4a10: 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 event
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4a30: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4a40: 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65 52 FileR
4a50: 65 61 64 65 72 20 20 20 20 20 20 20 20 20 20 20 eader
4a60: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4a70: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74 Float
4a80: 33 32 41 72 72 61 79 20 20 20 20 20 20 20 20 20 32Array
4a90: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4aa0: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74 Float
4ab0: 36 34 41 72 72 61 79 20 20 20 20 20 20 20 20 20 64Array
4ac0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4ad0: 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 6d 44 FormD
4ae0: 61 74 61 20 20 20 20 20 20 20 20 20 20 20 20 20 ata
4af0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4b00: 20 20 20 20 20 20 20 20 20 20 20 66 6f 63 75 73 focus
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4b20: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4b30: 20 20 20 20 20 20 20 20 20 20 20 66 72 61 6d 65 frame
4b40: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s
4b50: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4b60: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 43 6f getCo
4b70: 6d 70 75 74 65 64 53 74 79 6c 65 20 20 20 20 20 mputedStyle
4b80: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4b90: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 45 HTMLE
4ba0: 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 20 20 lement
4bb0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4bc0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 41 HTMLA
4bd0: 6e 63 68 6f 72 45 6c 65 6d 65 6e 74 20 20 20 20 nchorElement
4be0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4bf0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42 HTMLB
4c00: 61 73 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 aseElement
4c10: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4c20: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42 HTMLB
4c30: 6c 6f 63 6b 71 75 6f 74 65 45 6c 65 6d 65 6e 74 lockquoteElement
4c40: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4c50: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42 HTMLB
4c60: 6f 64 79 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 odyElement
4c70: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4c80: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42 HTMLB
4c90: 52 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 RElement
4ca0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4cb0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42 HTMLB
4cc0: 75 74 74 6f 6e 45 6c 65 6d 65 6e 74 20 20 20 20 uttonElement
4cd0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4ce0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 43 HTMLC
4cf0: 61 6e 76 61 73 45 6c 65 6d 65 6e 74 20 20 20 20 anvasElement
4d00: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4d10: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44 HTMLD
4d20: 69 72 65 63 74 6f 72 79 45 6c 65 6d 65 6e 74 20 irectoryElement
4d30: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4d40: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44 HTMLD
4d50: 69 76 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 ivElement
4d60: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4d70: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44 HTMLD
4d80: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 ListElement
4d90: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4da0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46 HTMLF
4db0: 69 65 6c 64 53 65 74 45 6c 65 6d 65 6e 74 20 20 ieldSetElement
4dc0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4dd0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46 HTMLF
4de0: 6f 6e 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 ontElement
4df0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4e00: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46 HTMLF
4e10: 6f 72 6d 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 ormElement
4e20: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4e30: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46 HTMLF
4e40: 72 61 6d 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 rameElement
4e50: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4e60: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46 HTMLF
4e70: 72 61 6d 65 53 65 74 45 6c 65 6d 65 6e 74 20 20 rameSetElement
4e80: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4e90: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48 HTMLH
4ea0: 65 61 64 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 eadElement
4eb0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4ec0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48 HTMLH
4ed0: 65 61 64 69 6e 67 45 6c 65 6d 65 6e 74 20 20 20 eadingElement
4ee0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4ef0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48 HTMLH
4f00: 52 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 RElement
4f10: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4f20: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48 HTMLH
4f30: 74 6d 6c 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 tmlElement
4f40: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4f50: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49 HTMLI
4f60: 46 72 61 6d 65 45 6c 65 6d 65 6e 74 20 20 20 20 FrameElement
4f70: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4f80: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49 HTMLI
4f90: 6d 61 67 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 mageElement
4fa0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4fb0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49 HTMLI
4fc0: 6e 70 75 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 nputElement
4fd0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
4fe0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49 HTMLI
4ff0: 73 49 6e 64 65 78 45 6c 65 6d 65 6e 74 20 20 20 sIndexElement
5000: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5010: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c HTMLL
5020: 61 62 65 6c 45 6c 65 6d 65 6e 74 20 20 20 20 20 abelElement
5030: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5040: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c HTMLL
5050: 61 79 65 72 45 6c 65 6d 65 6e 74 20 20 20 20 20 ayerElement
5060: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5070: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c HTMLL
5080: 65 67 65 6e 64 45 6c 65 6d 65 6e 74 20 20 20 20 egendElement
5090: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
50a0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c HTMLL
50b0: 49 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 IElement
50c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
50d0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c HTMLL
50e0: 69 6e 6b 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 inkElement
50f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5100: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d HTMLM
5110: 61 70 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 apElement
5120: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5130: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d HTMLM
5140: 65 6e 75 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 enuElement
5150: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5160: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d HTMLM
5170: 65 74 61 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 etaElement
5180: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5190: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d HTMLM
51a0: 6f 64 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 odElement
51b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
51c0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f HTMLO
51d0: 62 6a 65 63 74 45 6c 65 6d 65 6e 74 20 20 20 20 bjectElement
51e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
51f0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f HTMLO
5200: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 ListElement
5210: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5220: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f HTMLO
5230: 70 74 47 72 6f 75 70 45 6c 65 6d 65 6e 74 20 20 ptGroupElement
5240: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5250: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f HTMLO
5260: 70 74 69 6f 6e 45 6c 65 6d 65 6e 74 20 20 20 20 ptionElement
5270: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5280: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50 HTMLP
5290: 61 72 61 67 72 61 70 68 45 6c 65 6d 65 6e 74 20 aragraphElement
52a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
52b0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50 HTMLP
52c0: 61 72 61 6d 45 6c 65 6d 65 6e 74 20 20 20 20 20 aramElement
52d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
52e0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50 HTMLP
52f0: 72 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 reElement
5300: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5310: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 51 HTMLQ
5320: 75 6f 74 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 uoteElement
5330: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5340: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53 HTMLS
5350: 63 72 69 70 74 45 6c 65 6d 65 6e 74 20 20 20 20 criptElement
5360: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5370: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53 HTMLS
5380: 65 6c 65 63 74 45 6c 65 6d 65 6e 74 20 20 20 20 electElement
5390: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
53a0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53 HTMLS
53b0: 74 79 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 tyleElement
53c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
53d0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
53e0: 61 62 6c 65 43 61 70 74 69 6f 6e 45 6c 65 6d 65 ableCaptionEleme
53f0: 6e 74 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 nt : false,..
5400: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
5410: 61 62 6c 65 43 65 6c 6c 45 6c 65 6d 65 6e 74 20 ableCellElement
5420: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5430: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
5440: 61 62 6c 65 43 6f 6c 45 6c 65 6d 65 6e 74 20 20 ableColElement
5450: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5460: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
5470: 61 62 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 ableElement
5480: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5490: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
54a0: 61 62 6c 65 52 6f 77 45 6c 65 6d 65 6e 74 20 20 ableRowElement
54b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
54c0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
54d0: 61 62 6c 65 53 65 63 74 69 6f 6e 45 6c 65 6d 65 ableSectionEleme
54e0: 6e 74 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 nt : false,..
54f0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
5500: 65 78 74 41 72 65 61 45 6c 65 6d 65 6e 74 20 20 extAreaElement
5510: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5520: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54 HTMLT
5530: 69 74 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 itleElement
5540: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5550: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 55 HTMLU
5560: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 ListElement
5570: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5580: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 56 HTMLV
5590: 69 64 65 6f 45 6c 65 6d 65 6e 74 20 20 20 20 20 ideoElement
55a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
55b0: 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f histo
55c0: 72 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ry
55d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
55e0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 31 36 Int16
55f0: 41 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20 Array
5600: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5610: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 33 32 Int32
5620: 41 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20 Array
5630: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5640: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 38 41 Int8A
5650: 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20 20 rray
5660: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5670: 20 20 20 20 20 20 20 20 20 20 20 49 6d 61 67 65 Image
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5690: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
56a0: 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 lengt
56b0: 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h
56c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
56d0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c local
56e0: 53 74 6f 72 61 67 65 20 20 20 20 20 20 20 20 20 Storage
56f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5700: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 74 locat
5710: 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 ion
5720: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5730: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 Messa
5740: 67 65 43 68 61 6e 6e 65 6c 20 20 20 20 20 20 20 geChannel
5750: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5760: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 Messa
5770: 67 65 45 76 65 6e 74 20 20 20 20 20 20 20 20 20 geEvent
5780: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5790: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 Messa
57a0: 67 65 50 6f 72 74 20 20 20 20 20 20 20 20 20 20 gePort
57b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
57c0: 20 20 20 20 20 20 20 20 20 20 20 6d 6f 76 65 42 moveB
57d0: 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y
57e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
57f0: 20 20 20 20 20 20 20 20 20 20 20 6d 6f 76 65 54 moveT
5800: 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o
5810: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5820: 20 20 20 20 20 20 20 20 20 20 20 4d 75 74 61 74 Mutat
5830: 69 6f 6e 4f 62 73 65 72 76 65 72 20 20 20 20 20 ionObserver
5840: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5850: 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 name
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5870: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5880: 20 20 20 20 20 20 20 20 20 20 20 4e 6f 64 65 20 Node
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
58a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
58b0: 20 20 20 20 20 20 20 20 20 20 20 4e 6f 64 65 46 NodeF
58c0: 69 6c 74 65 72 20 20 20 20 20 20 20 20 20 20 20 ilter
58d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
58e0: 20 20 20 20 20 20 20 20 20 20 20 6e 61 76 69 67 navig
58f0: 61 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 ator
5900: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
5910: 20 20 20 20 20 20 20 20 20 20 20 6f 6e 62 65 66 onbef
5920: 6f 72 65 75 6e 6c 6f 61 64 20 20 20 20 20 20 20 oreunload
5930: 20 20 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 : true,..
5940: 20 20 20 20 20 20 20 20 20 20 6f 6e 62 6c 75 72 onblur
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5960: 20 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 : true,..
5970: 20 20 20 20 20 20 20 20 20 6f 6e 65 72 72 6f 72 onerror
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5990: 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 : true,..
59a0: 20 20 20 20 20 20 20 20 6f 6e 66 6f 63 75 73 20 onfocus
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
59c0: 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 : true,..
59d0: 20 20 20 20 20 20 20 6f 6e 6c 6f 61 64 20 20 20 onload
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
59f0: 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
5a00: 20 20 20 20 20 20 6f 6e 72 65 73 69 7a 65 20 20 onresize
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a :
5a20: 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 true,..
5a30: 20 20 20 20 20 6f 6e 75 6e 6c 6f 61 64 20 20 20 onunload
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 :
5a50: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 true,..
5a60: 20 20 20 20 6f 70 65 6e 20 20 20 20 20 20 20 20 open
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5a80: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5a90: 20 20 20 20 6f 70 65 6e 44 61 74 61 62 61 73 65 openDatabase
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5ab0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5ac0: 20 20 20 20 6f 70 65 6e 65 72 20 20 20 20 20 20 opener
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5ae0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5af0: 20 20 20 20 4f 70 74 69 6f 6e 20 20 20 20 20 20 Option
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5b10: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5b20: 20 20 20 20 70 61 72 65 6e 74 20 20 20 20 20 20 parent
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5b40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5b50: 20 20 20 20 70 72 69 6e 74 20 20 20 20 20 20 20 print
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5b70: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5b80: 20 20 20 20 72 65 6d 6f 76 65 45 76 65 6e 74 4c removeEventL
5b90: 69 73 74 65 6e 65 72 20 20 20 20 20 20 3a 20 20 istener :
5ba0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5bb0: 20 20 20 20 72 65 73 69 7a 65 42 79 20 20 20 20 resizeBy
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5bd0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5be0: 20 20 20 20 72 65 73 69 7a 65 54 6f 20 20 20 20 resizeTo
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5c00: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5c10: 20 20 20 20 73 63 72 65 65 6e 20 20 20 20 20 20 screen
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5c30: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5c40: 20 20 20 20 73 63 72 6f 6c 6c 20 20 20 20 20 20 scroll
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5c60: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5c70: 20 20 20 20 73 63 72 6f 6c 6c 42 79 20 20 20 20 scrollBy
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5c90: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5ca0: 20 20 20 20 73 63 72 6f 6c 6c 54 6f 20 20 20 20 scrollTo
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5cc0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5cd0: 20 20 20 20 73 65 73 73 69 6f 6e 53 74 6f 72 61 sessionStora
5ce0: 67 65 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 ge :
5cf0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5d00: 20 20 20 20 73 65 74 49 6e 74 65 72 76 61 6c 20 setInterval
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5d20: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5d30: 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 20 20 setTimeout
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5d50: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5d60: 20 20 20 20 53 68 61 72 65 64 57 6f 72 6b 65 72 SharedWorker
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5d80: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5d90: 20 20 20 20 73 74 61 74 75 73 20 20 20 20 20 20 status
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5db0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5dc0: 20 20 20 20 74 6f 70 20 20 20 20 20 20 20 20 20 top
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5de0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5df0: 20 20 20 20 55 69 6e 74 31 36 41 72 72 61 79 20 Uint16Array
5e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5e10: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5e20: 20 20 20 20 55 69 6e 74 33 32 41 72 72 61 79 20 Uint32Array
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5e40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5e50: 20 20 20 20 55 69 6e 74 38 41 72 72 61 79 20 20 Uint8Array
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5e70: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5e80: 20 20 20 20 57 65 62 53 6f 63 6b 65 74 20 20 20 WebSocket
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5ea0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5eb0: 20 20 20 20 77 69 6e 64 6f 77 20 20 20 20 20 20 window
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5ed0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5ee0: 20 20 20 20 57 6f 72 6b 65 72 20 20 20 20 20 20 Worker
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
5f00: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5f10: 20 20 20 20 58 4d 4c 48 74 74 70 52 65 71 75 65 XMLHttpReque
5f20: 73 74 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 st :
5f30: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5f40: 20 20 20 20 58 4d 4c 53 65 72 69 61 6c 69 7a 65 XMLSerialize
5f50: 72 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 r :
5f60: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5f70: 20 20 20 20 58 50 61 74 68 45 76 61 6c 75 61 74 XPathEvaluat
5f80: 6f 72 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 or :
5f90: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5fa0: 20 20 20 20 58 50 61 74 68 45 78 63 65 70 74 69 XPathExcepti
5fb0: 6f 6e 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 on :
5fc0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
5fd0: 20 20 20 20 58 50 61 74 68 45 78 70 72 65 73 73 XPathExpress
5fe0: 69 6f 6e 20 20 20 20 20 20 20 20 20 20 3a 20 20 ion :
5ff0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6000: 20 20 20 20 58 50 61 74 68 4e 61 6d 65 73 70 61 XPathNamespa
6010: 63 65 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 ce :
6020: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6030: 20 20 20 20 58 50 61 74 68 4e 53 52 65 73 6f 6c XPathNSResol
6040: 76 65 72 20 20 20 20 20 20 20 20 20 20 3a 20 20 ver :
6050: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6060: 20 20 20 20 58 50 61 74 68 52 65 73 75 6c 74 20 XPathResult
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 :
6080: 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d false.. }
6090: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 75 ,.... cou
60a0: 63 68 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 ch = {..
60b0: 20 20 20 20 22 72 65 71 75 69 72 65 22 20 3a 20 "require" :
60c0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
60d0: 20 20 20 20 72 65 73 70 6f 6e 64 20 20 20 3a 20 respond :
60e0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
60f0: 20 20 20 20 67 65 74 52 6f 77 20 20 20 20 3a 20 getRow :
6100: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6110: 20 20 20 20 65 6d 69 74 20 20 20 20 20 20 3a 20 emit :
6120: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6130: 20 20 20 20 73 65 6e 64 20 20 20 20 20 20 3a 20 send :
6140: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6150: 20 20 20 20 73 74 61 72 74 20 20 20 20 20 3a 20 start :
6160: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6170: 20 20 20 20 73 75 6d 20 20 20 20 20 20 20 3a 20 sum :
6180: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
6190: 20 20 20 20 6c 6f 67 20 20 20 20 20 20 20 3a 20 log :
61a0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
61b0: 20 20 20 20 65 78 70 6f 72 74 73 20 20 20 3a 20 exports :
61c0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
61d0: 20 20 20 20 6d 6f 64 75 6c 65 20 20 20 20 3a 20 module :
61e0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
61f0: 20 20 20 20 70 72 6f 76 69 64 65 73 20 20 3a 20 provides :
6200: 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d false.. }
6210: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 63 ,.... dec
6220: 6c 61 72 65 64 2c 20 2f 2f 20 47 6c 6f 62 61 6c lared, // Global
6230: 73 20 74 68 61 74 20 77 65 72 65 20 64 65 63 6c s that were decl
6240: 61 72 65 64 20 75 73 69 6e 67 20 2f 2a 67 6c 6f ared using /*glo
6250: 62 61 6c 20 2e 2e 2e 20 2a 2f 20 73 79 6e 74 61 bal ... */ synta
6260: 78 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 x..... de
6270: 76 65 6c 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 vel = {..
6280: 20 20 20 20 20 61 6c 65 72 74 20 20 20 3a 20 66 alert : f
6290: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
62a0: 20 20 20 63 6f 6e 66 69 72 6d 20 3a 20 66 61 6c confirm : fal
62b0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
62c0: 20 63 6f 6e 73 6f 6c 65 20 3a 20 66 61 6c 73 65 console : false
62d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 ,.. D
62e0: 65 62 75 67 20 20 20 3a 20 66 61 6c 73 65 2c 0d ebug : false,.
62f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 . ope
6300: 72 61 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 ra : false,..
6310: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 promp
6320: 74 20 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20 t : false..
6330: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 },....
6340: 20 20 64 6f 6a 6f 20 3d 20 7b 0d 0a 20 20 20 20 dojo = {..
6350: 20 20 20 20 20 20 20 20 64 6f 6a 6f 20 20 20 20 dojo
6360: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
6370: 20 20 20 20 20 20 20 20 64 69 6a 69 74 20 20 20 dijit
6380: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
6390: 20 20 20 20 20 20 20 20 64 6f 6a 6f 78 20 20 20 dojox
63a0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
63b0: 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 20 define
63c0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
63d0: 20 20 20 20 20 20 20 20 22 72 65 71 75 69 72 65 "require
63e0: 22 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 " : false..
63f0: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 },....
6400: 20 66 75 6e 63 74 2c 20 20 20 20 20 20 20 20 20 funct,
6410: 20 2f 2f 20 54 68 65 20 63 75 72 72 65 6e 74 20 // The current
6420: 66 75 6e 63 74 69 6f 6e 0d 0a 0d 0a 20 20 20 20 function....
6430: 20 20 20 20 66 75 6e 63 74 69 6f 6e 69 63 69 74 functionicit
6440: 79 20 3d 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 y = [..
6450: 20 20 20 22 63 6c 6f 73 75 72 65 22 2c 20 22 65 "closure", "e
6460: 78 63 65 70 74 69 6f 6e 22 2c 20 22 67 6c 6f 62 xception", "glob
6470: 61 6c 22 2c 20 22 6c 61 62 65 6c 22 2c 0d 0a 20 al", "label",..
6480: 20 20 20 20 20 20 20 20 20 20 20 22 6f 75 74 65 "oute
6490: 72 22 2c 20 22 75 6e 75 73 65 64 22 2c 20 22 76 r", "unused", "v
64a0: 61 72 22 0d 0a 20 20 20 20 20 20 20 20 5d 2c 0d ar".. ],.
64b0: 0a 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 ... funct
64c0: 69 6f 6e 73 2c 20 20 20 20 20 20 2f 2f 20 41 6c ions, // Al
64d0: 6c 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f l of the functio
64e0: 6e 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 67 6c ns.... gl
64f0: 6f 62 61 6c 2c 20 20 20 20 20 20 20 20 20 2f 2f obal, //
6500: 20 54 68 65 20 67 6c 6f 62 61 6c 20 73 63 6f 70 The global scop
6510: 65 0d 0a 20 20 20 20 20 20 20 20 69 6d 70 6c 69 e.. impli
6520: 65 64 2c 20 20 20 20 20 20 20 20 2f 2f 20 49 6d ed, // Im
6530: 70 6c 69 65 64 20 67 6c 6f 62 61 6c 73 0d 0a 20 plied globals..
6540: 20 20 20 20 20 20 20 69 6e 62 6c 6f 63 6b 2c 0d inblock,.
6550: 0a 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 2c . indent,
6560: 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e 6d 6f .. jsonmo
6570: 64 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6a de,.... j
6580: 71 75 65 72 79 20 3d 20 7b 0d 0a 20 20 20 20 20 query = {..
6590: 20 20 20 20 20 20 20 22 24 22 20 20 20 20 3a 20 "$" :
65a0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
65b0: 20 20 20 20 6a 51 75 65 72 79 20 3a 20 66 61 6c jQuery : fal
65c0: 73 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a se.. },..
65d0: 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 73 2c .. lines,
65e0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6f 6b 61 68 .. lookah
65f0: 65 61 64 2c 0d 0a 20 20 20 20 20 20 20 20 6d 65 ead,.. me
6600: 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 6d mber,.. m
6610: 65 6d 62 65 72 73 4f 6e 6c 79 2c 0d 0a 0d 0a 20 embersOnly,....
6620: 20 20 20 20 20 20 20 6d 6f 6f 74 6f 6f 6c 73 20 mootools
6630: 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 = {..
6640: 20 22 24 22 20 20 20 20 20 20 20 20 20 20 20 20 "$"
6650: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6660: 20 20 20 20 20 20 20 22 24 24 22 20 20 20 20 20 "$$"
6670: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
6680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 . Ass
6690: 65 74 73 20 20 20 20 20 20 20 20 20 20 3a 20 66 ets : f
66a0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
66b0: 20 20 20 42 72 6f 77 73 65 72 20 20 20 20 20 20 Browser
66c0: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
66d0: 20 20 20 20 20 20 20 20 20 43 68 61 69 6e 20 20 Chain
66e0: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 : false
66f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 ,.. C
6700: 6c 61 73 73 20 20 20 20 20 20 20 20 20 20 20 3a lass :
6710: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
6720: 20 20 20 20 20 43 6f 6c 6f 72 20 20 20 20 20 20 Color
6730: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
6740: 20 20 20 20 20 20 20 20 20 20 20 43 6f 6f 6b 69 Cooki
6750: 65 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c e : fal
6760: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
6770: 20 43 6f 72 65 20 20 20 20 20 20 20 20 20 20 20 Core
6780: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6790: 20 20 20 20 20 20 20 44 6f 63 75 6d 65 6e 74 20 Document
67a0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
67b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 6d . Dom
67c0: 52 65 61 64 79 20 20 20 20 20 20 20 20 3a 20 66 Ready : f
67d0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
67e0: 20 20 20 44 4f 4d 52 65 61 64 79 20 20 20 20 20 DOMReady
67f0: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
6800: 20 20 20 20 20 20 20 20 20 44 72 61 67 20 20 20 Drag
6810: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 : false
6820: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 ,.. E
6830: 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 20 3a lement :
6840: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
6850: 20 20 20 20 20 45 6c 65 6d 65 6e 74 73 20 20 20 Elements
6860: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
6870: 20 20 20 20 20 20 20 20 20 20 20 45 76 65 6e 74 Event
6880: 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c : fal
6890: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
68a0: 20 45 76 65 6e 74 73 20 20 20 20 20 20 20 20 20 Events
68b0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
68c0: 20 20 20 20 20 20 20 46 78 20 20 20 20 20 20 20 Fx
68d0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
68e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 72 6f . Gro
68f0: 75 70 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 up : f
6900: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6910: 20 20 20 48 61 73 68 20 20 20 20 20 20 20 20 20 Hash
6920: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
6930: 20 20 20 20 20 20 20 20 20 48 74 6d 6c 54 61 62 HtmlTab
6940: 6c 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 le : false
6950: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 ,.. I
6960: 66 72 61 6d 65 20 20 20 20 20 20 20 20 20 20 3a frame :
6970: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
6980: 20 20 20 20 20 49 66 72 61 6d 65 53 68 69 6d 20 IframeShim
6990: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
69a0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 Input
69b0: 56 61 6c 69 64 61 74 6f 72 20 20 3a 20 66 61 6c Validator : fal
69c0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
69d0: 20 69 6e 73 74 61 6e 63 65 4f 66 20 20 20 20 20 instanceOf
69e0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
69f0: 20 20 20 20 20 20 20 4b 65 79 62 6f 61 72 64 20 Keyboard
6a00: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
6a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 63 . Loc
6a20: 61 6c 65 20 20 20 20 20 20 20 20 20 20 3a 20 66 ale : f
6a30: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6a40: 20 20 20 4d 61 73 6b 20 20 20 20 20 20 20 20 20 Mask
6a50: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
6a60: 20 20 20 20 20 20 20 20 20 4d 6f 6f 54 6f 6f 6c MooTool
6a70: 73 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 s : false
6a80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e ,.. N
6a90: 61 74 69 76 65 20 20 20 20 20 20 20 20 20 20 3a ative :
6aa0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
6ab0: 20 20 20 20 20 4f 70 74 69 6f 6e 73 20 20 20 20 Options
6ac0: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
6ad0: 20 20 20 20 20 20 20 20 20 20 20 4f 76 65 72 54 OverT
6ae0: 65 78 74 20 20 20 20 20 20 20 20 3a 20 66 61 6c ext : fal
6af0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
6b00: 20 52 65 71 75 65 73 74 20 20 20 20 20 20 20 20 Request
6b10: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6b20: 20 20 20 20 20 20 20 53 63 72 6f 6c 6c 65 72 20 Scroller
6b30: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
6b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6c 69 . Sli
6b50: 63 6b 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 ck : f
6b60: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6b70: 20 20 20 53 6c 69 64 65 72 20 20 20 20 20 20 20 Slider
6b80: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
6b90: 20 20 20 20 20 20 20 20 20 53 6f 72 74 61 62 6c Sortabl
6ba0: 65 73 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 es : false
6bb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 ,.. S
6bc0: 70 69 6e 6e 65 72 20 20 20 20 20 20 20 20 20 3a pinner :
6bd0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
6be0: 20 20 20 20 20 53 77 69 66 66 20 20 20 20 20 20 Swiff
6bf0: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
6c00: 20 20 20 20 20 20 20 20 20 20 20 54 69 70 73 20 Tips
6c10: 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c : fal
6c20: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
6c30: 20 54 79 70 65 20 20 20 20 20 20 20 20 20 20 20 Type
6c40: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6c50: 20 20 20 20 20 20 20 74 79 70 65 4f 66 20 20 20 typeOf
6c60: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
6c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 49 . URI
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 : f
6c90: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6ca0: 20 20 20 57 69 6e 64 6f 77 20 20 20 20 20 20 20 Window
6cb0: 20 20 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20 : false..
6cc0: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 },....
6cd0: 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 0d 0a 0d 0a nexttoken,....
6ce0: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 7b node = {
6cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 5f .. __
6d00: 66 69 6c 65 6e 61 6d 65 20 20 20 20 3a 20 66 61 filename : fa
6d10: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 lse,..
6d20: 20 20 5f 5f 64 69 72 6e 61 6d 65 20 20 20 20 20 __dirname
6d30: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
6d40: 20 20 20 20 20 20 42 75 66 66 65 72 20 20 20 20 Buffer
6d50: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 : false,..
6d60: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c consol
6d70: 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c e : false,
6d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 .. ex
6d90: 70 6f 72 74 73 20 20 20 20 20 20 20 3a 20 74 72 ports : tr
6da0: 75 65 2c 20 20 2f 2f 20 49 6e 20 4e 6f 64 65 20 ue, // In Node
6db0: 69 74 20 69 73 20 6f 6b 20 74 6f 20 65 78 70 6f it is ok to expo
6dc0: 72 74 73 20 3d 20 6d 6f 64 75 6c 65 2e 65 78 70 rts = module.exp
6dd0: 6f 72 74 73 20 3d 20 66 6f 6f 28 29 3b 0d 0a 20 orts = foo();..
6de0: 20 20 20 20 20 20 20 20 20 20 20 47 4c 4f 42 41 GLOBA
6df0: 4c 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 L : false
6e00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 ,.. g
6e10: 6c 6f 62 61 6c 20 20 20 20 20 20 20 20 3a 20 66 lobal : f
6e20: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6e30: 20 20 20 6d 6f 64 75 6c 65 20 20 20 20 20 20 20 module
6e40: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6e50: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20 20 process
6e60: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 : false,..
6e70: 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 69 requi
6e80: 72 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 re : false
6e90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ,.. s
6ea0: 65 74 54 69 6d 65 6f 75 74 20 20 20 20 3a 20 66 etTimeout : f
6eb0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
6ec0: 20 20 20 63 6c 65 61 72 54 69 6d 65 6f 75 74 20 clearTimeout
6ed0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
6ee0: 20 20 20 20 20 20 20 73 65 74 49 6e 74 65 72 76 setInterv
6ef0: 61 6c 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 al : false,..
6f00: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72 clear
6f10: 49 6e 74 65 72 76 61 6c 20 3a 20 66 61 6c 73 65 Interval : false
6f20: 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a .. },....
6f30: 20 20 20 20 20 20 20 20 6e 6f 72 65 61 63 68 2c noreach,
6f40: 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e .. option
6f50: 2c 0d 0a 20 20 20 20 20 20 20 20 70 72 65 64 65 ,.. prede
6f60: 66 69 6e 65 64 2c 20 20 20 20 20 2f 2f 20 47 6c fined, // Gl
6f70: 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 64 obal variables d
6f80: 65 66 69 6e 65 64 20 62 79 20 6f 70 74 69 6f 6e efined by option
6f90: 0d 0a 20 20 20 20 20 20 20 20 70 72 65 72 65 67 .. prereg
6fa0: 2c 0d 0a 20 20 20 20 20 20 20 20 70 72 65 76 74 ,.. prevt
6fb0: 6f 6b 65 6e 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 oken,....
6fc0: 20 70 72 6f 74 6f 74 79 70 65 6a 73 20 3d 20 7b prototypejs = {
6fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24 .. "$
6fe0: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
6ff0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7000: 20 20 20 20 20 20 22 24 24 22 20 20 20 20 20 20 "$$"
7010: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24 .. "$
7030: 41 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 A"
7040: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7050: 20 20 20 20 20 20 22 24 46 22 20 20 20 20 20 20 "$F"
7060: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24 .. "$
7080: 48 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 H"
7090: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
70a0: 20 20 20 20 20 20 22 24 52 22 20 20 20 20 20 20 "$R"
70b0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
70c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24 .. "$
70d0: 62 72 65 61 6b 22 20 20 20 20 20 20 20 20 20 20 break"
70e0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
70f0: 20 20 20 20 20 20 22 24 63 6f 6e 74 69 6e 75 65 "$continue
7100: 22 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c " : false,
7110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24 .. "$
7120: 77 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 w"
7130: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7140: 20 20 20 20 20 20 41 62 73 74 72 61 63 74 20 20 Abstract
7150: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6a .. Aj
7170: 61 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ax
7180: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7190: 20 20 20 20 20 20 43 6c 61 73 73 20 20 20 20 20 Class
71a0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
71b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 6e .. En
71c0: 75 6d 65 72 61 62 6c 65 20 20 20 20 20 20 20 20 umerable
71d0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
71e0: 20 20 20 20 20 20 45 6c 65 6d 65 6e 74 20 20 20 Element
71f0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 76 .. Ev
7210: 65 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 ent
7220: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7230: 20 20 20 20 20 20 46 69 65 6c 64 20 20 20 20 20 Field
7240: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 6f .. Fo
7260: 72 6d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rm
7270: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7280: 20 20 20 20 20 20 48 61 73 68 20 20 20 20 20 20 Hash
7290: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
72a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e .. In
72b0: 73 65 72 74 69 6f 6e 20 20 20 20 20 20 20 20 20 sertion
72c0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
72d0: 20 20 20 20 20 20 4f 62 6a 65 63 74 52 61 6e 67 ObjectRang
72e0: 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c e : false,
72f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 65 .. Pe
7300: 72 69 6f 64 69 63 61 6c 45 78 65 63 75 74 65 72 riodicalExecuter
7310: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7320: 20 20 20 20 20 20 50 6f 73 69 74 69 6f 6e 20 20 Position
7330: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 .. Pr
7350: 6f 74 6f 74 79 70 65 20 20 20 20 20 20 20 20 20 ototype
7360: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7370: 20 20 20 20 20 20 53 65 6c 65 63 74 6f 72 20 20 Selector
7380: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 65 .. Te
73a0: 6d 70 6c 61 74 65 20 20 20 20 20 20 20 20 20 20 mplate
73b0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
73c0: 20 20 20 20 20 20 54 6f 67 67 6c 65 20 20 20 20 Toggle
73d0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
73e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 .. Tr
73f0: 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y
7400: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7410: 20 20 20 20 20 20 41 75 74 6f 63 6f 6d 70 6c 65 Autocomple
7420: 74 65 72 20 20 20 20 20 3a 20 66 61 6c 73 65 2c ter : false,
7430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 75 .. Bu
7440: 69 6c 64 65 72 20 20 20 20 20 20 20 20 20 20 20 ilder
7450: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7460: 20 20 20 20 20 20 43 6f 6e 74 72 6f 6c 20 20 20 Control
7470: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 72 .. Dr
7490: 61 67 67 61 62 6c 65 20 20 20 20 20 20 20 20 20 aggable
74a0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
74b0: 20 20 20 20 20 20 44 72 61 67 67 61 62 6c 65 73 Draggables
74c0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
74d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 72 .. Dr
74e0: 6f 70 70 61 62 6c 65 73 20 20 20 20 20 20 20 20 oppables
74f0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7500: 20 20 20 20 20 20 45 66 66 65 63 74 20 20 20 20 Effect
7510: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6f .. So
7530: 72 74 61 62 6c 65 20 20 20 20 20 20 20 20 20 20 rtable
7540: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7550: 20 20 20 20 20 20 53 6f 72 74 61 62 6c 65 4f 62 SortableOb
7560: 73 65 72 76 65 72 20 20 3a 20 66 61 6c 73 65 2c server : false,
7570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6f .. So
7580: 75 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 und
7590: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
75a0: 20 20 20 20 20 20 53 63 72 69 70 74 61 63 75 6c Scriptacul
75b0: 6f 75 73 20 20 20 20 20 3a 20 66 61 6c 73 65 0d ous : false.
75c0: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 . },....
75d0: 20 20 20 20 20 20 20 71 75 6f 74 6d 61 72 6b 2c quotmark,
75e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 68 69 6e .... rhin
75f0: 6f 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 o = {..
7600: 20 20 20 64 65 66 69 6e 65 43 6c 61 73 73 20 20 defineClass
7610: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7620: 20 20 20 20 20 20 64 65 73 65 72 69 61 6c 69 7a deserializ
7630: 65 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 e : false,..
7640: 20 20 20 20 20 20 20 20 20 67 63 20 20 20 20 20 gc
7650: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a : false,..
7660: 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c 70 help
7670: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 : false
7680: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ,.. i
7690: 6d 70 6f 72 74 50 61 63 6b 61 67 65 3a 20 66 61 mportPackage: fa
76a0: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 lse,..
76b0: 20 20 22 6a 61 76 61 22 20 20 20 20 20 20 20 3a "java" :
76c0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 false,..
76d0: 20 20 20 20 20 6c 6f 61 64 20 20 20 20 20 20 20 load
76e0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
76f0: 20 20 20 20 20 20 20 20 6c 6f 61 64 43 6c 61 73 loadClas
7700: 73 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 s : false,..
7710: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 print
7720: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 71 75 .. qu
7740: 69 74 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c it : fal
7750: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se,..
7760: 20 72 65 61 64 46 69 6c 65 20 20 20 20 20 3a 20 readFile :
7770: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
7780: 20 20 20 20 72 65 61 64 55 72 6c 20 20 20 20 20 readUrl
7790: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 : false,..
77a0: 20 20 20 20 20 20 20 72 75 6e 43 6f 6d 6d 61 6e runComman
77b0: 64 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 d : false,..
77c0: 20 20 20 20 20 20 20 20 20 20 73 65 61 6c 20 20 seal
77d0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d : false,.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72 . ser
77f0: 69 61 6c 69 7a 65 20 20 20 20 3a 20 66 61 6c 73 ialize : fals
7800: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
7810: 73 70 61 77 6e 20 20 20 20 20 20 20 20 3a 20 66 spawn : f
7820: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
7830: 20 20 20 73 79 6e 63 20 20 20 20 20 20 20 20 20 sync
7840: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7850: 20 20 20 20 20 20 74 6f 69 6e 74 33 32 20 20 20 toint32
7860: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 : false,..
7870: 20 20 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e version
7880: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 0d 0a 20 : false..
7890: 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 },....
78a0: 20 20 20 20 20 73 63 6f 70 65 2c 20 20 20 20 20 scope,
78b0: 20 2f 2f 20 54 68 65 20 63 75 72 72 65 6e 74 20 // The current
78c0: 73 63 6f 70 65 0d 0a 20 20 20 20 20 20 20 20 73 scope.. s
78d0: 74 61 63 6b 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 tack,....
78e0: 20 2f 2f 20 73 74 61 6e 64 61 72 64 20 63 6f 6e // standard con
78f0: 74 61 69 6e 73 20 74 68 65 20 67 6c 6f 62 61 6c tains the global
7900: 20 6e 61 6d 65 73 20 74 68 61 74 20 61 72 65 20 names that are
7910: 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d provided by the.
7920: 0a 20 20 20 20 20 20 20 20 2f 2f 20 45 43 4d 41 . // ECMA
7930: 53 63 72 69 70 74 20 73 74 61 6e 64 61 72 64 2e Script standard.
7940: 0d 0a 20 20 20 20 20 20 20 20 73 74 61 6e 64 61 .. standa
7950: 72 64 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 rd = {..
7960: 20 20 20 20 41 72 72 61 79 20 20 20 20 20 20 20 Array
7970: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 6f .. Bo
7990: 6f 6c 65 61 6e 20 20 20 20 20 20 20 20 20 20 20 olean
79a0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
79b0: 20 20 20 20 20 20 20 20 44 61 74 65 20 20 20 20 Date
79c0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 : fa
79d0: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 lse,..
79e0: 20 20 64 65 63 6f 64 65 55 52 49 20 20 20 20 20 decodeURI
79f0: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a : false,..
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 63 6f deco
7a10: 64 65 55 52 49 43 6f 6d 70 6f 6e 65 6e 74 20 20 deURIComponent
7a20: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7a30: 20 20 20 20 20 20 65 6e 63 6f 64 65 55 52 49 20 encodeURI
7a40: 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 : fals
7a50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
7a60: 65 6e 63 6f 64 65 55 52 49 43 6f 6d 70 6f 6e 65 encodeURICompone
7a70: 6e 74 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 nt : false,..
7a80: 20 20 20 20 20 20 20 20 20 20 45 72 72 6f 72 20 Error
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 :
7aa0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
7ab0: 20 20 20 20 22 65 76 61 6c 22 20 20 20 20 20 20 "eval"
7ac0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 76 .. Ev
7ae0: 61 6c 45 72 72 6f 72 20 20 20 20 20 20 20 20 20 alError
7af0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
7b00: 20 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e Function
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 : fa
7b20: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 lse,..
7b30: 20 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 hasOwnProperty
7b40: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a : false,..
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 46 69 isFi
7b60: 6e 69 74 65 20 20 20 20 20 20 20 20 20 20 20 20 nite
7b70: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7b80: 20 20 20 20 20 20 69 73 4e 61 4e 20 20 20 20 20 isNaN
7b90: 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 : fals
7ba0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
7bb0: 4a 53 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20 JSON
7bc0: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 : false,..
7bd0: 20 20 20 20 20 20 20 20 20 20 4d 61 74 68 20 20 Math
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 :
7bf0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
7c00: 20 20 20 20 4e 75 6d 62 65 72 20 20 20 20 20 20 Number
7c10: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4f 62 .. Ob
7c30: 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 20 20 ject
7c40: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
7c50: 20 20 20 20 20 20 20 20 70 61 72 73 65 49 6e 74 parseInt
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 : fa
7c70: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 lse,..
7c80: 20 20 70 61 72 73 65 46 6c 6f 61 74 20 20 20 20 parseFloat
7c90: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a : false,..
7ca0: 20 20 20 20 20 20 20 20 20 20 20 20 52 61 6e 67 Rang
7cb0: 65 45 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 eError
7cc0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 : false,..
7cd0: 20 20 20 20 20 20 52 65 66 65 72 65 6e 63 65 45 ReferenceE
7ce0: 72 72 6f 72 20 20 20 20 20 20 3a 20 66 61 6c 73 rror : fals
7cf0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
7d00: 52 65 67 45 78 70 20 20 20 20 20 20 20 20 20 20 RegExp
7d10: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 : false,..
7d20: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 String
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 :
7d40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 false,..
7d50: 20 20 20 20 53 79 6e 74 61 78 45 72 72 6f 72 20 SyntaxError
7d60: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c : false,
7d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79 .. Ty
7d80: 70 65 45 72 72 6f 72 20 20 20 20 20 20 20 20 20 peError
7d90: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 : false,..
7da0: 20 20 20 20 20 20 20 20 55 52 49 45 72 72 6f 72 URIError
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 : fa
7dc0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d lse.. },.
7dd0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 69 ... // wi
7de0: 64 65 6c 79 20 61 64 6f 70 74 65 64 20 67 6c 6f dely adopted glo
7df0: 62 61 6c 20 6e 61 6d 65 73 20 74 68 61 74 20 61 bal names that a
7e00: 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 45 re not part of E
7e10: 43 4d 41 53 63 72 69 70 74 20 73 74 61 6e 64 61 CMAScript standa
7e20: 72 64 0d 0a 20 20 20 20 20 20 20 20 6e 6f 6e 73 rd.. nons
7e30: 74 61 6e 64 61 72 64 20 3d 20 7b 0d 0a 20 20 20 tandard = {..
7e40: 20 20 20 20 20 20 20 20 20 65 73 63 61 70 65 20 escape
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 : f
7e60: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 alse,..
7e70: 20 20 20 75 6e 65 73 63 61 70 65 20 20 20 20 20 unescape
7e80: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 0d 0a : false..
7e90: 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 },....
7ea0: 20 20 20 20 20 20 64 69 72 65 63 74 69 76 65 2c directive,
7eb0: 0d 0a 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 .. syntax
7ec0: 20 3d 20 7b 7d 2c 0d 0a 20 20 20 20 20 20 20 20 = {},..
7ed0: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 74 6f tab,.. to
7ee0: 6b 65 6e 2c 0d 0a 20 20 20 20 20 20 20 20 75 6e ken,.. un
7ef0: 75 73 65 64 73 2c 0d 0a 20 20 20 20 20 20 20 20 useds,..
7f00: 75 72 6c 73 2c 0d 0a 20 20 20 20 20 20 20 20 75 urls,.. u
7f10: 73 65 45 53 4e 65 78 74 53 79 6e 74 61 78 2c 0d seESNextSyntax,.
7f20: 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 . warning
7f30: 73 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 6f s,.... wo
7f40: 72 6b 65 72 20 3d 20 7b 0d 0a 20 20 20 20 20 20 rker = {..
7f50: 20 20 20 20 20 20 69 6d 70 6f 72 74 53 63 72 69 importScri
7f60: 70 74 73 20 20 20 20 20 20 20 3a 20 74 72 75 65 pts : true
7f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ,.. p
7f80: 6f 73 74 4d 65 73 73 61 67 65 20 20 20 20 20 20 ostMessage
7f90: 20 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 : true,..
7fa0: 20 20 20 20 20 20 20 20 73 65 6c 66 20 20 20 20 self
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 72 : tr
7fc0: 75 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a ue.. },..
7fd0: 0d 0a 20 20 20 20 20 20 20 20 77 73 68 20 3d 20 .. wsh =
7fe0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 {.. A
7ff0: 63 74 69 76 65 58 4f 62 6a 65 63 74 20 20 20 20 ctiveXObject
8000: 20 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c : true,
8010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 6e .. En
8020: 75 6d 65 72 61 74 6f 72 20 20 20 20 20 20 20 20 umerator
8030: 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d : true,.
8040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 . Get
8050: 4f 62 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 Object
8060: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d 0a : true,..
8070: 20 20 20 20 20 20 20 20 20 20 20 20 53 63 72 69 Scri
8080: 70 74 45 6e 67 69 6e 65 20 20 20 20 20 20 20 20 ptEngine
8090: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d 0a 20 : true,..
80a0: 20 20 20 20 20 20 20 20 20 20 20 53 63 72 69 70 Scrip
80b0: 74 45 6e 67 69 6e 65 42 75 69 6c 64 56 65 72 73 tEngineBuildVers
80c0: 69 6f 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 ion : true,..
80d0: 20 20 20 20 20 20 20 20 20 20 53 63 72 69 70 74 Script
80e0: 45 6e 67 69 6e 65 4d 61 6a 6f 72 56 65 72 73 69 EngineMajorVersi
80f0: 6f 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 on : true,..
8100: 20 20 20 20 20 20 20 20 20 53 63 72 69 70 74 45 ScriptE
8110: 6e 67 69 6e 65 4d 69 6e 6f 72 56 65 72 73 69 6f ngineMinorVersio
8120: 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 n : true,..
8130: 20 20 20 20 20 20 20 20 56 42 41 72 72 61 79 20 VBArray
8140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8150: 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 : true,..
8160: 20 20 20 20 20 20 20 57 53 48 20 20 20 20 20 20 WSH
8170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8180: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 : true,..
8190: 20 20 20 20 20 20 57 53 63 72 69 70 74 20 20 20 WScript
81a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
81b0: 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 : true,..
81c0: 20 20 20 20 20 58 44 6f 6d 61 69 6e 52 65 71 75 XDomainRequ
81d0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 3a est :
81e0: 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 7d true.. }
81f0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 52 65 67 75 ;.... // Regu
8200: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 2e lar expressions.
8210: 20 53 6f 6d 65 20 6f 66 20 74 68 65 73 65 20 61 Some of these a
8220: 72 65 20 73 74 75 70 69 64 6c 79 20 6c 6f 6e 67 re stupidly long
8230: 2e 0d 0a 20 20 20 20 76 61 72 20 61 78 2c 20 63 ... var ax, c
8240: 78 2c 20 74 78 2c 20 6e 78 2c 20 6e 78 67 2c 20 x, tx, nx, nxg,
8250: 6c 78 2c 20 69 78 2c 20 6a 78 2c 20 66 74 3b 0d lx, ix, jx, ft;.
8260: 0a 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 28 . (function (
8270: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 6a ) {.. /*j
8280: 73 68 69 6e 74 20 6d 61 78 6c 65 6e 3a 33 30 30 shint maxlen:300
8290: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f */.... /
82a0: 2f 20 75 6e 73 61 66 65 20 63 6f 6d 6d 65 6e 74 / unsafe comment
82b0: 20 6f 72 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 or string..
82c0: 20 20 20 20 61 78 20 3d 20 2f 40 63 63 7c 3c 5c ax = /@cc|<\
82d0: 2f 3f 7c 73 63 72 69 70 74 7c 5c 5d 5c 73 2a 5c /?|script|\]\s*\
82e0: 5d 7c 3c 5c 73 2a 21 7c 26 6c 74 2f 69 3b 0d 0a ]|<\s*!|</i;..
82f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 75 6e 73 .. // uns
8300: 61 66 65 20 63 68 61 72 61 63 74 65 72 73 20 74 afe characters t
8310: 68 61 74 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 hat are silently
8320: 20 64 65 6c 65 74 65 64 20 62 79 20 6f 6e 65 20 deleted by one
8330: 6f 72 20 6d 6f 72 65 20 62 72 6f 77 73 65 72 73 or more browsers
8340: 0d 0a 20 20 20 20 20 20 20 20 63 78 20 3d 20 2f .. cx = /
8350: 5b 5c 75 30 30 30 30 2d 5c 75 30 30 31 66 5c 75 [\u0000-\u001f\u
8360: 30 30 37 66 2d 5c 75 30 30 39 66 5c 75 30 30 61 007f-\u009f\u00a
8370: 64 5c 75 30 36 30 30 2d 5c 75 30 36 30 34 5c 75 d\u0600-\u0604\u
8380: 30 37 30 66 5c 75 31 37 62 34 5c 75 31 37 62 35 070f\u17b4\u17b5
8390: 5c 75 32 30 30 63 2d 5c 75 32 30 30 66 5c 75 32 \u200c-\u200f\u2
83a0: 30 32 38 2d 5c 75 32 30 32 66 5c 75 32 30 36 30 028-\u202f\u2060
83b0: 2d 5c 75 32 30 36 66 5c 75 66 65 66 66 5c 75 66 -\u206f\ufeff\uf
83c0: 66 66 30 2d 5c 75 66 66 66 66 5d 2f 3b 0d 0a 0d ff0-\uffff]/;...
83d0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 74 6f 6b 65 . // toke
83e0: 6e 0d 0a 20 20 20 20 20 20 20 20 74 78 20 3d 20 n.. tx =
83f0: 2f 5e 5c 73 2a 28 5b 28 29 7b 7d 5c 5b 2e 2c 3a /^\s*([(){}\[.,:
8400: 3b 27 22 7e 5c 3f 5c 5d 23 40 5d 7c 3d 3d 3f 3d ;'"~\?\]#@]|==?=
8410: 3f 7c 5c 2f 28 5c 2a 28 6a 73 68 69 6e 74 7c 6a ?|\/(\*(jshint|j
8420: 73 6c 69 6e 74 7c 6d 65 6d 62 65 72 73 3f 7c 67 slint|members?|g
8430: 6c 6f 62 61 6c 29 3f 7c 3d 7c 5c 2f 29 3f 7c 5c lobal)?|=|\/)?|\
8440: 2a 5b 5c 2f 3d 5d 3f 7c 5c 2b 28 3f 3a 3d 7c 5c *[\/=]?|\+(?:=|\
8450: 2b 2b 29 3f 7c 2d 28 3f 3a 3d 7c 2d 2b 29 3f 7c ++)?|-(?:=|-+)?|
8460: 25 3d 3f 7c 26 5b 26 3d 5d 3f 7c 5c 7c 5b 7c 3d %=?|&[&=]?|\|[|=
8470: 5d 3f 7c 3e 3e 3f 3e 3f 3d 3f 7c 3c 28 5b 5c 2f ]?|>>?>?=?|<([\/
8480: 3d 21 5d 7c 5c 21 28 5c 5b 7c 2d 2d 29 3f 7c 3c =!]|\!(\[|--)?|<
8490: 3d 3f 29 3f 7c 5c 5e 3d 3f 7c 5c 21 3d 3f 3d 3f =?)?|\^=?|\!=?=?
84a0: 7c 5b 61 2d 7a 41 2d 5a d0 b0 2d d1 8f d0 90 2d |[a-zA-Z..-....-
84b0: d0 af 5f 24 5d 5b 61 2d 7a 41 2d 5a d0 b0 2d d1 .._$][a-zA-Z..-.
84c0: 8f d0 90 2d d0 af 30 2d 39 5f 24 5d 2a 7c 5b 30 ...-..0-9_$]*|[0
84d0: 2d 39 5d 2b 28 5b 78 58 5d 5b 30 2d 39 61 2d 66 -9]+([xX][0-9a-f
84e0: 41 2d 46 5d 2b 7c 5c 2e 5b 30 2d 39 5d 2a 29 3f A-F]+|\.[0-9]*)?
84f0: 28 5b 65 45 5d 5b 2b 5c 2d 5d 3f 5b 30 2d 39 5d ([eE][+\-]?[0-9]
8500: 2b 29 3f 29 2f 3b 0d 0a 0d 0a 20 20 20 20 20 20 +)?)/;....
8510: 20 20 2f 2f 20 63 68 61 72 61 63 74 65 72 73 20 // characters
8520: 69 6e 20 73 74 72 69 6e 67 73 20 74 68 61 74 20 in strings that
8530: 6e 65 65 64 20 65 73 63 61 70 65 6d 65 6e 74 0d need escapement.
8540: 0a 20 20 20 20 20 20 20 20 6e 78 20 3d 20 2f 5b . nx = /[
8550: 5c 75 30 30 30 30 2d 5c 75 30 30 31 66 26 3c 22 \u0000-\u001f&<"
8560: 5c 2f 5c 5c 5c 75 30 30 37 66 2d 5c 75 30 30 39 \/\\\u007f-\u009
8570: 66 5c 75 30 30 61 64 5c 75 30 36 30 30 2d 5c 75 f\u00ad\u0600-\u
8580: 30 36 30 34 5c 75 30 37 30 66 5c 75 31 37 62 34 0604\u070f\u17b4
8590: 5c 75 31 37 62 35 5c 75 32 30 30 63 2d 5c 75 32 \u17b5\u200c-\u2
85a0: 30 30 66 5c 75 32 30 32 38 2d 5c 75 32 30 32 66 00f\u2028-\u202f
85b0: 5c 75 32 30 36 30 2d 5c 75 32 30 36 66 5c 75 66 \u2060-\u206f\uf
85c0: 65 66 66 5c 75 66 66 66 30 2d 5c 75 66 66 66 66 eff\ufff0-\uffff
85d0: 5d 2f 3b 0d 0a 20 20 20 20 20 20 20 20 6e 78 67 ]/;.. nxg
85e0: 20 3d 20 2f 5b 5c 75 30 30 30 30 2d 5c 75 30 30 = /[\u0000-\u00
85f0: 31 66 26 3c 22 5c 2f 5c 5c 5c 75 30 30 37 66 2d 1f&<"\/\\\u007f-
8600: 5c 75 30 30 39 66 5c 75 30 30 61 64 5c 75 30 36 \u009f\u00ad\u06
8610: 30 30 2d 5c 75 30 36 30 34 5c 75 30 37 30 66 5c 00-\u0604\u070f\
8620: 75 31 37 62 34 5c 75 31 37 62 35 5c 75 32 30 30 u17b4\u17b5\u200
8630: 63 2d 5c 75 32 30 30 66 5c 75 32 30 32 38 2d 5c c-\u200f\u2028-\
8640: 75 32 30 32 66 5c 75 32 30 36 30 2d 5c 75 32 30 u202f\u2060-\u20
8650: 36 66 5c 75 66 65 66 66 5c 75 66 66 66 30 2d 5c 6f\ufeff\ufff0-\
8660: 75 66 66 66 66 5d 2f 67 3b 0d 0a 0d 0a 20 20 20 uffff]/g;....
8670: 20 20 20 20 20 2f 2f 20 73 74 61 72 20 73 6c 61 // star sla
8680: 73 68 0d 0a 20 20 20 20 20 20 20 20 6c 78 20 3d sh.. lx =
8690: 20 2f 5c 2a 5c 2f 2f 3b 0d 0a 0d 0a 20 20 20 20 /\*\//;....
86a0: 20 20 20 20 2f 2f 20 69 64 65 6e 74 69 66 69 65 // identifie
86b0: 72 0d 0a 20 20 20 20 20 20 20 20 69 78 20 3d 20 r.. ix =
86c0: 2f 5e 28 5b 61 2d 7a 41 2d 5a d0 b0 2d d1 8f d0 /^([a-zA-Z..-...
86d0: 90 2d d0 af 24 5d 5b 61 2d 7a 41 2d 5a d0 b0 2d .-..$][a-zA-Z..-
86e0: d1 8f d0 90 2d d0 af 30 2d 39 5f 24 5d 2a 29 24 ....-..0-9_$]*)$
86f0: 2f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f /;.... //
8700: 20 6a 61 76 61 73 63 72 69 70 74 20 75 72 6c 0d javascript url.
8710: 0a 20 20 20 20 20 20 20 20 6a 78 20 3d 20 2f 5e . jx = /^
8720: 28 3f 3a 6a 61 76 61 73 63 72 69 70 74 7c 6a 73 (?:javascript|js
8730: 63 72 69 70 74 7c 65 63 6d 61 73 63 72 69 70 74 cript|ecmascript
8740: 7c 76 62 73 63 72 69 70 74 7c 6d 6f 63 68 61 7c |vbscript|mocha|
8750: 6c 69 76 65 73 63 72 69 70 74 29 5c 73 2a 3a 2f livescript)\s*:/
8760: 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f i;.... //
8770: 20 63 61 74 63 68 65 73 20 2f 2a 20 66 61 6c 6c catches /* fall
8780: 73 20 74 68 72 6f 75 67 68 20 2a 2f 20 63 6f 6d s through */ com
8790: 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 66 ments.. f
87a0: 74 20 3d 20 2f 5e 5c 73 2a 5c 2f 5c 2a 5c 73 2a t = /^\s*\/\*\s*
87b0: 66 61 6c 6c 73 5c 73 74 68 72 6f 75 67 68 5c 73 falls\sthrough\s
87c0: 2a 5c 2a 5c 2f 5c 73 2a 24 2f 3b 0d 0a 20 20 20 *\*\/\s*$/;..
87d0: 20 7d 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 66 75 }());.... fu
87e0: 6e 63 74 69 6f 6e 20 46 28 29 20 7b 7d 20 20 20 nction F() {}
87f0: 20 20 2f 2f 20 55 73 65 64 20 62 79 20 4f 62 6a // Used by Obj
8800: 65 63 74 2e 63 72 65 61 74 65 0d 0a 0d 0a 20 20 ect.create....
8810: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 5f 6f 77 function is_ow
8820: 6e 28 6f 62 6a 65 63 74 2c 20 6e 61 6d 65 29 20 n(object, name)
8830: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 {.. // Th
8840: 65 20 6f 62 6a 65 63 74 2e 68 61 73 4f 77 6e 50 e object.hasOwnP
8850: 72 6f 70 65 72 74 79 20 6d 65 74 68 6f 64 20 66 roperty method f
8860: 61 69 6c 73 20 77 68 65 6e 20 74 68 65 20 70 72 ails when the pr
8870: 6f 70 65 72 74 79 20 75 6e 64 65 72 20 63 6f 6e operty under con
8880: 73 69 64 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 sideration..
8890: 20 20 20 20 2f 2f 20 69 73 20 6e 61 6d 65 64 20 // is named
88a0: 27 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 27 'hasOwnProperty'
88b0: 2e 20 53 6f 20 77 65 20 68 61 76 65 20 74 6f 20 . So we have to
88c0: 75 73 65 20 74 68 69 73 20 6d 6f 72 65 20 63 6f use this more co
88d0: 6e 76 6f 6c 75 74 65 64 20 66 6f 72 6d 2e 0d 0a nvoluted form...
88e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f return O
88f0: 62 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e bject.prototype.
8900: 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 2e 63 hasOwnProperty.c
8910: 61 6c 6c 28 6f 62 6a 65 63 74 2c 20 6e 61 6d 65 all(object, name
8920: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 );.. }....
8930: 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b 4f function checkO
8940: 70 74 69 6f 6e 28 6e 61 6d 65 2c 20 74 29 20 7b ption(name, t) {
8950: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61 .. if (va
8960: 6c 4f 70 74 69 6f 6e 73 5b 6e 61 6d 65 5d 20 3d lOptions[name] =
8970: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 26 26 20 == undefined &&
8980: 62 6f 6f 6c 4f 70 74 69 6f 6e 73 5b 6e 61 6d 65 boolOptions[name
8990: 5d 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 ] === undefined)
89a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
89b0: 77 61 72 6e 69 6e 67 28 22 42 61 64 20 6f 70 74 warning("Bad opt
89c0: 69 6f 6e 3a 20 27 22 20 2b 20 6e 61 6d 65 20 2b ion: '" + name +
89d0: 20 22 27 2e 22 2c 20 74 29 3b 0d 0a 20 20 20 20 "'.", t);..
89e0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a }.. }....
89f0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS
8a00: 74 72 69 6e 67 28 6f 62 6a 29 20 7b 0d 0a 20 20 tring(obj) {..
8a10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a return Obj
8a20: 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f ect.prototype.to
8a30: 53 74 72 69 6e 67 2e 63 61 6c 6c 28 6f 62 6a 29 String.call(obj)
8a40: 20 3d 3d 3d 20 22 5b 6f 62 6a 65 63 74 20 53 74 === "[object St
8a50: 72 69 6e 67 5d 22 3b 0d 0a 20 20 20 20 7d 0d 0a ring]";.. }..
8a60: 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 .. // Provide
8a70: 20 63 72 69 74 69 63 61 6c 20 45 53 35 20 66 75 critical ES5 fu
8a80: 6e 63 74 69 6f 6e 73 20 74 6f 20 45 53 33 2e 0d nctions to ES3..
8a90: 0a 0d 0a 20 20 20 20 69 66 20 28 74 79 70 65 6f ... if (typeo
8aa0: 66 20 41 72 72 61 79 2e 69 73 41 72 72 61 79 20 f Array.isArray
8ab0: 21 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 !== "function")
8ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79 {.. Array
8ad0: 2e 69 73 41 72 72 61 79 20 3d 20 66 75 6e 63 74 .isArray = funct
8ae0: 69 6f 6e 20 28 6f 29 20 7b 0d 0a 20 20 20 20 20 ion (o) {..
8af0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62 return Ob
8b00: 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 74 ject.prototype.t
8b10: 6f 53 74 72 69 6e 67 2e 61 70 70 6c 79 28 6f 29 oString.apply(o)
8b20: 20 3d 3d 3d 20 22 5b 6f 62 6a 65 63 74 20 41 72 === "[object Ar
8b30: 72 61 79 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20 ray]";..
8b40: 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 };.. }....
8b50: 20 69 66 20 28 21 41 72 72 61 79 2e 70 72 6f 74 if (!Array.prot
8b60: 6f 74 79 70 65 2e 66 6f 72 45 61 63 68 29 20 7b otype.forEach) {
8b70: 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79 2e .. Array.
8b80: 70 72 6f 74 6f 74 79 70 65 2e 66 6f 72 45 61 63 prototype.forEac
8b90: 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 66 6e h = function (fn
8ba0: 2c 20 73 63 6f 70 65 29 20 7b 0d 0a 20 20 20 20 , scope) {..
8bb0: 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 20 var len
8bc0: 3d 20 74 68 69 73 2e 6c 65 6e 67 74 68 3b 0d 0a = this.length;..
8bd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .. fo
8be0: 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
8bf0: 3c 20 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0d 0a 20 < len; i++) {..
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
8c10: 6e 2e 63 61 6c 6c 28 73 63 6f 70 65 20 7c 7c 20 n.call(scope ||
8c20: 74 68 69 73 2c 20 74 68 69 73 5b 69 5d 2c 20 69 this, this[i], i
8c30: 2c 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 , this);..
8c40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
8c50: 20 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 };.. }....
8c60: 20 20 69 66 20 28 21 41 72 72 61 79 2e 70 72 6f if (!Array.pro
8c70: 74 6f 74 79 70 65 2e 69 6e 64 65 78 4f 66 29 20 totype.indexOf)
8c80: 7b 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79 {.. Array
8c90: 2e 70 72 6f 74 6f 74 79 70 65 2e 69 6e 64 65 78 .prototype.index
8ca0: 4f 66 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73 Of = function (s
8cb0: 65 61 72 63 68 45 6c 65 6d 65 6e 74 20 2f 2a 2c earchElement /*,
8cc0: 20 66 72 6f 6d 49 6e 64 65 78 20 2a 2f 20 29 20 fromIndex */ )
8cd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
8ce0: 66 20 28 74 68 69 73 20 3d 3d 3d 20 6e 75 6c 6c f (this === null
8cf0: 20 7c 7c 20 74 68 69 73 20 3d 3d 3d 20 75 6e 64 || this === und
8d00: 65 66 69 6e 65 64 29 20 7b 0d 0a 20 20 20 20 20 efined) {..
8d10: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 throw
8d20: 20 6e 65 77 20 54 79 70 65 45 72 72 6f 72 28 29 new TypeError()
8d30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
8d40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
8d50: 76 61 72 20 74 20 3d 20 6e 65 77 20 4f 62 6a 65 var t = new Obje
8d60: 63 74 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 ct(this);..
8d70: 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 20 3d var len =
8d80: 20 74 2e 6c 65 6e 67 74 68 20 3e 3e 3e 20 30 3b t.length >>> 0;
8d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
8da0: 69 66 20 28 6c 65 6e 20 3d 3d 3d 20 30 29 20 7b if (len === 0) {
8db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8dc0: 20 20 72 65 74 75 72 6e 20 2d 31 3b 0d 0a 20 20 return -1;..
8dd0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 }....
8de0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e var n
8df0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 = 0;..
8e00: 20 20 20 69 66 20 28 61 72 67 75 6d 65 6e 74 73 if (arguments
8e10: 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a .length > 0) {..
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e30: 6e 20 3d 20 4e 75 6d 62 65 72 28 61 72 67 75 6d n = Number(argum
8e40: 65 6e 74 73 5b 31 5d 29 3b 0d 0a 20 20 20 20 20 ents[1]);..
8e50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
8e60: 20 21 3d 20 6e 29 20 7b 20 2f 2f 20 73 68 6f 72 != n) { // shor
8e70: 74 63 75 74 20 66 6f 72 20 76 65 72 69 66 79 69 tcut for verifyi
8e80: 6e 67 20 69 66 20 69 74 27 73 20 4e 61 4e 0d 0a ng if it's NaN..
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8ea0: 20 20 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 n = 0;..
8eb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
8ec0: 73 65 20 69 66 20 28 6e 20 21 3d 3d 20 30 20 26 se if (n !== 0 &
8ed0: 26 20 6e 20 21 3d 20 49 6e 66 69 6e 69 74 79 20 & n != Infinity
8ee0: 26 26 20 6e 20 21 3d 20 2d 49 6e 66 69 6e 69 74 && n != -Infinit
8ef0: 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 y) {..
8f00: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 28 6e n = (n
8f10: 20 3e 20 30 20 7c 7c 20 2d 31 29 20 2a 20 4d 61 > 0 || -1) * Ma
8f20: 74 68 2e 66 6c 6f 6f 72 28 4d 61 74 68 2e 61 62 th.floor(Math.ab
8f30: 73 28 6e 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 s(n));..
8f40: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
8f50: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
8f60: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 3d if (n >=
8f70: 20 6c 65 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 len) {..
8f80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
8f90: 2d 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 -1;..
8fa0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 }....
8fb0: 20 20 76 61 72 20 6b 20 3d 20 6e 20 3e 3d 20 30 var k = n >= 0
8fc0: 20 3f 20 6e 20 3a 20 4d 61 74 68 2e 6d 61 78 28 ? n : Math.max(
8fd0: 6c 65 6e 20 2d 20 4d 61 74 68 2e 61 62 73 28 6e len - Math.abs(n
8fe0: 29 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 ), 0);..
8ff0: 20 20 20 20 66 6f 72 20 28 3b 20 6b 20 3c 20 6c for (; k < l
9000: 65 6e 3b 20 6b 2b 2b 29 20 7b 0d 0a 20 20 20 20 en; k++) {..
9010: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
9020: 6b 20 69 6e 20 74 20 26 26 20 74 5b 6b 5d 20 3d k in t && t[k] =
9030: 3d 3d 20 73 65 61 72 63 68 45 6c 65 6d 65 6e 74 == searchElement
9040: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
9050: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
9060: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
9070: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
9080: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
9090: 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0d 0a return -1;..
90a0: 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 };..
90b0: 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 28 74 79 70 }.... if (typ
90c0: 65 6f 66 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 eof Object.creat
90d0: 65 20 21 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22 e !== "function"
90e0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 4f 62 6a ) {.. Obj
90f0: 65 63 74 2e 63 72 65 61 74 65 20 3d 20 66 75 6e ect.create = fun
9100: 63 74 69 6f 6e 20 28 6f 29 20 7b 0d 0a 20 20 20 ction (o) {..
9110: 20 20 20 20 20 20 20 20 20 46 2e 70 72 6f 74 6f F.proto
9120: 74 79 70 65 20 3d 20 6f 3b 0d 0a 20 20 20 20 20 type = o;..
9130: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 return ne
9140: 77 20 46 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 w F();..
9150: 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 };.. }....
9160: 20 69 66 20 28 74 79 70 65 6f 66 20 4f 62 6a 65 if (typeof Obje
9170: 63 74 2e 6b 65 79 73 20 21 3d 3d 20 22 66 75 6e ct.keys !== "fun
9180: 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 ction") {..
9190: 20 20 20 4f 62 6a 65 63 74 2e 6b 65 79 73 20 3d Object.keys =
91a0: 20 66 75 6e 63 74 69 6f 6e 20 28 6f 29 20 7b 0d function (o) {.
91b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
91c0: 20 61 20 3d 20 5b 5d 2c 20 6b 3b 0d 0a 20 20 20 a = [], k;..
91d0: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6b 20 for (k
91e0: 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 in o) {..
91f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f if (is_
9200: 6f 77 6e 28 6f 2c 20 6b 29 29 20 7b 0d 0a 20 20 own(o, k)) {..
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9220: 20 20 61 2e 70 75 73 68 28 6b 29 3b 0d 0a 20 20 a.push(k);..
9230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
9240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
9250: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
9260: 72 6e 20 61 3b 0d 0a 20 20 20 20 20 20 20 20 7d rn a;.. }
9270: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 ;.. }....
9280: 2f 2f 20 4e 6f 6e 20 73 74 61 6e 64 61 72 64 20 // Non standard
9290: 6d 65 74 68 6f 64 73 0d 0a 0d 0a 20 20 20 20 66 methods.... f
92a0: 75 6e 63 74 69 6f 6e 20 69 73 41 6c 70 68 61 28 unction isAlpha(
92b0: 73 74 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 str) {..
92c0: 72 65 74 75 72 6e 20 28 73 74 72 20 3e 3d 20 22 return (str >= "
92d0: 61 22 20 26 26 20 73 74 72 20 3c 3d 20 22 7a 5c a" && str <= "z\
92e0: 75 66 66 66 66 22 29 20 7c 7c 0d 0a 20 20 20 20 uffff") ||..
92f0: 20 20 20 20 20 20 20 20 28 73 74 72 20 3e 3d 20 (str >=
9300: 22 41 22 20 26 26 20 73 74 72 20 3c 3d 20 22 5a "A" && str <= "Z
9310: 5c 75 66 66 66 66 22 29 20 7c 7c 20 0d 0a 20 20 \uffff") || ..
9320: 20 20 20 20 20 20 20 20 20 20 28 73 74 72 20 3e (str >
9330: 3d 20 27 d0 b0 27 20 26 26 20 73 74 72 20 3c 3d = '..' && str <=
9340: 20 27 d1 8f 27 29 20 7c 7c 0d 0a 20 20 20 20 20 '..') ||..
9350: 20 20 20 20 20 20 20 28 73 74 72 20 3e 3d 20 27 (str >= '
9360: d0 90 27 20 26 26 20 73 74 72 20 3c 3d 20 27 d0 ..' && str <= '.
9370: af 27 29 20 20 3b 0d 0a 20 20 20 20 7d 0d 0a 0d .') ;.. }...
9380: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is
9390: 44 69 67 69 74 28 73 74 72 29 20 7b 0d 0a 20 20 Digit(str) {..
93a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 return (st
93b0: 72 20 3e 3d 20 22 30 22 20 26 26 20 73 74 72 20 r >= "0" && str
93c0: 3c 3d 20 22 39 22 29 3b 0d 0a 20 20 20 20 7d 0d <= "9");.. }.
93d0: 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 ... function
93e0: 73 75 70 70 6c 61 6e 74 28 73 74 72 2c 20 64 61 supplant(str, da
93f0: 74 61 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 ta) {.. r
9400: 65 74 75 72 6e 20 73 74 72 2e 72 65 70 6c 61 63 eturn str.replac
9410: 65 28 2f 5c 7b 28 5b 5e 7b 7d 5d 2a 29 5c 7d 2f e(/\{([^{}]*)\}/
9420: 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 2c 20 g, function (a,
9430: 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 b) {..
9440: 20 20 76 61 72 20 72 20 3d 20 64 61 74 61 5b 62 var r = data[b
9450: 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ];..
9460: 72 65 74 75 72 6e 20 74 79 70 65 6f 66 20 72 20 return typeof r
9470: 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 7c 7c 20 === "string" ||
9480: 74 79 70 65 6f 66 20 72 20 3d 3d 3d 20 22 6e 75 typeof r === "nu
9490: 6d 62 65 72 22 20 3f 20 72 20 3a 20 61 3b 0d 0a mber" ? r : a;..
94a0: 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20 });..
94b0: 20 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 }.... functi
94c0: 6f 6e 20 63 6f 6d 62 69 6e 65 28 74 2c 20 6f 29 on combine(t, o)
94d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
94e0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 n;.. for
94f0: 28 6e 20 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20 (n in o) {..
9500: 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 6f if (is_o
9510: 77 6e 28 6f 2c 20 6e 29 20 26 26 20 21 69 73 5f wn(o, n) && !is_
9520: 6f 77 6e 28 4a 53 48 49 4e 54 2e 62 6c 61 63 6b own(JSHINT.black
9530: 6c 69 73 74 2c 20 6e 29 29 20 7b 0d 0a 20 20 20 list, n)) {..
9540: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 5b 6e t[n
9550: 5d 20 3d 20 6f 5b 6e 5d 3b 0d 0a 20 20 20 20 20 ] = o[n];..
9560: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
9570: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 }.. }....
9580: 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 function updat
9590: 65 50 72 65 64 65 66 69 6e 65 64 28 29 20 7b 0d ePredefined() {.
95a0: 0a 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e . Object.
95b0: 6b 65 79 73 28 4a 53 48 49 4e 54 2e 62 6c 61 63 keys(JSHINT.blac
95c0: 6b 6c 69 73 74 29 2e 66 6f 72 45 61 63 68 28 66 klist).forEach(f
95d0: 75 6e 63 74 69 6f 6e 20 28 6b 65 79 29 20 7b 0d unction (key) {.
95e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c . del
95f0: 65 74 65 20 70 72 65 64 65 66 69 6e 65 64 5b 6b ete predefined[k
9600: 65 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 29 ey];.. })
9610: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 ;.. }....
9620: 66 75 6e 63 74 69 6f 6e 20 61 73 73 75 6d 65 28 function assume(
9630: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 ) {.. if
9640: 28 6f 70 74 69 6f 6e 2e 63 6f 75 63 68 29 20 7b (option.couch) {
9650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f .. co
9660: 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 mbine(predefined
9670: 2c 20 63 6f 75 63 68 29 3b 0d 0a 20 20 20 20 20 , couch);..
9680: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
9690: 69 66 20 28 6f 70 74 69 6f 6e 2e 72 68 69 6e 6f if (option.rhino
96a0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
96b0: 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 combine(predefi
96c0: 6e 65 64 2c 20 72 68 69 6e 6f 29 3b 0d 0a 20 20 ned, rhino);..
96d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
96e0: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 72 if (option.pr
96f0: 6f 74 6f 74 79 70 65 6a 73 29 20 7b 0d 0a 20 20 ototypejs) {..
9700: 20 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e combin
9710: 65 28 70 72 65 64 65 66 69 6e 65 64 2c 20 70 72 e(predefined, pr
9720: 6f 74 6f 74 79 70 65 6a 73 29 3b 0d 0a 20 20 20 ototypejs);..
9730: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
9740: 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 6f 64 if (option.nod
9750: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 e) {..
9760: 20 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 combine(predef
9770: 69 6e 65 64 2c 20 6e 6f 64 65 29 3b 0d 0a 20 20 ined, node);..
9780: 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e option
9790: 2e 67 6c 6f 62 61 6c 73 74 72 69 63 74 20 3d 20 .globalstrict =
97a0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d true;.. }
97b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 .... if (
97c0: 6f 70 74 69 6f 6e 2e 64 65 76 65 6c 29 20 7b 0d option.devel) {.
97d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d . com
97e0: 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 2c bine(predefined,
97f0: 20 64 65 76 65 6c 29 3b 0d 0a 20 20 20 20 20 20 devel);..
9800: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 }.... i
9810: 66 20 28 6f 70 74 69 6f 6e 2e 64 6f 6a 6f 29 20 f (option.dojo)
9820: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {.. c
9830: 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 ombine(predefine
9840: 64 2c 20 64 6f 6a 6f 29 3b 0d 0a 20 20 20 20 20 d, dojo);..
9850: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
9860: 69 66 20 28 6f 70 74 69 6f 6e 2e 62 72 6f 77 73 if (option.brows
9870: 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 er) {..
9880: 20 20 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 combine(prede
9890: 66 69 6e 65 64 2c 20 62 72 6f 77 73 65 72 29 3b fined, browser);
98a0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 .. }....
98b0: 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f if (optio
98c0: 6e 2e 6e 6f 6e 73 74 61 6e 64 61 72 64 29 20 7b n.nonstandard) {
98d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f .. co
98e0: 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 mbine(predefined
98f0: 2c 20 6e 6f 6e 73 74 61 6e 64 61 72 64 29 3b 0d , nonstandard);.
9900: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 . }....
9910: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
9920: 2e 6a 71 75 65 72 79 29 20 7b 0d 0a 20 20 20 20 .jquery) {..
9930: 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 combine(
9940: 70 72 65 64 65 66 69 6e 65 64 2c 20 6a 71 75 65 predefined, jque
9950: 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d ry);.. }.
9960: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f ... if (o
9970: 70 74 69 6f 6e 2e 6d 6f 6f 74 6f 6f 6c 73 29 20 ption.mootools)
9980: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {.. c
9990: 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 ombine(predefine
99a0: 64 2c 20 6d 6f 6f 74 6f 6f 6c 73 29 3b 0d 0a 20 d, mootools);..
99b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
99c0: 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 77 if (option.w
99d0: 6f 72 6b 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 orker) {..
99e0: 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 70 72 combine(pr
99f0: 65 64 65 66 69 6e 65 64 2c 20 77 6f 72 6b 65 72 edefined, worker
9a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d );.. }...
9a10: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 . if (opt
9a20: 69 6f 6e 2e 77 73 68 29 20 7b 0d 0a 20 20 20 20 ion.wsh) {..
9a30: 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 combine(
9a40: 70 72 65 64 65 66 69 6e 65 64 2c 20 77 73 68 29 predefined, wsh)
9a50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a ;.. }....
9a60: 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 if (opti
9a70: 6f 6e 2e 65 73 6e 65 78 74 29 20 7b 0d 0a 20 20 on.esnext) {..
9a80: 20 20 20 20 20 20 20 20 20 20 75 73 65 45 53 4e useESN
9a90: 65 78 74 53 79 6e 74 61 78 28 29 3b 0d 0a 20 20 extSyntax();..
9aa0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
9ab0: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 67 6c if (option.gl
9ac0: 6f 62 61 6c 73 74 72 69 63 74 20 26 26 20 6f 70 obalstrict && op
9ad0: 74 69 6f 6e 2e 73 74 72 69 63 74 20 21 3d 3d 20 tion.strict !==
9ae0: 66 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 false) {..
9af0: 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 73 74 72 option.str
9b00: 69 63 74 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 ict = true;..
9b10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d }.. }...
9b20: 0a 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 64 75 63 ... // Produc
9b30: 65 20 61 6e 20 65 72 72 6f 72 20 77 61 72 6e 69 e an error warni
9b40: 6e 67 2e 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f ng... functio
9b50: 6e 20 71 75 69 74 28 6d 65 73 73 61 67 65 2c 20 n quit(message,
9b60: 6c 69 6e 65 2c 20 63 68 72 29 20 7b 0d 0a 20 20 line, chr) {..
9b70: 20 20 20 20 20 20 76 61 72 20 70 65 72 63 65 6e var percen
9b80: 74 61 67 65 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f tage = Math.floo
9b90: 72 28 28 6c 69 6e 65 20 2f 20 6c 69 6e 65 73 2e r((line / lines.
9ba0: 6c 65 6e 67 74 68 29 20 2a 20 31 30 30 29 3b 0d length) * 100);.
9bb0: 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 ... throw
9bc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
9bd0: 6e 61 6d 65 3a 20 22 4a 53 48 69 6e 74 45 72 72 name: "JSHintErr
9be0: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 or",..
9bf0: 20 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c 0d 0a 20 line: line,..
9c00: 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 61 chara
9c10: 63 74 65 72 3a 20 63 68 72 2c 0d 0a 20 20 20 20 cter: chr,..
9c20: 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 3a message:
9c30: 20 6d 65 73 73 61 67 65 20 2b 20 22 20 28 22 20 message + " ("
9c40: 2b 20 70 65 72 63 65 6e 74 61 67 65 20 2b 20 22 + percentage + "
9c50: 25 20 73 63 61 6e 6e 65 64 29 2e 22 2c 0d 0a 20 % scanned).",..
9c60: 20 20 20 20 20 20 20 20 20 20 20 72 61 77 3a 20 raw:
9c70: 6d 65 73 73 61 67 65 0d 0a 20 20 20 20 20 20 20 message..
9c80: 20 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 };.. }....
9c90: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 75 6e 64 function isund
9ca0: 65 66 28 73 63 6f 70 65 2c 20 6d 2c 20 74 2c 20 ef(scope, m, t,
9cb0: 61 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 a) {.. re
9cc0: 74 75 72 6e 20 4a 53 48 49 4e 54 2e 75 6e 64 65 turn JSHINT.unde
9cd0: 66 73 2e 70 75 73 68 28 5b 73 63 6f 70 65 2c 20 fs.push([scope,
9ce0: 6d 2c 20 74 2c 20 61 5d 29 3b 0d 0a 20 20 20 20 m, t, a]);..
9cf0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f }.... functio
9d00: 6e 20 77 61 72 6e 69 6e 67 28 6d 2c 20 74 2c 20 n warning(m, t,
9d10: 61 2c 20 62 2c 20 63 2c 20 64 29 20 7b 0d 0a 20 a, b, c, d) {..
9d20: 20 20 20 20 20 20 20 76 61 72 20 63 68 2c 20 6c var ch, l
9d30: 2c 20 77 3b 0d 0a 20 20 20 20 20 20 20 20 74 20 , w;.. t
9d40: 3d 20 74 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e = t || nexttoken
9d50: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 ;.. if (t
9d60: 2e 69 64 20 3d 3d 3d 20 22 28 65 6e 64 29 22 29 .id === "(end)")
9d70: 20 7b 20 20 2f 2f 20 60 7e 0d 0a 20 20 20 20 20 { // `~..
9d80: 20 20 20 20 20 20 20 74 20 3d 20 74 6f 6b 65 6e t = token
9d90: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 ;.. }..
9da0: 20 20 20 20 20 20 6c 20 3d 20 74 2e 6c 69 6e 65 l = t.line
9db0: 20 7c 7c 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 || 0;..
9dc0: 63 68 20 3d 20 74 2e 66 72 6f 6d 20 7c 7c 20 30 ch = t.from || 0
9dd0: 3b 0d 0a 20 20 20 20 20 20 20 20 77 20 3d 20 7b ;.. w = {
9de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 64 .. id
9df0: 3a 20 22 28 65 72 72 6f 72 29 22 2c 0d 0a 20 20 : "(error)",..
9e00: 20 20 20 20 20 20 20 20 20 20 72 61 77 3a 20 6d raw: m
9e10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 ,.. e
9e20: 76 69 64 65 6e 63 65 3a 20 6c 69 6e 65 73 5b 6c vidence: lines[l
9e30: 20 2d 20 31 5d 20 7c 7c 20 22 22 2c 0d 0a 20 20 - 1] || "",..
9e40: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 line:
9e50: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 l,..
9e60: 63 68 61 72 61 63 74 65 72 3a 20 63 68 2c 0d 0a character: ch,..
9e70: 20 20 20 20 20 20 20 20 20 20 20 20 61 3a 20 61 a: a
9e80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 ,.. b
9e90: 3a 20 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 : b,..
9ea0: 20 20 63 3a 20 63 2c 0d 0a 20 20 20 20 20 20 20 c: c,..
9eb0: 20 20 20 20 20 64 3a 20 64 0d 0a 20 20 20 20 20 d: d..
9ec0: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 77 };.. w
9ed0: 2e 72 65 61 73 6f 6e 20 3d 20 73 75 70 70 6c 61 .reason = suppla
9ee0: 6e 74 28 6d 2c 20 77 29 3b 0d 0a 20 20 20 20 20 nt(m, w);..
9ef0: 20 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 JSHINT.errors
9f00: 2e 70 75 73 68 28 77 29 3b 0d 0a 20 20 20 20 20 .push(w);..
9f10: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 61 if (option.pa
9f20: 73 73 66 61 69 6c 29 20 7b 0d 0a 20 20 20 20 20 ssfail) {..
9f30: 20 20 20 20 20 20 20 71 75 69 74 28 22 53 74 6f quit("Sto
9f40: 70 70 69 6e 67 2e 20 22 2c 20 6c 2c 20 63 68 29 pping. ", l, ch)
9f50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 ;.. }..
9f60: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 20 2b warnings +
9f70: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 = 1;.. if
9f80: 20 28 77 61 72 6e 69 6e 67 73 20 3e 3d 20 6f 70 (warnings >= op
9f90: 74 69 6f 6e 2e 6d 61 78 65 72 72 29 20 7b 0d 0a tion.maxerr) {..
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 71 75 69 74 quit
9fb0: 28 22 54 6f 6f 20 6d 61 6e 79 20 65 72 72 6f 72 ("Too many error
9fc0: 73 2e 22 2c 20 6c 2c 20 63 68 29 3b 0d 0a 20 20 s.", l, ch);..
9fd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
9fe0: 20 72 65 74 75 72 6e 20 77 3b 0d 0a 20 20 20 20 return w;..
9ff0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f }.... functio
a000: 6e 20 77 61 72 6e 69 6e 67 41 74 28 6d 2c 20 6c n warningAt(m, l
a010: 2c 20 63 68 2c 20 61 2c 20 62 2c 20 63 2c 20 64 , ch, a, b, c, d
a020: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
a030: 75 72 6e 20 77 61 72 6e 69 6e 67 28 6d 2c 20 7b urn warning(m, {
a040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 .. li
a050: 6e 65 3a 20 6c 2c 0d 0a 20 20 20 20 20 20 20 20 ne: l,..
a060: 20 20 20 20 66 72 6f 6d 3a 20 63 68 0d 0a 20 20 from: ch..
a070: 20 20 20 20 20 20 7d 2c 20 61 2c 20 62 2c 20 63 }, a, b, c
a080: 2c 20 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a , d);.. }....
a090: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 72 72 function err
a0a0: 6f 72 28 6d 2c 20 74 2c 20 61 2c 20 62 2c 20 63 or(m, t, a, b, c
a0b0: 2c 20 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 , d) {..
a0c0: 77 61 72 6e 69 6e 67 28 6d 2c 20 74 2c 20 61 2c warning(m, t, a,
a0d0: 20 62 2c 20 63 2c 20 64 29 3b 0d 0a 20 20 20 20 b, c, d);..
a0e0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f }.... functio
a0f0: 6e 20 65 72 72 6f 72 41 74 28 6d 2c 20 6c 2c 20 n errorAt(m, l,
a100: 63 68 2c 20 61 2c 20 62 2c 20 63 2c 20 64 29 20 ch, a, b, c, d)
a110: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {.. retur
a120: 6e 20 65 72 72 6f 72 28 6d 2c 20 7b 0d 0a 20 20 n error(m, {..
a130: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 line:
a140: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 l,..
a150: 66 72 6f 6d 3a 20 63 68 0d 0a 20 20 20 20 20 20 from: ch..
a160: 20 20 7d 2c 20 61 2c 20 62 2c 20 63 2c 20 64 29 }, a, b, c, d)
a170: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 0d 0a ;.. }........
a180: 2f 2f 20 6c 65 78 69 63 61 6c 20 61 6e 61 6c 79 // lexical analy
a190: 73 69 73 20 61 6e 64 20 74 6f 6b 65 6e 20 63 6f sis and token co
a1a0: 6e 73 74 72 75 63 74 69 6f 6e 0d 0a 0d 0a 20 20 nstruction....
a1b0: 20 20 76 61 72 20 6c 65 78 20 3d 20 28 66 75 6e var lex = (fun
a1c0: 63 74 69 6f 6e 20 6c 65 78 28 29 20 7b 0d 0a 20 ction lex() {..
a1d0: 20 20 20 20 20 20 20 76 61 72 20 63 68 61 72 61 var chara
a1e0: 63 74 65 72 2c 20 66 72 6f 6d 2c 20 6c 69 6e 65 cter, from, line
a1f0: 2c 20 73 3b 0d 0a 0d 0a 2f 2f 20 50 72 69 76 61 , s;....// Priva
a200: 74 65 20 6c 65 78 20 6d 65 74 68 6f 64 73 0d 0a te lex methods..
a210: 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 .. functi
a220: 6f 6e 20 6e 65 78 74 4c 69 6e 65 28 29 20 7b 0d on nextLine() {.
a230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
a240: 20 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 at,..
a250: 20 20 20 20 20 20 74 77 3b 20 2f 2f 20 74 72 61 tw; // tra
a260: 69 6c 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 iling whitespace
a270: 20 63 68 65 63 6b 0d 0a 0d 0a 20 20 20 20 20 20 check....
a280: 20 20 20 20 20 20 69 66 20 28 6c 69 6e 65 20 3e if (line >
a290: 3d 20 6c 69 6e 65 73 2e 6c 65 6e 67 74 68 29 0d = lines.length).
a2a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
a2b0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a return false;..
a2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 .. ch
a2d0: 61 72 61 63 74 65 72 20 3d 20 31 3b 0d 0a 20 20 aracter = 1;..
a2e0: 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 6c 69 s = li
a2f0: 6e 65 73 5b 6c 69 6e 65 5d 3b 0d 0a 20 20 20 20 nes[line];..
a300: 20 20 20 20 20 20 20 20 6c 69 6e 65 20 2b 3d 20 line +=
a310: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 1;....
a320: 20 20 2f 2f 20 49 66 20 73 6d 61 72 74 74 61 62 // If smarttab
a330: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 s option is used
a340: 20 63 68 65 63 6b 20 66 6f 72 20 73 70 61 63 65 check for space
a350: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 61 s followed by ta
a360: 62 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 bs only...
a370: 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 77 69 // Otherwi
a380: 73 65 20 63 68 65 63 6b 20 66 6f 72 20 61 6e 79 se check for any
a390: 20 6f 63 63 75 72 65 6e 63 65 20 6f 66 20 6d 69 occurence of mi
a3a0: 78 65 64 20 74 61 62 73 20 61 6e 64 20 73 70 61 xed tabs and spa
a3b0: 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 ces...
a3c0: 20 20 2f 2f 20 54 61 62 73 20 61 6e 64 20 6f 6e // Tabs and on
a3d0: 65 20 73 70 61 63 65 20 66 6f 6c 6c 6f 77 65 64 e space followed
a3e0: 20 62 79 20 62 6c 6f 63 6b 20 63 6f 6d 6d 65 6e by block commen
a3f0: 74 20 69 73 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 t is allowed...
a400: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o
a410: 70 74 69 6f 6e 2e 73 6d 61 72 74 74 61 62 73 29 ption.smarttabs)
a420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a430: 20 20 61 74 20 3d 20 73 2e 73 65 61 72 63 68 28 at = s.search(
a440: 2f 20 5c 74 2f 29 3b 0d 0a 20 20 20 20 20 20 20 / \t/);..
a450: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 else..
a460: 20 20 20 20 20 20 20 20 20 20 20 61 74 20 3d 20 at =
a470: 73 2e 73 65 61 72 63 68 28 2f 20 5c 74 7c 5c 74 s.search(/ \t|\t
a480: 20 5b 5e 5c 2a 5d 2f 29 3b 0d 0a 0d 0a 20 20 20 [^\*]/);....
a490: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 74 20 if (at
a4a0: 3e 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 >= 0)..
a4b0: 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 warningAt
a4c0: 28 22 4d 69 78 65 64 20 73 70 61 63 65 73 20 61 ("Mixed spaces a
a4d0: 6e 64 20 74 61 62 73 2e 22 2c 20 6c 69 6e 65 2c nd tabs.", line,
a4e0: 20 61 74 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 at + 1);....
a4f0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 72 s = s.r
a500: 65 70 6c 61 63 65 28 2f 5c 74 2f 67 2c 20 74 61 eplace(/\t/g, ta
a510: 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 b);..
a520: 20 61 74 20 3d 20 73 2e 73 65 61 72 63 68 28 63 at = s.search(c
a530: 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 x);....
a540: 20 20 20 69 66 20 28 61 74 20 3e 3d 20 30 29 0d if (at >= 0).
a550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
a560: 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 73 61 warningAt("Unsa
a570: 66 65 20 63 68 61 72 61 63 74 65 72 2e 22 2c 20 fe character.",
a580: 6c 69 6e 65 2c 20 61 74 29 3b 0d 0a 0d 0a 20 20 line, at);....
a590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 if (op
a5a0: 74 69 6f 6e 2e 6d 61 78 6c 65 6e 20 26 26 20 6f tion.maxlen && o
a5b0: 70 74 69 6f 6e 2e 6d 61 78 6c 65 6e 20 3c 20 73 ption.maxlen < s
a5c0: 2e 6c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 .length)..
a5d0: 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
a5e0: 67 41 74 28 22 4c 69 6e 65 20 74 6f 6f 20 6c 6f gAt("Line too lo
a5f0: 6e 67 2e 22 2c 20 6c 69 6e 65 2c 20 73 2e 6c 65 ng.", line, s.le
a600: 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 ngth);....
a610: 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66 // Check f
a620: 6f 72 20 74 72 61 69 6c 69 6e 67 20 77 68 69 74 or trailing whit
a630: 65 73 70 61 63 65 73 0d 0a 20 20 20 20 20 20 20 espaces..
a640: 20 20 20 20 20 74 77 20 3d 20 6f 70 74 69 6f 6e tw = option
a650: 2e 74 72 61 69 6c 69 6e 67 20 26 26 20 73 2e 6d .trailing && s.m
a660: 61 74 63 68 28 2f 5e 28 2e 2a 3f 29 5c 73 2b 24 atch(/^(.*?)\s+$
a670: 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 /);..
a680: 20 69 66 20 28 74 77 20 26 26 20 21 2f 5e 5c 73 if (tw && !/^\s
a690: 2b 24 2f 2e 74 65 73 74 28 73 29 29 20 7b 0d 0a +$/.test(s)) {..
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a6b0: 77 61 72 6e 69 6e 67 41 74 28 22 54 72 61 69 6c warningAt("Trail
a6c0: 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 2e 22 ing whitespace."
a6d0: 2c 20 6c 69 6e 65 2c 20 74 77 5b 31 5d 2e 6c 65 , line, tw[1].le
a6e0: 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 20 20 20 20 ngth + 1);..
a6f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
a700: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr
a710: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a ue;.. }..
a720: 0d 0a 2f 2f 20 50 72 6f 64 75 63 65 20 61 20 74 ..// Produce a t
a730: 6f 6b 65 6e 20 6f 62 6a 65 63 74 2e 20 20 54 68 oken object. Th
a740: 65 20 74 6f 6b 65 6e 20 69 6e 68 65 72 69 74 73 e token inherits
a750: 20 66 72 6f 6d 20 61 20 73 79 6e 74 61 78 20 73 from a syntax s
a760: 79 6d 62 6f 6c 2e 0d 0a 0d 0a 20 20 20 20 20 20 ymbol.....
a770: 20 20 66 75 6e 63 74 69 6f 6e 20 69 74 28 74 79 function it(ty
a780: 70 65 2c 20 76 61 6c 75 65 29 20 7b 0d 0a 20 20 pe, value) {..
a790: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 2c var i,
a7a0: 20 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 t;....
a7b0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 function chec
a7c0: 6b 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0d 0a 20 kName(name) {..
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
a7e0: 66 20 28 21 6f 70 74 69 6f 6e 2e 70 72 6f 74 6f f (!option.proto
a7f0: 20 26 26 20 6e 61 6d 65 20 3d 3d 3d 20 22 5f 5f && name === "__
a800: 70 72 6f 74 6f 5f 5f 22 29 20 7b 0d 0a 20 20 20 proto__") {..
a810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a820: 20 77 61 72 6e 69 6e 67 41 74 28 22 54 68 65 20 warningAt("The
a830: 27 7b 61 7d 27 20 70 72 6f 70 65 72 74 79 20 69 '{a}' property i
a840: 73 20 64 65 70 72 65 63 61 74 65 64 2e 22 2c 20 s deprecated.",
a850: 6c 69 6e 65 2c 20 66 72 6f 6d 2c 20 6e 61 6d 65 line, from, name
a860: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
a870: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d return;.
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
a890: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 }....
a8a0: 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f if (!optio
a8b0: 6e 2e 69 74 65 72 61 74 6f 72 20 26 26 20 6e 61 n.iterator && na
a8c0: 6d 65 20 3d 3d 3d 20 22 5f 5f 69 74 65 72 61 74 me === "__iterat
a8d0: 6f 72 5f 5f 22 29 20 7b 0d 0a 20 20 20 20 20 20 or__") {..
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
a8f0: 72 6e 69 6e 67 41 74 28 22 27 7b 61 7d 27 20 69 rningAt("'{a}' i
a900: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 s only available
a910: 20 69 6e 20 4a 61 76 61 53 63 72 69 70 74 20 31 in JavaScript 1
a920: 2e 37 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d .7.", line, from
a930: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 , name);..
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
a950: 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 turn;..
a960: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
a970: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 // C
a980: 68 65 63 6b 20 66 6f 72 20 64 61 6e 67 6c 69 6e heck for danglin
a990: 67 20 75 6e 64 65 72 73 63 6f 72 65 73 20 75 6e g underscores un
a9a0: 6c 65 73 73 20 77 65 27 72 65 20 69 6e 20 4e 6f less we're in No
a9b0: 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 de..
a9c0: 20 20 20 20 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 // environme
a9d0: 6e 74 20 61 6e 64 20 74 68 69 73 20 69 64 65 6e nt and this iden
a9e0: 74 69 66 69 65 72 20 72 65 70 72 65 73 65 6e 74 tifier represent
a9f0: 73 20 62 75 69 6c 74 2d 69 6e 0d 0a 20 20 20 20 s built-in..
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e // N
aa10: 6f 64 65 20 67 6c 6f 62 61 6c 73 20 77 69 74 68 ode globals with
aa20: 20 75 6e 64 65 72 73 63 6f 72 65 73 2e 0d 0a 0d underscores....
aa30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
aa40: 20 76 61 72 20 68 61 73 44 61 6e 67 6c 69 6e 67 var hasDangling
aa50: 20 3d 20 2f 5e 28 5f 2b 2e 2a 7c 2e 2a 5f 2b 29 = /^(_+.*|.*_+)
aa60: 24 2f 2e 74 65 73 74 28 6e 61 6d 65 29 3b 0d 0a $/.test(name);..
aa70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
aa80: 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 6f 6d if (option.nom
aa90: 65 6e 20 26 26 20 68 61 73 44 61 6e 67 6c 69 6e en && hasDanglin
aaa0: 67 20 26 26 20 6e 61 6d 65 20 21 3d 3d 20 22 5f g && name !== "_
aab0: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
aac0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 if (op
aad0: 74 69 6f 6e 2e 6e 6f 64 65 20 26 26 20 74 6f 6b tion.node && tok
aae0: 65 6e 2e 69 64 20 21 3d 3d 20 22 2e 22 20 26 26 en.id !== "." &&
aaf0: 20 2f 5e 28 5f 5f 64 69 72 6e 61 6d 65 7c 5f 5f /^(__dirname|__
ab00: 66 69 6c 65 6e 61 6d 65 29 24 2f 2e 74 65 73 74 filename)$/.test
ab10: 28 6e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 (name))..
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ab30: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 return;....
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ab50: 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 78 70 warningAt("Unexp
ab60: 65 63 74 65 64 20 7b 61 7d 20 69 6e 20 27 7b 62 ected {a} in '{b
ab70: 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d }'.", line, from
ab80: 2c 20 22 64 61 6e 67 6c 69 6e 67 20 27 5f 27 22 , "dangling '_'"
ab90: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 , name);..
aba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
abb0: 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 turn;..
abc0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
abd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 // C
abe0: 68 65 63 6b 20 66 6f 72 20 6e 6f 6e 2d 63 61 6d heck for non-cam
abf0: 65 6c 63 61 73 65 20 6e 61 6d 65 73 2e 20 4e 61 elcase names. Na
ac00: 6d 65 73 20 6c 69 6b 65 20 4d 59 5f 56 41 52 20 mes like MY_VAR
ac10: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 and..
ac20: 20 20 20 20 20 2f 2f 20 5f 6d 79 56 61 72 20 61 // _myVar a
ac30: 72 65 20 6f 6b 61 79 20 74 68 6f 75 67 68 2e 0d re okay though..
ac40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
ac50: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 63 61 if (option.ca
ac60: 6d 65 6c 63 61 73 65 29 20 7b 0d 0a 20 20 20 20 melcase) {..
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ac80: 69 66 20 28 6e 61 6d 65 2e 72 65 70 6c 61 63 65 if (name.replace
ac90: 28 2f 5e 5f 2b 2f 2c 20 22 22 29 2e 69 6e 64 65 (/^_+/, "").inde
aca0: 78 4f 66 28 22 5f 22 29 20 3e 20 2d 31 20 26 26 xOf("_") > -1 &&
acb0: 20 21 6e 61 6d 65 2e 6d 61 74 63 68 28 2f 5e 5b !name.match(/^[
acc0: 41 2d 5a 30 2d 39 5f d0 90 2d d0 af 5d 2a 24 2f A-Z0-9_..-..]*$/
acd0: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 )) {..
ace0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
acf0: 72 6e 69 6e 67 41 74 28 22 49 64 65 6e 74 69 66 rningAt("Identif
ad00: 69 65 72 20 27 7b 61 7d 27 20 69 73 20 6e 6f 74 ier '{a}' is not
ad10: 20 69 6e 20 63 61 6d 65 6c 20 63 61 73 65 2e 22 in camel case."
ad20: 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 2c 20 76 61 , line, from, va
ad30: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 lue);..
ad40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
ad50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
ad60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
ad70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
ad80: 20 28 74 79 70 65 20 3d 3d 3d 20 22 28 63 6f 6c (type === "(col
ad90: 6f 72 29 22 20 7c 7c 20 74 79 70 65 20 3d 3d 3d or)" || type ===
ada0: 20 22 28 72 61 6e 67 65 29 22 29 20 7b 0d 0a 20 "(range)") {..
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
adc0: 20 3d 20 7b 74 79 70 65 3a 20 74 79 70 65 7d 3b = {type: type};
add0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
ade0: 65 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d else if (type ==
adf0: 3d 20 22 28 70 75 6e 63 74 75 61 74 6f 72 29 22 = "(punctuator)"
ae00: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ||..
ae10: 20 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d (type =
ae20: 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65 72 29 == "(identifier)
ae30: 22 20 26 26 20 69 73 5f 6f 77 6e 28 73 79 6e 74 " && is_own(synt
ae40: 61 78 2c 20 76 61 6c 75 65 29 29 29 20 7b 0d 0a ax, value))) {..
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ae60: 74 20 3d 20 73 79 6e 74 61 78 5b 76 61 6c 75 65 t = syntax[value
ae70: 5d 20 7c 7c 20 73 79 6e 74 61 78 5b 22 28 65 72 ] || syntax["(er
ae80: 72 6f 72 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 ror)"];..
ae90: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 } else {..
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
aeb0: 20 3d 20 73 79 6e 74 61 78 5b 74 79 70 65 5d 3b = syntax[type];
aec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
aed0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 ... t
aee0: 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 = Object.create
aef0: 28 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 (t);....
af00: 20 20 20 20 69 66 20 28 74 79 70 65 20 3d 3d 3d if (type ===
af10: 20 22 28 73 74 72 69 6e 67 29 22 20 7c 7c 20 74 "(string)" || t
af20: 79 70 65 20 3d 3d 3d 20 22 28 72 61 6e 67 65 29 ype === "(range)
af30: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
af40: 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f if (!optio
af50: 6e 2e 73 63 72 69 70 74 75 72 6c 20 26 26 20 6a n.scripturl && j
af60: 78 2e 74 65 73 74 28 76 61 6c 75 65 29 29 20 7b x.test(value)) {
af70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
af80: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 warningAt(
af90: 22 53 63 72 69 70 74 20 55 52 4c 2e 22 2c 20 6c "Script URL.", l
afa0: 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a 20 20 20 ine, from);..
afb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
afc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d }...
afd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
afe0: 28 74 79 70 65 20 3d 3d 3d 20 22 28 69 64 65 6e (type === "(iden
aff0: 74 69 66 69 65 72 29 22 29 20 7b 0d 0a 20 20 20 tifier)") {..
b000: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 2e 69 t.i
b010: 64 65 6e 74 69 66 69 65 72 20 3d 20 74 72 75 65 dentifier = true
b020: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
b030: 20 20 20 63 68 65 63 6b 4e 61 6d 65 28 76 61 6c checkName(val
b040: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ue);..
b050: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
b060: 20 20 20 74 2e 76 61 6c 75 65 20 3d 20 76 61 6c t.value = val
b070: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue;..
b080: 20 74 2e 6c 69 6e 65 20 3d 20 6c 69 6e 65 3b 0d t.line = line;.
b090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 2e 63 . t.c
b0a0: 68 61 72 61 63 74 65 72 20 3d 20 63 68 61 72 61 haracter = chara
b0b0: 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 cter;..
b0c0: 20 20 20 74 2e 66 72 6f 6d 20 3d 20 66 72 6f 6d t.from = from
b0d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
b0e0: 20 3d 20 74 2e 69 64 3b 0d 0a 20 20 20 20 20 20 = t.id;..
b0f0: 20 20 20 20 20 20 69 66 20 28 69 20 21 3d 3d 20 if (i !==
b100: 22 28 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a "(endline)") {..
b110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b120: 70 72 65 72 65 67 20 3d 20 69 20 26 26 0d 0a 20 prereg = i &&..
b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b140: 20 20 20 28 28 22 28 2c 3d 3a 5b 21 26 7c 3f 7b (("(,=:[!&|?{
b150: 7d 3b 22 2e 69 6e 64 65 78 4f 66 28 69 2e 63 68 };".indexOf(i.ch
b160: 61 72 41 74 28 69 2e 6c 65 6e 67 74 68 20 2d 20 arAt(i.length -
b170: 31 29 29 20 3e 3d 20 30 29 20 7c 7c 0d 0a 20 20 1)) >= 0) ||..
b180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b190: 20 20 69 20 3d 3d 3d 20 22 72 65 74 75 72 6e 22 i === "return"
b1a0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ||..
b1b0: 20 20 20 20 20 20 20 20 20 69 20 3d 3d 3d 20 22 i === "
b1c0: 63 61 73 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 case");..
b1d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
b1e0: 20 20 20 20 72 65 74 75 72 6e 20 74 3b 0d 0a 20 return t;..
b1f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
b200: 20 20 20 20 2f 2f 20 50 75 62 6c 69 63 20 6c 65 // Public le
b210: 78 20 6d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 x methods..
b220: 20 20 20 72 65 74 75 72 6e 20 7b 0d 0a 20 20 20 return {..
b230: 20 20 20 20 20 20 20 20 20 69 6e 69 74 3a 20 66 init: f
b240: 75 6e 63 74 69 6f 6e 20 28 73 6f 75 72 63 65 29 unction (source)
b250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
b260: 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 73 if (typeof s
b270: 6f 75 72 63 65 20 3d 3d 3d 20 22 73 74 72 69 6e ource === "strin
b280: 67 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 g") {..
b290: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 73 lines
b2a0: 20 3d 20 73 6f 75 72 63 65 0d 0a 20 20 20 20 20 = source..
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b2c0: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 72 5c .replace(/\r\
b2d0: 6e 2f 67 2c 20 22 5c 6e 22 29 0d 0a 20 20 20 20 n/g, "\n")..
b2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b2f0: 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 72 .replace(/\r
b300: 2f 67 2c 20 22 5c 6e 22 29 0d 0a 20 20 20 20 20 /g, "\n")..
b310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b320: 20 20 20 2e 73 70 6c 69 74 28 22 5c 6e 22 29 3b .split("\n");
b330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
b340: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 } else {..
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b360: 6c 69 6e 65 73 20 3d 20 73 6f 75 72 63 65 3b 0d lines = source;.
b370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
b380: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 }....
b390: 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 // If the
b3a0: 66 69 72 73 74 20 6c 69 6e 65 20 69 73 20 61 20 first line is a
b3b0: 73 68 65 62 61 6e 67 20 28 23 21 29 2c 20 6d 61 shebang (#!), ma
b3c0: 6b 65 20 69 74 20 61 20 62 6c 61 6e 6b 20 61 6e ke it a blank an
b3d0: 64 20 6d 6f 76 65 20 6f 6e 2e 0d 0a 20 20 20 20 d move on...
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 // S
b3f0: 68 65 62 61 6e 67 73 20 61 72 65 20 75 73 65 64 hebangs are used
b400: 20 62 79 20 4e 6f 64 65 20 73 63 72 69 70 74 73 by Node scripts
b410: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
b420: 20 20 20 69 66 20 28 6c 69 6e 65 73 5b 30 5d 20 if (lines[0]
b430: 26 26 20 6c 69 6e 65 73 5b 30 5d 2e 73 75 62 73 && lines[0].subs
b440: 74 72 28 30 2c 20 32 29 20 3d 3d 3d 20 22 23 21 tr(0, 2) === "#!
b450: 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ")..
b460: 20 20 20 20 20 20 20 20 6c 69 6e 65 73 5b 30 5d lines[0]
b470: 20 3d 20 22 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 = "";....
b480: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d line =
b490: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0;..
b4a0: 20 20 20 20 20 6e 65 78 74 4c 69 6e 65 28 29 3b nextLine();
b4b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
b4c0: 20 20 66 72 6f 6d 20 3d 20 31 3b 0d 0a 20 20 20 from = 1;..
b4d0: 20 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 },....
b4e0: 20 20 20 20 20 20 20 20 20 20 20 72 61 6e 67 65 range
b4f0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 62 65 67 69 : function (begi
b500: 6e 2c 20 65 6e 64 29 20 7b 0d 0a 20 20 20 20 20 n, end) {..
b510: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 var c
b520: 2c 20 76 61 6c 75 65 20 3d 20 22 22 3b 0d 0a 20 , value = "";..
b530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
b540: 72 6f 6d 20 3d 20 63 68 61 72 61 63 74 65 72 3b rom = character;
b550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
b560: 20 20 69 66 20 28 73 2e 63 68 61 72 41 74 28 30 if (s.charAt(0
b570: 29 20 21 3d 3d 20 62 65 67 69 6e 29 20 7b 0d 0a ) !== begin) {..
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b590: 20 20 20 20 65 72 72 6f 72 41 74 28 22 45 78 70 errorAt("Exp
b5a0: 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 ected '{a}' and
b5b0: 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d instead saw '{b}
b5c0: 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 '.",..
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b5e0: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 line, characte
b5f0: 72 2c 20 62 65 67 69 6e 2c 20 73 2e 63 68 61 72 r, begin, s.char
b600: 41 74 28 30 29 29 3b 0d 0a 20 20 20 20 20 20 20 At(0));..
b610: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
b620: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 for
b630: 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 (;;) {..
b640: 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 s =
b650: 73 2e 73 6c 69 63 65 28 31 29 3b 0d 0a 20 20 20 s.slice(1);..
b660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b670: 20 63 68 61 72 61 63 74 65 72 20 2b 3d 20 31 3b character += 1;
b680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
b690: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 c = s.char
b6a0: 41 74 28 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 At(0);..
b6b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 swit
b6c0: 63 68 20 28 63 29 20 7b 0d 0a 20 20 20 20 20 20 ch (c) {..
b6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
b6e0: 73 65 20 22 22 3a 0d 0a 20 20 20 20 20 20 20 20 se "":..
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b700: 65 72 72 6f 72 41 74 28 22 4d 69 73 73 69 6e 67 errorAt("Missing
b710: 20 27 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 '{a}'.", line,
b720: 63 68 61 72 61 63 74 65 72 2c 20 63 29 3b 0d 0a character, c);..
b730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b740: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
b750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b760: 20 20 20 20 63 61 73 65 20 65 6e 64 3a 0d 0a 20 case end:..
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b780: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73 6c 69 s = s.sli
b790: 63 65 28 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 ce(1);..
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b7b0: 63 68 61 72 61 63 74 65 72 20 2b 3d 20 31 3b 0d character += 1;.
b7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
b7d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
b7e0: 69 74 28 22 28 72 61 6e 67 65 29 22 2c 20 76 61 it("(range)", va
b7f0: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 lue);..
b800: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
b810: 22 5c 5c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 "\\":..
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
b830: 61 72 6e 69 6e 67 41 74 28 22 28 31 29 55 6e 65 arningAt("(1)Une
b840: 78 70 65 63 74 65 64 20 27 7b 61 7d 27 2e 22 2c xpected '{a}'.",
b850: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 line, character
b860: 2c 20 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 , c);..
b870: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
b880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b890: 20 20 76 61 6c 75 65 20 2b 3d 20 63 3b 0d 0a 20 value += c;..
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
b8b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
b8c0: 7d 2c 0d 0a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 },......
b8d0: 20 20 20 20 2f 2f 20 74 6f 6b 65 6e 20 2d 2d 20 // token --
b8e0: 74 68 69 73 20 69 73 20 63 61 6c 6c 65 64 20 62 this is called b
b8f0: 79 20 61 64 76 61 6e 63 65 20 74 6f 20 67 65 74 y advance to get
b900: 20 74 68 65 20 6e 65 78 74 20 74 6f 6b 65 6e 0d the next token.
b910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b . tok
b920: 65 6e 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 en: function ()
b930: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
b940: 20 20 20 76 61 72 20 62 2c 20 63 2c 20 63 61 70 var b, c, cap
b950: 74 75 72 65 73 2c 20 64 2c 20 64 65 70 74 68 2c tures, d, depth,
b960: 20 68 69 67 68 2c 20 69 2c 20 6c 2c 20 6c 6f 77 high, i, l, low
b970: 2c 20 71 2c 20 74 2c 20 69 73 4c 69 74 65 72 61 , q, t, isLitera
b980: 6c 2c 20 69 73 49 6e 52 61 6e 67 65 2c 20 6e 3b l, isInRange, n;
b990: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
b9a0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 74 function mat
b9b0: 63 68 28 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 ch(x) {..
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
b9d0: 20 72 20 3d 20 78 2e 65 78 65 63 28 73 29 2c 20 r = x.exec(s),
b9e0: 72 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 r1;..
b9f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 29 20 if (r)
ba00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
ba10: 20 20 20 20 20 20 20 20 20 20 20 6c 20 3d 20 72 l = r
ba20: 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 [0].length;..
ba30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ba40: 20 20 20 20 20 72 31 20 3d 20 72 5b 31 5d 3b 0d r1 = r[1];.
ba50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
ba60: 20 20 20 20 20 20 20 20 20 63 20 3d 20 72 31 2e c = r1.
ba70: 63 68 61 72 41 74 28 30 29 3b 0d 0a 20 20 20 20 charAt(0);..
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ba90: 20 20 20 20 73 20 3d 20 73 2e 73 75 62 73 74 72 s = s.substr
baa0: 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 (l);..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 fr
bac0: 6f 6d 20 3d 20 63 68 61 72 61 63 74 65 72 20 2b om = character +
bad0: 20 6c 20 2d 20 72 31 2e 6c 65 6e 67 74 68 3b 0d l - r1.length;.
bae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
baf0: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74 charact
bb00: 65 72 20 2b 3d 20 6c 3b 0d 0a 20 20 20 20 20 20 er += l;..
bb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bb20: 20 20 72 65 74 75 72 6e 20 72 31 3b 0d 0a 20 20 return r1;..
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bb40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
bb50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
bb60: 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 functi
bb70: 6f 6e 20 73 74 72 69 6e 67 28 78 29 20 7b 0d 0a on string(x) {..
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bb90: 20 20 20 20 76 61 72 20 63 2c 20 6a 2c 20 72 20 var c, j, r
bba0: 3d 20 22 22 2c 20 61 6c 6c 6f 77 4e 65 77 4c 69 = "", allowNewLi
bbb0: 6e 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 ne = false;....
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bbd0: 20 20 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 20 if (jsonmode
bbe0: 26 26 20 78 20 21 3d 3d 20 22 5c 22 22 29 20 7b && x !== "\"") {
bbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
bc00: 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
bc10: 67 41 74 28 22 53 74 72 69 6e 67 73 20 6d 75 73 gAt("Strings mus
bc20: 74 20 75 73 65 20 64 6f 75 62 6c 65 71 75 6f 74 t use doublequot
bc30: 65 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 e.",..
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bc50: 20 20 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 line, char
bc60: 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 acter);..
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
bc80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
bc90: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
bca0: 2e 71 75 6f 74 6d 61 72 6b 29 20 7b 0d 0a 20 20 .quotmark) {..
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bcc0: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
bcd0: 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 22 73 .quotmark === "s
bce0: 69 6e 67 6c 65 22 20 26 26 20 78 20 21 3d 3d 20 ingle" && x !==
bcf0: 22 27 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 "'") {..
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bd10: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 53 warningAt("S
bd20: 74 72 69 6e 67 73 20 6d 75 73 74 20 75 73 65 20 trings must use
bd30: 73 69 6e 67 6c 65 71 75 6f 74 65 2e 22 2c 0d 0a singlequote.",..
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bd60: 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 line, charac
bd70: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ter);..
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
bd90: 20 65 6c 73 65 20 69 66 20 28 6f 70 74 69 6f 6e else if (option
bda0: 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 22 64 .quotmark === "d
bdb0: 6f 75 62 6c 65 22 20 26 26 20 78 20 21 3d 3d 20 ouble" && x !==
bdc0: 22 5c 22 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 "\"") {..
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bde0: 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 warningAt("
bdf0: 53 74 72 69 6e 67 73 20 6d 75 73 74 20 75 73 65 Strings must use
be00: 20 64 6f 75 62 6c 65 71 75 6f 74 65 2e 22 2c 0d doublequote.",.
be10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
be20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
be30: 20 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 line, chara
be40: 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 cter);..
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
be60: 7d 20 65 6c 73 65 20 69 66 20 28 6f 70 74 69 6f } else if (optio
be70: 6e 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 74 n.quotmark === t
be80: 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 rue) {..
be90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bea0: 20 20 20 20 71 75 6f 74 6d 61 72 6b 20 3d 20 71 quotmark = q
beb0: 75 6f 74 6d 61 72 6b 20 7c 7c 20 78 3b 0d 0a 20 uotmark || x;..
bec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bed0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71 if (q
bee0: 75 6f 74 6d 61 72 6b 20 21 3d 3d 20 78 29 20 7b uotmark !== x) {
bef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
bf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bf10: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69 78 warningAt("Mix
bf20: 65 64 20 64 6f 75 62 6c 65 20 61 6e 64 20 73 69 ed double and si
bf30: 6e 67 6c 65 20 71 75 6f 74 65 73 2e 22 2c 0d 0a ngle quotes.",..
bf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bf60: 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 63 68 line, ch
bf70: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 aracter);..
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bf90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bfb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
bfc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 }....
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bfe0: 20 20 66 75 6e 63 74 69 6f 6e 20 65 73 63 28 6e function esc(n
bff0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
c000: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
c010: 20 69 20 3d 20 70 61 72 73 65 49 6e 74 28 73 2e i = parseInt(s.
c020: 73 75 62 73 74 72 28 6a 20 2b 20 31 2c 20 6e 29 substr(j + 1, n)
c030: 2c 20 31 36 29 3b 0d 0a 20 20 20 20 20 20 20 20 , 16);..
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c050: 6a 20 2b 3d 20 6e 3b 0d 0a 20 20 20 20 20 20 20 j += n;..
c060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c070: 20 69 66 20 28 69 20 3e 3d 20 33 32 20 26 26 20 if (i >= 32 &&
c080: 69 20 3c 3d 20 31 32 36 20 26 26 0d 0a 20 20 20 i <= 126 &&..
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 20 21 i !
c0b0: 3d 3d 20 33 34 20 26 26 20 69 20 21 3d 3d 20 39 == 34 && i !== 9
c0c0: 32 20 26 26 20 69 20 21 3d 3d 20 33 39 29 20 7b 2 && i !== 39) {
c0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
c0f0: 72 6e 69 6e 67 41 74 28 22 55 6e 6e 65 63 65 73 rningAt("Unneces
c100: 73 61 72 79 20 65 73 63 61 70 65 6d 65 6e 74 2e sary escapement.
c110: 22 2c 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 ", line, charact
c120: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 er);..
c130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
c140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
c150: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74 charact
c160: 65 72 20 2b 3d 20 6e 3b 0d 0a 20 20 20 20 20 20 er += n;..
c170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c180: 20 20 63 20 3d 20 53 74 72 69 6e 67 2e 66 72 6f c = String.fro
c190: 6d 43 68 61 72 43 6f 64 65 28 69 29 3b 0d 0a 20 mCharCode(i);..
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c1b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
c1c0: 20 20 20 20 20 20 20 20 20 20 6a 20 3d 20 30 3b j = 0;
c1d0: 0d 0a 75 6e 63 6c 6f 73 65 64 53 74 72 69 6e 67 ..unclosedString
c1e0: 3a 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b : for (;;) {
c1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
c200: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while
c210: 28 6a 20 3e 3d 20 73 2e 6c 65 6e 67 74 68 29 20 (j >= s.length)
c220: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a j
c240: 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 = 0;....
c250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c260: 20 20 20 20 20 76 61 72 20 63 6c 20 3d 20 6c 69 var cl = li
c270: 6e 65 2c 20 63 66 20 3d 20 66 72 6f 6d 3b 0d 0a ne, cf = from;..
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c290: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
c2a0: 21 6e 65 78 74 4c 69 6e 65 28 29 29 20 7b 0d 0a !nextLine()) {..
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c2d0: 65 72 72 6f 72 41 74 28 22 55 6e 63 6c 6f 73 65 errorAt("Unclose
c2e0: 64 20 73 74 72 69 6e 67 2e 22 2c 20 63 6c 2c 20 d string.", cl,
c2f0: 63 66 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 cf);..
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c310: 20 20 20 20 20 20 62 72 65 61 6b 20 75 6e 63 6c break uncl
c320: 6f 73 65 64 53 74 72 69 6e 67 3b 0d 0a 20 20 20 osedString;..
c330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c340: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 }....
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c if (al
c370: 6c 6f 77 4e 65 77 4c 69 6e 65 29 20 7b 0d 0a 20 lowNewLine) {..
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
c3a0: 6c 6c 6f 77 4e 65 77 4c 69 6e 65 20 3d 20 66 61 llowNewLine = fa
c3b0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 lse;..
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c3d0: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 } else {..
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c3f0: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
c400: 69 6e 67 41 74 28 22 55 6e 63 6c 6f 73 65 64 20 ingAt("Unclosed
c410: 73 74 72 69 6e 67 2e 22 2c 20 63 6c 2c 20 63 66 string.", cl, cf
c420: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c440: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
c450: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
c460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c470: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 c = s.char
c480: 41 74 28 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20 At(j);..
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c4a0: 69 66 20 28 63 20 3d 3d 3d 20 78 29 20 7b 0d 0a if (c === x) {..
c4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 char
c4d0: 61 63 74 65 72 20 2b 3d 20 31 3b 0d 0a 20 20 20 acter += 1;..
c4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c4f0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73 s = s.s
c500: 75 62 73 74 72 28 6a 20 2b 20 31 29 3b 0d 0a 20 ubstr(j + 1);..
c510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c520: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
c530: 6e 20 69 74 28 22 28 73 74 72 69 6e 67 29 22 2c n it("(string)",
c540: 20 72 2c 20 78 29 3b 0d 0a 20 20 20 20 20 20 20 r, x);..
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c560: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
c570: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
c580: 63 20 3c 20 22 20 22 29 20 7b 0d 0a 20 20 20 20 c < " ") {..
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c5a0: 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d if (c ==
c5b0: 3d 20 22 5c 6e 22 20 7c 7c 20 63 20 3d 3d 3d 20 = "\n" || c ===
c5c0: 22 5c 72 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 "\r") {..
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c5e0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d break;.
c5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c620: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
c630: 69 6e 67 41 74 28 22 43 6f 6e 74 72 6f 6c 20 63 ingAt("Control c
c640: 68 61 72 61 63 74 65 72 20 69 6e 20 73 74 72 69 haracter in stri
c650: 6e 67 3a 20 7b 61 7d 2e 22 2c 0d 0a 20 20 20 20 ng: {a}.",..
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c680: 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 20 line, character
c690: 2b 20 6a 2c 20 73 2e 73 6c 69 63 65 28 30 2c 20 + j, s.slice(0,
c6a0: 6a 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 j));..
c6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
c6c0: 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 3d 20 22 else if (c === "
c6d0: 5c 5c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 \\") {..
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c6f0: 20 20 20 20 6a 20 2b 3d 20 31 3b 0d 0a 20 20 20 j += 1;..
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c710: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74 charact
c720: 65 72 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 er += 1;..
c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c740: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 c = s.char
c750: 41 74 28 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20 At(j);..
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c770: 20 20 20 20 6e 20 3d 20 73 2e 63 68 61 72 41 74 n = s.charAt
c780: 28 6a 20 2b 20 31 29 3b 0d 0a 20 20 20 20 20 20 (j + 1);..
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c7a0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 63 29 switch (c)
c7b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
c7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c7d0: 63 61 73 65 20 22 5c 5c 22 3a 0d 0a 20 20 20 20 case "\\":..
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c7f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 5c 22 case "\"
c800: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c820: 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20 20 20 20 case "/":..
c830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c840: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
c850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
c860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
c870: 61 73 65 20 22 5c 27 22 3a 0d 0a 20 20 20 20 20 ase "\'":..
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c890: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6a if (j
c8a0: 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20 20 20 20 sonmode) {..
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c8d0: 77 61 72 6e 69 6e 67 41 74 28 22 41 76 6f 69 64 warningAt("Avoid
c8e0: 20 5c 5c 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68 \\'.", line, ch
c8f0: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 aracter);..
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c910: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
c920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
c940: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
c950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c960: 20 20 63 61 73 65 20 22 62 22 3a 0d 0a 20 20 20 case "b":..
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c980: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d c =
c990: 20 22 5c 62 22 3b 0d 0a 20 20 20 20 20 20 20 20 "\b";..
c9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c9b0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
c9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
c9e0: 20 22 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 "f":..
c9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ca00: 20 20 20 20 20 20 20 63 20 3d 20 22 5c 66 22 3b c = "\f";
ca10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ca30: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ca50: 20 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a 0d case "n":.
ca60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ca80: 20 63 20 3d 20 22 5c 6e 22 3b 0d 0a 20 20 20 20 c = "\n";..
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
cab0: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cad0: 63 61 73 65 20 22 72 22 3a 0d 0a 20 20 20 20 20 case "r":..
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
caf0: 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 22 c = "
cb00: 5c 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 \r";..
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cb20: 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 break;..
cb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cb40: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 case "
cb50: 74 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t":..
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cb70: 20 20 20 20 20 63 20 3d 20 22 5c 74 22 3b 0d 0a c = "\t";..
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cba0: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 break;..
cbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cbc0: 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a 20 case "0":..
cbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
cbf0: 20 3d 20 22 5c 30 22 3b 0d 0a 20 20 20 20 20 20 = "\0";..
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cc10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 63 74 // Oct
cc20: 61 6c 20 6c 69 74 65 72 61 6c 73 20 66 61 69 6c al literals fail
cc30: 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 0d in strict mode.
cc40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
cc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cc60: 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 74 68 65 // check if the
cc70: 20 6e 75 6d 62 65 72 20 69 73 20 62 65 74 77 65 number is betwe
cc80: 65 6e 20 30 30 20 61 6e 64 20 30 37 0d 0a 20 20 en 00 and 07..
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
ccb0: 20 77 68 65 72 65 20 27 6e 27 20 69 73 20 74 68 where 'n' is th
ccc0: 65 20 74 6f 6b 65 6e 20 6e 65 78 74 20 74 6f 20 e token next to
ccd0: 27 63 27 0d 0a 20 20 20 20 20 20 20 20 20 20 20 'c'..
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ccf0: 20 20 20 20 20 69 66 20 28 6e 20 3e 3d 20 30 20 if (n >= 0
cd00: 26 26 20 6e 20 3c 3d 20 37 20 26 26 20 64 69 72 && n <= 7 && dir
cd10: 65 63 74 69 76 65 5b 22 75 73 65 20 73 74 72 69 ective["use stri
cd20: 63 74 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 ct"]) {..
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
cd50: 6e 69 6e 67 41 74 28 0d 0a 20 20 20 20 20 20 20 ningAt(..
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4f 63 "Oc
cd80: 74 61 6c 20 6c 69 74 65 72 61 6c 73 20 61 72 65 tal literals are
cd90: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 20 not allowed in
cda0: 73 74 72 69 63 74 20 6d 6f 64 65 2e 22 2c 0d 0a strict mode.",..
cdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cdd0: 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 line, charac
cde0: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ter);..
cdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ce00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
ce10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ce20: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b break;
ce30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
ce50: 73 65 20 22 75 22 3a 0d 0a 20 20 20 20 20 20 20 se "u":..
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ce70: 20 20 20 20 20 20 20 20 20 65 73 63 28 34 29 3b esc(4);
ce80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cea0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
ceb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cec0: 20 20 20 20 20 20 63 61 73 65 20 22 76 22 3a 0d case "v":.
ced0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
cee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cef0: 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b if (jsonmode) {
cf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cf20: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 warningAt(
cf30: 22 41 76 6f 69 64 20 5c 5c 76 2e 22 2c 20 6c 69 "Avoid \\v.", li
cf40: 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d ne, character);.
cf50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
cf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cf70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cf90: 20 20 20 20 63 20 3d 20 22 5c 76 22 3b 0d 0a 20 c = "\v";..
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
cfc0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
cfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
cfe0: 20 20 20 63 61 73 65 20 22 78 22 3a 0d 0a 20 20 case "x":..
cff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
d010: 20 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20 (jsonmode) {..
d020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d040: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 41 76 warningAt("Av
d050: 6f 69 64 20 5c 5c 78 2d 2e 22 2c 20 6c 69 6e 65 oid \\x-.", line
d060: 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 , character);..
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
d090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d0b0: 20 20 65 73 63 28 32 29 3b 0d 0a 20 20 20 20 20 esc(2);..
d0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d0d0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
d0e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
d0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
d100: 61 73 65 20 22 22 3a 0d 0a 20 20 20 20 20 20 20 ase "":..
d110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d120: 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 61 73 74 // last
d130: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 65 73 character is es
d140: 63 61 70 65 20 63 68 61 72 61 63 74 65 72 0d 0a cape character..
d150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d170: 2f 2f 20 61 6c 77 61 79 73 20 61 6c 6c 6f 77 20 // always allow
d180: 6e 65 77 20 6c 69 6e 65 20 69 66 20 65 73 63 61 new line if esca
d190: 70 65 64 2c 20 62 75 74 20 73 68 6f 77 0d 0a 20 ped, but show..
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
d1c0: 2f 20 77 61 72 6e 69 6e 67 20 69 66 20 6f 70 74 / warning if opt
d1d0: 69 6f 6e 20 69 73 20 6e 6f 74 20 73 65 74 0d 0a ion is not set..
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d200: 61 6c 6c 6f 77 4e 65 77 4c 69 6e 65 20 3d 20 74 allowNewLine = t
d210: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 rue;..
d220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d230: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
d240: 2e 6d 75 6c 74 69 73 74 72 29 20 7b 0d 0a 20 20 .multistr) {..
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d270: 20 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 29 20 if (jsonmode)
d280: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
d290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d2a0: 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
d2b0: 6e 67 41 74 28 22 41 76 6f 69 64 20 45 4f 4c 20 ngAt("Avoid EOL
d2c0: 65 73 63 61 70 65 6d 65 6e 74 2e 22 2c 20 6c 69 escapement.", li
d2d0: 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d ne, character);.
d2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
d2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d320: 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 c =
d330: 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 "";..
d340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d350: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74 charact
d360: 65 72 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20 er -= 1;..
d370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
d390: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d3b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
d3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d3d0: 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
d3e0: 41 74 28 22 42 61 64 20 65 73 63 61 70 65 6d 65 At("Bad escapeme
d3f0: 6e 74 20 6f 66 20 45 4f 4c 2e 20 55 73 65 20 6f nt of EOL. Use o
d400: 70 74 69 6f 6e 20 6d 75 6c 74 69 73 74 72 20 69 ption multistr i
d410: 66 20 6e 65 65 64 65 64 2e 22 2c 0d 0a 20 20 20 f needed.",..
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d440: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 line, character
d450: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d470: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 break;..
d480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d490: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a default:
d4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d4c0: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 42 61 64 warningAt("Bad
d4d0: 20 65 73 63 61 70 65 6d 65 6e 74 2e 22 2c 20 6c escapement.", l
d4e0: 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b ine, character);
d4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
d510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
d520: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d540: 20 20 20 20 72 20 2b 3d 20 63 3b 0d 0a 20 20 20 r += c;..
d550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d560: 20 20 20 20 20 63 68 61 72 61 63 74 65 72 20 2b character +
d570: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 = 1;..
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 20 j
d590: 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 += 1;..
d5a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
d5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
d5c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
d5d0: 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 for (;;) {..
d5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d5f0: 20 20 20 69 66 20 28 21 73 29 20 7b 0d 0a 20 20 if (!s) {..
d600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d610: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28 return it(
d620: 6e 65 78 74 4c 69 6e 65 28 29 20 3f 20 22 28 65 nextLine() ? "(e
d630: 6e 64 6c 69 6e 65 29 22 20 3a 20 22 28 65 6e 64 ndline)" : "(end
d640: 29 22 2c 20 22 22 29 3b 0d 0a 20 20 20 20 20 20 )", "");..
d650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
d660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
d670: 20 20 20 20 20 74 20 3d 20 6d 61 74 63 68 28 74 t = match(t
d680: 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 x);..
d690: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 29 if (!t)
d6a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 20 3d 20 t =
d6c0: 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 "";..
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d c =
d6e0: 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 "";..
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 wh
d700: 69 6c 65 20 28 73 20 26 26 20 73 20 3c 20 22 21 ile (s && s < "!
d710: 22 20 7c 7c 20 73 2e 6d 61 74 63 68 28 2f 5b d0 " || s.match(/[.
d720: b0 2d d1 8f d0 90 2d d0 af 5d 2f 29 29 20 7b 0d .-....-..]/)) {.
d730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d s =
d750: 20 73 2e 73 75 62 73 74 72 28 31 29 3b 0d 0a 20 s.substr(1);..
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d770: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
d780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d790: 20 20 69 66 20 28 73 29 20 7b 0d 0a 20 20 20 20 if (s) {..
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d7b0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 41 74 28 errorAt(
d7c0: 22 28 32 29 55 6e 65 78 70 65 63 74 65 64 20 27 "(2)Unexpected '
d7d0: 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68 {a}'.", line, ch
d7e0: 61 72 61 63 74 65 72 2c 20 73 2e 73 75 62 73 74 aracter, s.subst
d7f0: 72 28 30 2c 20 31 29 29 3b 0d 0a 20 20 20 20 20 r(0, 1));..
d800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d810: 20 20 20 20 20 20 20 73 20 3d 20 22 22 3b 0d 0a s = "";..
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d830: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
d850: 20 65 6c 73 65 20 7b 0d 0a 0d 0a 20 20 20 20 2f else {.... /
d860: 2f 20 20 20 20 20 20 69 64 65 6e 74 69 66 69 65 / identifie
d870: 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 r....
d880: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
d890: 28 69 73 41 6c 70 68 61 28 63 29 20 7c 7c 20 63 (isAlpha(c) || c
d8a0: 20 3d 3d 3d 20 22 5f 22 20 7c 7c 20 63 20 3d 3d === "_" || c ==
d8b0: 3d 20 22 24 22 29 20 7b 0d 0a 20 20 20 20 20 20 = "$") {..
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d8d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28 return it(
d8e0: 22 28 69 64 65 6e 74 69 66 69 65 72 29 22 2c 20 "(identifier)",
d8f0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t);..
d900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
d910: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 6e 75 .. // nu
d920: 6d 62 65 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20 mber....
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d940: 69 66 20 28 69 73 44 69 67 69 74 28 63 29 29 20 if (isDigit(c))
d950: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
d960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
d970: 66 20 28 21 69 73 46 69 6e 69 74 65 28 4e 75 6d f (!isFinite(Num
d980: 62 65 72 28 74 29 29 29 20 7b 0d 0a 20 20 20 20 ber(t))) {..
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
d9b0: 69 6e 67 41 74 28 22 42 61 64 20 6e 75 6d 62 65 ingAt("Bad numbe
d9c0: 72 20 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 r '{a}'.",..
d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d9f0: 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 2c line, character,
da00: 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 t);..
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
da20: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
da30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
da40: 20 69 66 20 28 69 73 41 6c 70 68 61 28 73 2e 73 if (isAlpha(s.s
da50: 75 62 73 74 72 28 30 2c 20 31 29 29 29 20 7b 0d ubstr(0, 1))) {.
da60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
da80: 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69 73 73 warningAt("Miss
da90: 69 6e 67 20 73 70 61 63 65 20 61 66 74 65 72 20 ing space after
daa0: 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 '{a}'.",..
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dad0: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 line, characte
dae0: 72 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 r, t);..
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
db00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
db20: 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 22 30 22 if (c === "0"
db30: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
db50: 20 20 20 20 20 64 20 3d 20 74 2e 73 75 62 73 74 d = t.subst
db60: 72 28 31 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 r(1, 1);..
db70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
db80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 if (is
db90: 44 69 67 69 74 28 64 29 29 20 7b 0d 0a 20 20 20 Digit(d)) {..
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dbc0: 20 69 66 20 28 74 6f 6b 65 6e 2e 69 64 20 21 3d if (token.id !=
dbd0: 3d 20 22 2e 22 29 20 7b 0d 0a 20 20 20 20 20 20 = ".") {..
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dc00: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 44 6f 6e warningAt("Don
dc10: 27 74 20 75 73 65 20 65 78 74 72 61 20 6c 65 61 't use extra lea
dc20: 64 69 6e 67 20 7a 65 72 6f 73 20 27 7b 61 7d 27 ding zeros '{a}'
dc30: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dc60: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 line, character
dc70: 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 , t);..
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dc90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
dcc0: 65 6c 73 65 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 else if (jsonmod
dcd0: 65 20 26 26 20 28 64 20 3d 3d 3d 20 22 78 22 20 e && (d === "x"
dce0: 7c 7c 20 64 20 3d 3d 3d 20 22 58 22 29 29 20 7b || d === "X")) {
dcf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dd10: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 warningAt(
dd20: 22 41 76 6f 69 64 20 30 78 2d 2e 20 27 7b 61 7d "Avoid 0x-. '{a}
dd30: 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 '.",..
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dd60: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 line, characte
dd70: 72 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 r, t);..
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dd90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ddb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
ddc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ddd0: 20 20 20 20 20 20 69 66 20 28 74 2e 73 75 62 73 if (t.subs
dde0: 74 72 28 74 2e 6c 65 6e 67 74 68 20 2d 20 31 29 tr(t.length - 1)
ddf0: 20 3d 3d 3d 20 22 2e 22 29 20 7b 0d 0a 20 20 20 === ".") {..
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
de20: 6e 69 6e 67 41 74 28 0d 0a 22 41 20 74 72 61 69 ningAt(.."A trai
de30: 6c 69 6e 67 20 64 65 63 69 6d 61 6c 20 70 6f 69 ling decimal poi
de40: 6e 74 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73 nt can be confus
de50: 65 64 20 77 69 74 68 20 61 20 64 6f 74 20 27 7b ed with a dot '{
de60: 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68 61 a}'.", line, cha
de70: 72 61 63 74 65 72 2c 20 74 29 3b 0d 0a 20 20 20 racter, t);..
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
de90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
deb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i
dec0: 74 28 22 28 6e 75 6d 62 65 72 29 22 2c 20 74 29 t("(number)", t)
ded0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
dee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
df00: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 29 switch (t)
df10: 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 20 20 20 {.... //
df20: 20 20 73 74 72 69 6e 67 0d 0a 0d 0a 20 20 20 20 string....
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
df40: 20 20 20 20 63 61 73 65 20 22 5c 22 22 3a 0d 0a case "\"":..
df50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
df60: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 27 22 case "'"
df70: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
df90: 65 74 75 72 6e 20 73 74 72 69 6e 67 28 74 29 3b eturn string(t);
dfa0: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 .... //
dfb0: 2f 2f 20 63 6f 6d 6d 65 6e 74 0d 0a 0d 0a 20 20 // comment....
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
dfd0: 20 20 20 20 20 20 63 61 73 65 20 22 2f 2f 22 3a case "//":
dfe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 s
e000: 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 = "";..
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e020: 20 20 20 74 6f 6b 65 6e 2e 63 6f 6d 6d 65 6e 74 token.comment
e030: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 = true;..
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e050: 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a break;....
e060: 20 20 20 20 2f 2f 20 20 20 20 20 20 2f 2a 20 63 // /* c
e070: 6f 6d 6d 65 6e 74 0d 0a 0d 0a 20 20 20 20 20 20 omment....
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e090: 20 20 63 61 73 65 20 22 2f 2a 22 3a 0d 0a 20 20 case "/*":..
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e0b0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b for (;
e0c0: 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ;) {..
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e0e0: 20 20 20 20 20 20 69 20 3d 20 73 2e 73 65 61 72 i = s.sear
e0f0: 63 68 28 6c 78 29 3b 0d 0a 20 20 20 20 20 20 20 ch(lx);..
e100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e110: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 20 3e if (i >
e120: 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 = 0) {..
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e140: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
e150: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e170: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e190: 20 20 20 20 20 20 20 69 66 20 28 21 6e 65 78 74 if (!next
e1a0: 4c 69 6e 65 28 29 29 20 7b 0d 0a 20 20 20 20 20 Line()) {..
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
e1d0: 72 72 6f 72 41 74 28 22 55 6e 63 6c 6f 73 65 64 rrorAt("Unclosed
e1e0: 20 63 6f 6d 6d 65 6e 74 2e 22 2c 20 6c 69 6e 65 comment.", line
e1f0: 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 , character);..
e200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
e220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
e240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d s =
e260: 20 73 2e 73 75 62 73 74 72 28 69 20 2b 20 32 29 s.substr(i + 2)
e270: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
e290: 6f 6b 65 6e 2e 63 6f 6d 6d 65 6e 74 20 3d 20 74 oken.comment = t
e2a0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 rue;..
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e2c0: 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 break;....
e2d0: 2f 2f 20 20 20 20 20 20 2f 2a 6d 65 6d 62 65 72 // /*member
e2e0: 73 20 2f 2a 6a 73 68 69 6e 74 20 2f 2a 67 6c 6f s /*jshint /*glo
e2f0: 62 61 6c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 bal....
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
e310: 61 73 65 20 22 2f 2a 6d 65 6d 62 65 72 73 22 3a ase "/*members":
e320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e330: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 case "
e340: 2f 2a 6d 65 6d 62 65 72 22 3a 0d 0a 20 20 20 20 /*member":..
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e360: 20 20 20 20 63 61 73 65 20 22 2f 2a 6a 73 68 69 case "/*jshi
e370: 6e 74 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 nt":..
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
e390: 73 65 20 22 2f 2a 6a 73 6c 69 6e 74 22 3a 0d 0a se "/*jslint":..
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e3b0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a case "/*
e3c0: 67 6c 6f 62 61 6c 22 3a 0d 0a 20 20 20 20 20 20 global":..
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e3e0: 20 20 63 61 73 65 20 22 2a 2f 22 3a 0d 0a 20 20 case "*/":..
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e400: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
e410: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e430: 20 20 20 20 76 61 6c 75 65 3a 20 74 2c 0d 0a 20 value: t,..
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
e460: 79 70 65 3a 20 22 73 70 65 63 69 61 6c 22 2c 0d ype: "special",.
e470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e490: 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c 0d 0a 20 20 line: line,..
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 ch
e4c0: 61 72 61 63 74 65 72 3a 20 63 68 61 72 61 63 74 aracter: charact
e4d0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 er,..
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e4f0: 20 20 20 20 20 66 72 6f 6d 3a 20 66 72 6f 6d 0d from: from.
e500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d };.
e520: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
e530: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
e540: 22 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 "":..
e550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e560: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 2f 2f 20 break;.. //
e570: 20 20 20 20 20 2f 0d 0a 20 20 20 20 20 20 20 20 /..
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e590: 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20 20 20 20 case "/":..
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e5b0: 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e if (token
e5c0: 2e 69 64 20 3d 3d 3d 20 22 2f 3d 22 29 20 7b 0d .id === "/=") {.
e5d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e5f0: 20 65 72 72 6f 72 41 74 28 22 41 20 72 65 67 75 errorAt("A regu
e600: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6c lar expression l
e610: 69 74 65 72 61 6c 20 63 61 6e 20 62 65 20 63 6f iteral can be co
e620: 6e 66 75 73 65 64 20 77 69 74 68 20 27 2f 3d 27 nfused with '/='
e630: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
e640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e650: 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66 line, f
e660: 72 6f 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 rom);..
e670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e680: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e6a0: 20 20 69 66 20 28 70 72 65 72 65 67 29 20 7b 0d if (prereg) {.
e6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e6d0: 20 64 65 70 74 68 20 3d 20 30 3b 0d 0a 20 20 20 depth = 0;..
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70 cap
e700: 74 75 72 65 73 20 3d 20 30 3b 0d 0a 20 20 20 20 tures = 0;..
e710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e720: 20 20 20 20 20 20 20 20 20 20 20 20 6c 20 3d 20 l =
e730: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0;..
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e750: 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a for (;;) {..
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e780: 20 20 20 20 62 20 3d 20 74 72 75 65 3b 0d 0a 20 b = true;..
e790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e7b0: 20 20 20 63 20 3d 20 73 2e 63 68 61 72 41 74 28 c = s.charAt(
e7c0: 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 l);..
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e7e0: 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b l += 1;
e7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e810: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 63 29 switch (c)
e820: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
e830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e840: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 22 3a case "":
e850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e870: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 41 errorA
e880: 74 28 22 55 6e 63 6c 6f 73 65 64 20 72 65 67 75 t("Unclosed regu
e890: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 lar expression."
e8a0: 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a , line, from);..
e8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e8d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 71 return q
e8e0: 75 69 74 28 22 53 74 6f 70 70 69 6e 67 2e 22 2c uit("Stopping.",
e8f0: 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a 20 line, from);..
e900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e920: 20 20 20 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20 case "/":..
e930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e950: 20 20 20 20 20 20 69 66 20 28 64 65 70 74 68 20 if (depth
e960: 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 > 0) {..
e970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e990: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 7b warningAt("{
e9a0: 61 7d 20 75 6e 74 65 72 6d 69 6e 61 74 65 64 20 a} unterminated
e9b0: 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 regular expressi
e9c0: 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 on " +..
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
e9f0: 20 20 20 20 20 20 20 20 22 67 72 6f 75 70 28 73 "group(s
ea00: 29 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 ).", line, from
ea10: 2b 20 6c 2c 20 64 65 70 74 68 29 3b 0d 0a 20 20 + l, depth);..
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ea30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ea40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
ea50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ea70: 20 63 20 3d 20 73 2e 73 75 62 73 74 72 28 30 2c c = s.substr(0,
ea80: 20 6c 20 2d 20 31 29 3b 0d 0a 20 20 20 20 20 20 l - 1);..
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eab0: 20 20 71 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 q = {..
eac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eae0: 20 20 20 20 20 67 3a 20 74 72 75 65 2c 0d 0a 20 g: true,..
eaf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb10: 20 20 20 20 20 20 20 20 20 20 20 69 3a 20 74 72 i: tr
eb20: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue,..
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb50: 20 6d 3a 20 74 72 75 65 0d 0a 20 20 20 20 20 20 m: true..
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eb80: 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 };..
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 wh
ebb0: 69 6c 65 20 28 71 5b 73 2e 63 68 61 72 41 74 28 ile (q[s.charAt(
ebc0: 6c 29 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d l)] === true) {.
ebd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
ebe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 5b 73 q[s
ec00: 2e 63 68 61 72 41 74 28 6c 29 5d 20 3d 20 66 61 .charAt(l)] = fa
ec10: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 lse;..
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec40: 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 l += 1;..
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 ch
eca0: 61 72 61 63 74 65 72 20 2b 3d 20 6c 3b 0d 0a 20 aracter += l;..
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ecc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ecd0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73 75 62 s = s.sub
ece0: 73 74 72 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 str(l);..
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ed10: 20 71 20 3d 20 73 2e 63 68 61 72 41 74 28 30 29 q = s.charAt(0)
ed20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ed40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71 if (q
ed50: 20 3d 3d 3d 20 22 2f 22 20 7c 7c 20 71 20 3d 3d === "/" || q ==
ed60: 3d 20 22 2a 22 29 20 7b 0d 0a 20 20 20 20 20 20 = "*") {..
ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ed90: 20 20 20 20 20 20 65 72 72 6f 72 41 74 28 22 43 errorAt("C
eda0: 6f 6e 66 75 73 69 6e 67 20 72 65 67 75 6c 61 72 onfusing regular
edb0: 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 2c 0d 0a expression.",..
edc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
edd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
edf0: 20 20 20 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b line, from);
ee00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ee20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ee40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ee50: 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28 22 return it("
ee60: 28 72 65 67 65 78 70 29 22 2c 20 63 29 3b 0d 0a (regexp)", c);..
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ee80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ee90: 20 20 20 20 63 61 73 65 20 22 5c 5c 22 3a 0d 0a case "\\":..
eea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eec0: 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 c = s.ch
eed0: 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 arAt(l);..
eee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ef00: 20 20 69 66 20 28 63 20 3c 20 22 20 22 29 20 7b if (c < " ") {
ef10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ef30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
ef40: 72 6e 69 6e 67 41 74 28 0d 0a 22 55 6e 65 78 70 rningAt(.."Unexp
ef50: 65 63 74 65 64 20 63 6f 6e 74 72 6f 6c 20 63 68 ected control ch
ef60: 61 72 61 63 74 65 72 20 69 6e 20 72 65 67 75 6c aracter in regul
ef70: 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 2c ar expression.",
ef80: 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 29 line, from + l)
ef90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
efb0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
efc0: 65 20 69 66 20 28 63 20 3d 3d 3d 20 22 3c 22 29 e if (c === "<")
efd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
efe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f000: 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22 55 6e 65 warningAt(.."Une
f010: 78 70 65 63 74 65 64 20 65 73 63 61 70 65 64 20 xpected escaped
f020: 63 68 61 72 61 63 74 65 72 20 27 7b 61 7d 27 20 character '{a}'
f030: 69 6e 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 in regular expre
f040: 73 73 69 6f 6e 2e 22 2c 20 6c 69 6e 65 2c 20 66 ssion.", line, f
f050: 72 6f 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a 20 20 rom + l, c);..
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f080: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f0b0: 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 l += 1;..
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f0e0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
f110: 73 65 20 22 28 22 3a 0d 0a 20 20 20 20 20 20 20 se "(":..
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f140: 20 64 65 70 74 68 20 2b 3d 20 31 3b 0d 0a 20 20 depth += 1;..
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f170: 20 20 20 20 20 20 62 20 3d 20 66 61 6c 73 65 3b b = false;
f180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f1a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e if (s.
f1b0: 63 68 61 72 41 74 28 6c 29 20 3d 3d 3d 20 22 3f charAt(l) === "?
f1c0: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
f1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f1f0: 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 l += 1;..
f200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f220: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 73 switch (s
f230: 2e 63 68 61 72 41 74 28 6c 29 29 20 7b 0d 0a 20 .charAt(l)) {..
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f260: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
f270: 22 3a 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 ":":..
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f2a0: 20 20 63 61 73 65 20 22 3d 22 3a 0d 0a 20 20 20 case "=":..
f2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f2d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 21 case "!
f2e0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
f2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f310: 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 l += 1;..
f320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f340: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
f350: 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ak;..
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f380: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 default:..
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f3b0: 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
f3c0: 6e 67 41 74 28 0d 0a 22 45 78 70 65 63 74 65 64 ngAt(.."Expected
f3d0: 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73 74 65 '{a}' and inste
f3e0: 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22 2c 20 ad saw '{b}'.",
f3f0: 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 line, from + l,
f400: 22 3a 22 2c 20 73 2e 63 68 61 72 41 74 28 6c 29 ":", s.charAt(l)
f410: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
f420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f440: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
f450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f460: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
f470: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e {..
f480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f4a0: 20 63 61 70 74 75 72 65 73 20 2b 3d 20 31 3b 0d captures += 1;.
f4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f4d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
f4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f500: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 break;..
f510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f530: 63 61 73 65 20 22 7c 22 3a 0d 0a 20 20 20 20 20 case "|":..
f540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f560: 20 20 20 62 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 b = false;..
f570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f590: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 break;..
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f5c0: 20 20 20 63 61 73 65 20 22 29 22 3a 0d 0a 20 20 case ")":..
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f5f0: 20 20 20 20 20 20 69 66 20 28 64 65 70 74 68 20 if (depth
f600: 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 === 0) {..
f610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f630: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 warningAt(
f640: 22 55 6e 65 73 63 61 70 65 64 20 27 7b 61 7d 27 "Unescaped '{a}'
f650: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f680: 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66 line, f
f690: 72 6f 6d 20 2b 20 6c 2c 20 22 29 22 29 3b 0d 0a rom + l, ")");..
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f6c0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
f6d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 de
f700: 70 74 68 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 pth -= 1;..
f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f730: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
f740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
f760: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
f770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f780: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 case "
f790: 20 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ":..
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 20 3d q =
f7c0: 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 1;..
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 whi
f7f0: 6c 65 20 28 73 2e 63 68 61 72 41 74 28 6c 29 20 le (s.charAt(l)
f800: 3d 3d 3d 20 22 20 22 29 20 7b 0d 0a 20 20 20 20 === " ") {..
f810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f830: 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d l += 1;.
f840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
f850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f860: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 20 2b q +
f870: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 = 1;..
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
f8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
f8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f8c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 71 20 3e if (q >
f8d0: 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 1) {..
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f900: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22 warningAt(.."
f910: 53 70 61 63 65 73 20 61 72 65 20 68 61 72 64 20 Spaces are hard
f920: 74 6f 20 63 6f 75 6e 74 2e 20 55 73 65 20 7b 7b to count. Use {{
f930: 61 7d 7d 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f a}}.", line, fro
f940: 6d 20 2b 20 6c 2c 20 71 29 3b 0d 0a 20 20 20 20 m + l, q);..
f950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f970: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
f980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
f9a0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
f9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f9c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
f9d0: 22 5b 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 "[":..
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20 c
fa00: 3d 20 73 2e 63 68 61 72 41 74 28 6c 29 3b 0d 0a = s.charAt(l);..
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fa30: 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d if (c ==
fa40: 3d 20 22 5e 22 29 20 7b 0d 0a 20 20 20 20 20 20 = "^") {..
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fa70: 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 l += 1;..
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fa90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
faa0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o
fab0: 70 74 69 6f 6e 2e 72 65 67 65 78 70 29 20 7b 0d ption.regexp) {.
fac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
faf0: 20 77 61 72 6e 69 6e 67 41 74 28 22 49 6e 73 65 warningAt("Inse
fb00: 63 75 72 65 20 27 7b 61 7d 27 2e 22 2c 0d 0a 20 cure '{a}'.",..
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fb40: 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66 72 6f line, fro
fb50: 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a 20 20 20 20 m + l, c);..
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fb80: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
fb90: 66 20 28 73 2e 63 68 61 72 41 74 28 6c 29 20 3d f (s.charAt(l) =
fba0: 3d 3d 20 22 5d 22 29 20 7b 0d 0a 20 20 20 20 20 == "]") {..
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fbd0: 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
fbe0: 41 74 28 22 55 6e 65 73 63 61 70 65 64 20 27 7b At("Unescaped '{
fbf0: 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 a}'.",..
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 line
fc30: 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 22 5e 22 29 , from + l, "^")
fc40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
fc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fc90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fcc0: 20 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 22 if (c === "
fcd0: 5d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ]") {..
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fd00: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 45 6d warningAt("Em
fd10: 70 74 79 20 63 6c 61 73 73 2e 22 2c 20 6c 69 6e pty class.", lin
fd20: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
fd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fd50: 20 20 20 20 20 20 20 20 66 72 6f 6d 20 2b 20 6c from + l
fd60: 20 2d 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 - 1);..
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fd90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fdb0: 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69 74 isLit
fdc0: 65 72 61 6c 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 eral = false;..
fdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fdf0: 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65 isInRange
fe00: 20 3d 20 66 61 6c 73 65 3b 0d 0a 6b 6c 61 73 73 = false;..klass
fe10: 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :
fe20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fe30: 20 20 20 64 6f 20 7b 0d 0a 20 20 20 20 20 20 20 do {..
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fe60: 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 41 c = s.charA
fe70: 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 t(l);..
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fe90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fea0: 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 l += 1;..
feb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
fed0: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch (
fee0: 63 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 c) {..
fef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff10: 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20 20 20 case "[":..
ff20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff40: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 5e case "^
ff50: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
ff60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ff80: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 warningAt("U
ff90: 6e 65 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 nescaped '{a}'."
ffa0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
ffb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ffd0: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c line,
ffe0: 20 66 72 6f 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a from + l, c);..
fff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10020 69 66 20 28 69 73 49 6e 52 61 6e 67 65 29 20 7b if (isInRange) {
10030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
10040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10060 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20 isInRange
10070 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 = false;..
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
100a0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
100b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
100c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
100d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
100e0 20 20 20 20 20 20 20 20 69 73 4c 69 74 65 72 61 isLitera
100f0 6c 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 l = true;..
10100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10120 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
10130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
10160 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
10170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10190 20 20 63 61 73 65 20 22 2d 22 3a 0d 0a 20 20 20 case "-":..
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
101b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
101d0 28 69 73 4c 69 74 65 72 61 6c 20 26 26 20 21 69 (isLiteral && !i
101e0 73 49 6e 52 61 6e 67 65 29 20 7b 0d 0a 20 20 20 sInRange) {..
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10220 20 69 73 4c 69 74 65 72 61 6c 20 3d 20 66 61 6c isLiteral = fal
10230 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se;..
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10260 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e isInRan
10270 67 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 ge = true;..
10280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
102a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
102b0 73 65 20 69 66 20 28 69 73 49 6e 52 61 6e 67 65 se if (isInRange
102c0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
102d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
102e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
102f0 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e isInRan
10300 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 ge = false;..
10310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
10340 6c 73 65 20 69 66 20 28 73 2e 63 68 61 72 41 74 lse if (s.charAt
10350 28 6c 29 20 3d 3d 3d 20 22 5d 22 29 20 7b 0d 0a (l) === "]") {..
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10390 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20 3d 20 isInRange =
103a0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 true;..
103b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
103c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
103d0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d } else {.
103e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10410 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e if (option.
10420 72 65 67 65 78 64 61 73 68 20 21 3d 3d 20 28 6c regexdash !== (l
10430 20 3d 3d 3d 20 32 20 7c 7c 20 28 6c 20 3d 3d 3d === 2 || (l ===
10440 20 33 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 3 &&..
10450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
10480 2e 63 68 61 72 41 74 28 31 29 20 3d 3d 3d 20 22 .charAt(1) === "
10490 5e 22 29 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 ^"))) {..
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
104b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
104c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
104d0 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 73 warningAt("Unes
104e0 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d 0a caped '{a}'.",..
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10520 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 line
10530 2c 20 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c 20 , from + l - 1,
10540 22 2d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 "-");..
10550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
105b0 20 20 69 73 4c 69 74 65 72 61 6c 20 3d 20 74 72 isLiteral = tr
105c0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue;..
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
105f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10620 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
10630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10650 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
10660 20 22 5d 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 "]":..
10670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10690 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e 52 if (isInR
106a0 61 6e 67 65 20 26 26 20 21 6f 70 74 69 6f 6e 2e ange && !option.
106b0 72 65 67 65 78 64 61 73 68 29 20 7b 0d 0a 20 20 regexdash) {..
106c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
106d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
106f0 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 warningAt("Une
10700 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d scaped '{a}'.",.
10710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
10720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e lin
10750 65 2c 20 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c e, from + l - 1,
10760 20 22 2d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 "-");..
10770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10790 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
107c0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
107d0 20 6b 6c 61 73 73 3b 0d 0a 20 20 20 20 20 20 20 klass;..
107e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
107f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10800 20 20 20 20 20 63 61 73 65 20 22 5c 5c 22 3a 0d case "\\":.
10810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
10820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10840 20 63 20 3d 20 73 2e 63 68 61 72 41 74 28 6c 29 c = s.charAt(l)
10850 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
10860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10880 20 20 20 69 66 20 28 63 20 3c 20 22 20 22 29 20 if (c < " ")
10890 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
108a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
108b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
108c0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 warningAt
108d0 28 0d 0a 22 55 6e 65 78 70 65 63 74 65 64 20 63 (.."Unexpected c
108e0 6f 6e 74 72 6f 6c 20 63 68 61 72 61 63 74 65 72 ontrol character
108f0 20 69 6e 20 72 65 67 75 6c 61 72 20 65 78 70 72 in regular expr
10900 65 73 73 69 6f 6e 2e 22 2c 20 6c 69 6e 65 2c 20 ession.", line,
10910 66 72 6f 6d 20 2b 20 6c 29 3b 0d 0a 20 20 20 20 from + l);..
10920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10940 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
10950 73 65 20 69 66 20 28 63 20 3d 3d 3d 20 22 3c 22 se if (c === "<"
10960 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
10970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10990 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
109a0 41 74 28 0d 0a 22 55 6e 65 78 70 65 63 74 65 64 At(.."Unexpected
109b0 20 65 73 63 61 70 65 64 20 63 68 61 72 61 63 74 escaped charact
109c0 65 72 20 27 7b 61 7d 27 20 69 6e 20 72 65 67 75 er '{a}' in regu
109d0 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 lar expression."
109e0 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c , line, from + l
109f0 2c 20 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 , c);..
10a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a50 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 l += 1
10a60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10a90 20 20 20 20 20 2f 2f 20 5c 77 2c 20 5c 73 20 61 // \w, \s a
10aa0 6e 64 20 5c 64 20 61 72 65 20 6e 65 76 65 72 20 nd \d are never
10ab0 70 61 72 74 20 6f 66 20 61 20 63 68 61 72 61 63 part of a charac
10ac0 74 65 72 20 72 61 6e 67 65 0d 0a 20 20 20 20 20 ter range..
10ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10af0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 2f if (/
10b00 5b 77 73 64 5d 2f 69 2e 74 65 73 74 28 63 29 29 [wsd]/i.test(c))
10b10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
10b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10b40 20 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e if (isIn
10b50 52 61 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 Range) {..
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10b90 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 warningAt("Une
10ba0 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d scaped '{a}'.",.
10bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10be0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e lin
10bf0 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 22 2d 22 e, from + l, "-"
10c00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
10c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10c30 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49 6e isIn
10c40 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a Range = false;..
10c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10c80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10cb0 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69 74 isLit
10cc0 65 72 61 6c 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 eral = false;..
10cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
10d00 20 65 6c 73 65 20 69 66 20 28 69 73 49 6e 52 61 else if (isInRa
10d10 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 nge) {..
10d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10d40 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49 6e isIn
10d50 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a Range = false;..
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10d90 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 } else {..
10da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 is
10dd0 4c 69 74 65 72 61 6c 20 3d 20 74 72 75 65 3b 0d Literal = true;.
10de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e40 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 break;..
10e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10e70 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 22 case "/"
10e80 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
10e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10eb0 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e warningAt("Un
10ec0 65 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c escaped '{a}'.",
10ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
10ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10f00 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 line,
10f10 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c 20 22 2f from + l - 1, "/
10f20 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 ");....
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10f50 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e 52 if (isInR
10f60 61 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 ange) {..
10f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10f90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49 isI
10fa0 6e 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d nRange = false;.
10fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
10fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
10fe0 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
11020 73 4c 69 74 65 72 61 6c 20 3d 20 74 72 75 65 3b sLiteral = true;
11030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11060 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11090 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
110a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
110c0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 3c case "<
110d0 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
110e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
110f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11100 20 20 20 20 69 66 20 28 69 73 49 6e 52 61 6e 67 if (isInRang
11110 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 e) {..
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11140 20 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61 isInRa
11150 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 nge = false;..
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
11190 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 else {..
111a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
111c0 20 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69 isLi
111d0 74 65 72 61 6c 20 3d 20 74 72 75 65 3b 0d 0a 20 teral = true;..
111e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
111f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
11210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11240 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
11250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11270 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a default:..
11280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
112a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
112b0 69 66 20 28 69 73 49 6e 52 61 6e 67 65 29 20 7b if (isInRange) {
112c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
112d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
112e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
112f0 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20 isInRange
11300 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 = false;..
11310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11330 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
11340 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11370 20 20 20 20 20 20 20 20 69 73 4c 69 74 65 72 61 isLitera
11380 6c 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 l = true;..
11390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
113a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
113b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
113e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11410 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 63 29 } while (c)
11420 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
11430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11440 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
11450 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
11460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11470 20 20 20 20 20 20 20 63 61 73 65 20 22 2e 22 3a case ".":
11480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
114a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 if (op
114b0 74 69 6f 6e 2e 72 65 67 65 78 70 29 20 7b 0d 0a tion.regexp) {..
114c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
114e0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
114f0 69 6e 67 41 74 28 22 49 6e 73 65 63 75 72 65 20 ingAt("Insecure
11500 27 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 0d 0a '{a}'.", line,..
11510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11540 20 20 20 20 66 72 6f 6d 20 2b 20 6c 2c 20 63 29 from + l, c)
11550 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
11560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
11580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
115a0 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 break;..
115b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
115c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
115d0 20 20 63 61 73 65 20 22 5d 22 3a 0d 0a 20 20 20 case "]":..
115e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
115f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11600 20 63 61 73 65 20 22 3f 22 3a 0d 0a 20 20 20 20 case "?":..
11610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11630 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20 20 20 20 case "{":..
11640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
11660 61 73 65 20 22 7d 22 3a 0d 0a 20 20 20 20 20 20 ase "}":..
11670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
11690 73 65 20 22 2b 22 3a 0d 0a 20 20 20 20 20 20 20 se "+":..
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
116b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas
116c0 65 20 22 2a 22 3a 0d 0a 20 20 20 20 20 20 20 20 e "*":..
116d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
116e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
116f0 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 73 63 warningAt("Unesc
11700 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 20 6c 69 aped '{a}'.", li
11710 6e 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ne,..
11720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11740 20 20 20 20 20 66 72 6f 6d 20 2b 20 6c 2c 20 63 from + l, c
11750 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11770 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
117a0 66 20 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 f (b) {..
117b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
117c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
117d0 20 73 77 69 74 63 68 20 28 73 2e 63 68 61 72 41 switch (s.charA
117e0 74 28 6c 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 t(l)) {..
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11810 20 63 61 73 65 20 22 3f 22 3a 0d 0a 20 20 20 20 case "?":..
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11840 20 20 20 20 63 61 73 65 20 22 2b 22 3a 0d 0a 20 case "+":..
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11870 20 20 20 20 20 20 20 63 61 73 65 20 22 2a 22 3a case "*":
11880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 20 l
118b0 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 += 1;..
118c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
118d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
118e0 20 20 20 69 66 20 28 73 2e 63 68 61 72 41 74 28 if (s.charAt(
118f0 6c 29 20 3d 3d 3d 20 22 3f 22 29 20 7b 0d 0a 20 l) === "?") {..
11900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c l
11930 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 += 1;..
11940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11960 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
11970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11990 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
119b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
119c0 20 20 20 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20 case "{":..
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
119f0 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 l += 1
11a00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
11a30 20 3d 20 73 2e 63 68 61 72 41 74 28 6c 29 3b 0d = s.charAt(l);.
11a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
11a70 28 63 20 3c 20 22 30 22 20 7c 7c 20 63 20 3e 20 (c < "0" || c >
11a80 22 39 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 "9") {..
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ab0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 warningA
11ac0 74 28 0d 0a 22 45 78 70 65 63 74 65 64 20 61 20 t(.."Expected a
11ad0 6e 75 6d 62 65 72 20 61 6e 64 20 69 6e 73 74 65 number and inste
11ae0 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 20 ad saw '{a}'.",
11af0 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 line, from + l,
11b00 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 c);..
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
11b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b60 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 l += 1;..
11b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b90 20 20 20 20 20 6c 6f 77 20 3d 20 2b 63 3b 0d 0a low = +c;..
11ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11bc0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 for
11bd0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 (;;) {..
11be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11c00 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 c = s.ch
11c10 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 arAt(l);..
11c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11c40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 20 if (c
11c50 3c 20 22 30 22 20 7c 7c 20 63 20 3e 20 22 39 22 < "0" || c > "9"
11c60 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11c90 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d break;.
11ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
11cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11cd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
11ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11d00 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 l += 1;..
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11d30 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 77 low
11d40 20 3d 20 2b 63 20 2b 20 28 6c 6f 77 20 2a 20 31 = +c + (low * 1
11d50 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0);..
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11d80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11db0 68 69 67 68 20 3d 20 6c 6f 77 3b 0d 0a 20 20 20 high = low;..
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11de0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d if (c =
11df0 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 == ",") {..
11e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11e20 20 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 l +=
11e30 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 1;..
11e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11e60 20 20 20 20 68 69 67 68 20 3d 20 49 6e 66 69 6e high = Infin
11e70 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ity;..
11e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ea0 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 c = s.char
11eb0 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 At(l);..
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ee0 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3e 3d if (c >=
11ef0 20 22 30 22 20 26 26 20 63 20 3c 3d 20 22 39 22 "0" && c <= "9"
11f00 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
11f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11f30 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b l += 1;
11f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11f70 20 20 20 20 20 20 68 69 67 68 20 3d 20 2b 63 3b high = +c;
11f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11fb0 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b for (;;) {
11fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ff0 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e c = s.
12000 63 68 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20 charAt(l);..
12010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12040 20 20 20 20 69 66 20 28 63 20 3c 20 22 30 22 20 if (c < "0"
12050 7c 7c 20 63 20 3e 20 22 39 22 29 20 7b 0d 0a 20 || c > "9") {..
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12090 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
120a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
120b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
120c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
120d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12110 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 l += 1;..
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12150 20 20 20 20 20 20 20 68 69 67 68 20 3d 20 2b 63 high = +c
12160 20 2b 20 28 68 69 67 68 20 2a 20 31 30 29 3b 0d + (high * 10);.
12170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
121a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
121c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
121d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
121e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
121f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12200 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12230 20 20 20 20 20 20 69 66 20 28 73 2e 63 68 61 72 if (s.char
12240 41 74 28 6c 29 20 21 3d 3d 20 22 7d 22 29 20 7b At(l) !== "}") {
12250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
12260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12280 20 20 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22 45 warningAt(.."E
12290 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e xpected '{a}' an
122a0 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b d instead saw '{
122b0 62 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f b}'.", line, fro
122c0 6d 20 2b 20 6c 2c 20 22 7d 22 2c 20 63 29 3b 0d m + l, "}", c);.
122d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
122e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
122f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
12300 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 lse {..
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12330 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a l += 1;..
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 if (s
123a0 2e 63 68 61 72 41 74 28 6c 29 20 3d 3d 3d 20 22 .charAt(l) === "
123b0 3f 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ?") {..
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
123e0 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a l += 1;..
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12410 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
12420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12440 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c if (l
12450 6f 77 20 3e 20 68 69 67 68 29 20 7b 0d 0a 20 20 ow > high) {..
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
12490 72 6e 69 6e 67 41 74 28 0d 0a 22 27 7b 61 7d 27 rningAt(.."'{a}'
124a0 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 67 should not be g
124b0 72 65 61 74 65 72 20 74 68 61 6e 20 27 7b 62 7d reater than '{b}
124c0 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 '.", line, from
124d0 2b 20 6c 2c 20 6c 6f 77 2c 20 68 69 67 68 29 3b + l, low, high);
124e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
12510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
12520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12530 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
12540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12560 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12580 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
125a0 20 20 20 20 20 20 63 20 3d 20 73 2e 73 75 62 73 c = s.subs
125b0 74 72 28 30 2c 20 6c 20 2d 20 31 29 3b 0d 0a 20 tr(0, l - 1);..
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
125d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
125e0 68 61 72 61 63 74 65 72 20 2b 3d 20 6c 3b 0d 0a haracter += l;..
125f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12610 73 20 3d 20 73 2e 73 75 62 73 74 72 28 6c 29 3b s = s.substr(l);
12620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12640 20 20 72 65 74 75 72 6e 20 69 74 28 22 28 72 65 return it("(re
12650 67 65 78 70 29 22 2c 20 63 29 3b 0d 0a 20 20 20 gexp)", c);..
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12670 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
12680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12690 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i
126a0 74 28 22 28 70 75 6e 63 74 75 61 74 6f 72 29 22 t("(punctuator)"
126b0 2c 20 74 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 , t);.... //
126c0 20 20 20 20 20 70 75 6e 63 74 75 61 74 6f 72 0d punctuator.
126d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
126e0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
126f0 22 23 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 "#":..
12700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12710 20 20 72 65 74 75 72 6e 20 69 74 28 22 28 70 75 return it("(pu
12720 6e 63 74 75 61 74 6f 72 29 22 2c 20 74 29 3b 0d nctuator)", t);.
12730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
12740 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default
12750 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
12760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
12770 65 74 75 72 6e 20 69 74 28 22 28 70 75 6e 63 74 eturn it("(punct
12780 75 61 74 6f 72 29 22 2c 20 74 29 3b 0d 0a 20 20 uator)", t);..
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
127a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
127d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d }.. }
127e0 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 .. };..
127f0 20 20 7d 28 29 29 3b 0d 0a 0d 0a 0d 0a 20 20 20 }());......
12800 20 66 75 6e 63 74 69 6f 6e 20 61 64 64 6c 61 62 function addlab
12810 65 6c 28 74 2c 20 74 79 70 65 2c 20 74 6f 6b 65 el(t, type, toke
12820 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 n) {.. if
12830 20 28 74 20 3d 3d 3d 20 22 68 61 73 4f 77 6e 50 (t === "hasOwnP
12840 72 6f 70 65 72 74 79 22 29 20 7b 0d 0a 20 20 20 roperty") {..
12850 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
12860 28 22 27 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 ("'hasOwnPropert
12870 79 27 20 69 73 20 61 20 72 65 61 6c 6c 79 20 62 y' is a really b
12880 61 64 20 6e 61 6d 65 2e 22 29 3b 0d 0a 20 20 20 ad name.");..
12890 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
128a0 20 20 2f 2f 20 44 65 66 69 6e 65 20 74 20 69 6e // Define t in
128b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 75 6e the current fun
128c0 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 63 75 72 ction in the cur
128d0 72 65 6e 74 20 73 63 6f 70 65 2e 0d 0a 20 20 20 rent scope...
128e0 20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 if (is_own(
128f0 66 75 6e 63 74 2c 20 74 29 20 26 26 20 21 66 75 funct, t) && !fu
12900 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 29 nct["(global)"])
12910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
12920 69 66 20 28 66 75 6e 63 74 5b 74 5d 20 3d 3d 3d if (funct[t] ===
12930 20 74 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 true) {..
12940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 if (op
12950 74 69 6f 6e 2e 6c 61 74 65 64 65 66 29 0d 0a 20 tion.latedef)..
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12970 20 20 20 77 61 72 6e 69 6e 67 28 22 27 7b 61 7d warning("'{a}
12980 27 20 77 61 73 20 75 73 65 64 20 62 65 66 6f 72 ' was used befor
12990 65 20 69 74 20 77 61 73 20 64 65 66 69 6e 65 64 e it was defined
129a0 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 74 .", nexttoken, t
129b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
129c0 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 } else {..
129d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f if (!o
129e0 70 74 69 6f 6e 2e 73 68 61 64 6f 77 20 26 26 20 ption.shadow &&
129f0 74 79 70 65 20 21 3d 3d 20 22 65 78 63 65 70 74 type !== "except
12a00 69 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 ion")..
12a10 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
12a20 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 61 6c 72 ng("'{a}' is alr
12a30 65 61 64 79 20 64 65 66 69 6e 65 64 2e 22 2c 20 eady defined.",
12a40 6e 65 78 74 74 6f 6b 65 6e 2c 20 74 29 3b 0d 0a nexttoken, t);..
12a50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
12a60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
12a70 20 20 20 20 66 75 6e 63 74 5b 74 5d 20 3d 20 74 funct[t] = t
12a80 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ype;....
12a90 69 66 20 28 74 6f 6b 65 6e 29 20 7b 0d 0a 20 20 if (token) {..
12aa0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b funct[
12ab0 22 28 74 6f 6b 65 6e 73 29 22 5d 5b 74 5d 20 3d "(tokens)"][t] =
12ac0 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 token;..
12ad0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 }.... if
12ae0 20 28 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c (funct["(global
12af0 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 )"]) {..
12b00 20 20 20 20 67 6c 6f 62 61 6c 5b 74 5d 20 3d 20 global[t] =
12b10 66 75 6e 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 funct;..
12b20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 69 if (is_own(i
12b30 6d 70 6c 69 65 64 2c 20 74 29 29 20 7b 0d 0a 20 mplied, t)) {..
12b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
12b50 66 20 28 6f 70 74 69 6f 6e 2e 6c 61 74 65 64 65 f (option.latede
12b60 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 f)..
12b70 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
12b80 22 27 7b 61 7d 27 20 77 61 73 20 75 73 65 64 20 "'{a}' was used
12b90 62 65 66 6f 72 65 20 69 74 20 77 61 73 20 64 65 before it was de
12ba0 66 69 6e 65 64 2e 22 2c 20 6e 65 78 74 74 6f 6b fined.", nexttok
12bb0 65 6e 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 en, t);..
12bc0 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 20 delete
12bd0 69 6d 70 6c 69 65 64 5b 74 5d 3b 0d 0a 20 20 20 implied[t];..
12be0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
12bf0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 } else {..
12c00 20 20 20 20 20 20 20 20 20 20 73 63 6f 70 65 5b scope[
12c10 74 5d 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20 t] = funct;..
12c20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d }.. }...
12c30 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 ... function
12c40 64 6f 4f 70 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 doOption() {..
12c50 20 20 20 20 20 20 76 61 72 20 6e 74 20 3d 20 6e var nt = n
12c60 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 exttoken;..
12c70 20 20 20 76 61 72 20 6f 20 20 3d 20 6e 74 2e 76 var o = nt.v
12c80 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 76 alue;.. v
12c90 61 72 20 71 75 6f 74 6d 61 72 6b 56 61 6c 75 65 ar quotmarkValue
12ca0 20 3d 20 6f 70 74 69 6f 6e 2e 71 75 6f 74 6d 61 = option.quotma
12cb0 72 6b 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 rk;.. var
12cc0 20 70 72 65 64 65 66 20 3d 20 7b 7d 3b 0d 0a 20 predef = {};..
12cd0 20 20 20 20 20 20 20 76 61 72 20 62 2c 20 6f 62 var b, ob
12ce0 6a 2c 20 66 69 6c 74 65 72 2c 20 74 2c 20 74 6e j, filter, t, tn
12cf0 2c 20 76 2c 20 6d 69 6e 75 73 3b 0d 0a 0d 0a 20 , v, minus;....
12d00 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6f switch (o
12d10 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 ) {.. cas
12d20 65 20 22 2a 2f 22 3a 0d 0a 20 20 20 20 20 20 20 e "*/":..
12d30 20 20 20 20 20 65 72 72 6f 72 28 22 55 6e 62 65 error("Unbe
12d40 67 75 6e 20 63 6f 6d 6d 65 6e 74 2e 22 29 3b 0d gun comment.");.
12d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 . bre
12d60 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 ak;.. cas
12d70 65 20 22 2f 2a 6d 65 6d 62 65 72 73 22 3a 0d 0a e "/*members":..
12d80 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a case "/*
12d90 6d 65 6d 62 65 72 22 3a 0d 0a 20 20 20 20 20 20 member":..
12da0 20 20 20 20 20 20 6f 20 3d 20 22 2f 2a 6d 65 6d o = "/*mem
12db0 62 65 72 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 bers";..
12dc0 20 20 20 20 69 66 20 28 21 6d 65 6d 62 65 72 73 if (!members
12dd0 4f 6e 6c 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 Only) {..
12de0 20 20 20 20 20 20 20 20 20 6d 65 6d 62 65 72 73 members
12df0 4f 6e 6c 79 20 3d 20 7b 7d 3b 0d 0a 20 20 20 20 Only = {};..
12e00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
12e10 20 20 20 20 20 20 20 6f 62 6a 20 3d 20 6d 65 6d obj = mem
12e20 62 65 72 73 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20 bersOnly;..
12e30 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 71 75 option.qu
12e40 6f 74 6d 61 72 6b 20 3d 20 66 61 6c 73 65 3b 0d otmark = false;.
12e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 . bre
12e60 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 ak;.. cas
12e70 65 20 22 2f 2a 6a 73 68 69 6e 74 22 3a 0d 0a 20 e "/*jshint":..
12e80 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a 6a case "/*j
12e90 73 6c 69 6e 74 22 3a 0d 0a 20 20 20 20 20 20 20 slint":..
12ea0 20 20 20 20 20 6f 62 6a 20 3d 20 6f 70 74 69 6f obj = optio
12eb0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 n;..
12ec0 66 69 6c 74 65 72 20 3d 20 62 6f 6f 6c 4f 70 74 filter = boolOpt
12ed0 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 ions;..
12ee0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
12ef0 20 20 20 63 61 73 65 20 22 2f 2a 67 6c 6f 62 61 case "/*globa
12f00 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 l":..
12f10 20 6f 62 6a 20 3d 20 70 72 65 64 65 66 3b 0d 0a obj = predef;..
12f20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
12f30 6b 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 k;.. defa
12f40 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 ult:..
12f50 20 20 65 72 72 6f 72 28 22 57 68 61 74 3f 22 29 error("What?")
12f60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a ;.. }....
12f70 20 20 20 20 20 20 20 20 74 20 3d 20 6c 65 78 2e t = lex.
12f80 74 6f 6b 65 6e 28 29 3b 0d 0a 6c 6f 6f 70 3a 20 token();..loop:
12f90 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20 for (;;) {..
12fa0 20 20 20 20 20 20 20 20 20 20 6d 69 6e 75 73 20 minus
12fb0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 = false;..
12fc0 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b for (;;) {
12fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
12fe0 20 20 69 66 20 28 74 2e 74 79 70 65 20 3d 3d 3d if (t.type ===
12ff0 20 22 73 70 65 63 69 61 6c 22 20 26 26 20 74 2e "special" && t.
13000 76 61 6c 75 65 20 3d 3d 3d 20 22 2a 2f 22 29 20 value === "*/")
13010 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
13020 20 20 20 20 20 20 20 62 72 65 61 6b 20 6c 6f 6f break loo
13030 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 p;..
13040 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
13050 20 20 20 20 20 20 20 69 66 20 28 74 2e 69 64 20 if (t.id
13060 21 3d 3d 20 22 28 65 6e 64 6c 69 6e 65 29 22 20 !== "(endline)"
13070 26 26 20 74 2e 69 64 20 21 3d 3d 20 22 2c 22 29 && t.id !== ",")
13080 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
13090 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
130a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
130b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
130c0 20 20 20 74 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e t = lex.token
130d0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ();..
130e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 }....
130f0 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a 67 if (o === "/*g
13100 6c 6f 62 61 6c 22 20 26 26 20 74 2e 76 61 6c 75 lobal" && t.valu
13110 65 20 3d 3d 3d 20 22 2d 22 29 20 7b 0d 0a 20 20 e === "-") {..
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 mi
13130 6e 75 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 nus = true;..
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 3d t =
13150 20 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20 lex.token();..
13160 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a }....
13170 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
13180 74 2e 74 79 70 65 20 21 3d 3d 20 22 28 73 74 72 t.type !== "(str
13190 69 6e 67 29 22 20 26 26 20 74 2e 74 79 70 65 20 ing)" && t.type
131a0 21 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65 72 !== "(identifier
131b0 29 22 20 26 26 20 6f 20 21 3d 3d 20 22 2f 2a 6d )" && o !== "/*m
131c0 65 6d 62 65 72 73 22 29 20 7b 0d 0a 20 20 20 20 embers") {..
131d0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f erro
131e0 72 28 22 42 61 64 20 6f 70 74 69 6f 6e 2e 22 2c r("Bad option.",
131f0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 t);..
13200 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
13210 20 20 20 76 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e v = lex.token
13220 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ();..
13230 20 69 66 20 28 76 2e 69 64 20 3d 3d 3d 20 22 3a if (v.id === ":
13240 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
13250 20 20 20 20 20 20 76 20 3d 20 6c 65 78 2e 74 6f v = lex.to
13260 6b 65 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 ken();....
13270 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 if (ob
13280 6a 20 3d 3d 3d 20 6d 65 6d 62 65 72 73 4f 6e 6c j === membersOnl
13290 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 y) {..
132a0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error(
132b0 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20 "Expected '{a}'
132c0 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 and instead saw
132d0 27 7b 62 7d 27 2e 22 2c 20 74 2c 20 22 2a 2f 22 '{b}'.", t, "*/"
132e0 2c 20 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 , ":");..
132f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 }....
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
13310 20 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73 68 69 6e (o === "/*jshin
13320 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 t") {..
13330 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b check
13340 4f 70 74 69 6f 6e 28 74 2e 76 61 6c 75 65 2c 20 Option(t.value,
13350 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t);..
13360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
13370 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 2e if (t.
13380 76 61 6c 75 65 20 3d 3d 3d 20 22 69 6e 64 65 6e value === "inden
13390 74 22 20 26 26 20 28 6f 20 3d 3d 3d 20 22 2f 2a t" && (o === "/*
133a0 6a 73 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d 3d jshint" || o ===
133b0 20 22 2f 2a 6a 73 6c 69 6e 74 22 29 29 20 7b 0d "/*jslint")) {.
133c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
133d0 20 20 20 20 20 62 20 3d 20 2b 76 2e 76 61 6c 75 b = +v.valu
133e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e;..
133f0 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65 if (type
13400 6f 66 20 62 20 21 3d 3d 20 22 6e 75 6d 62 65 72 of b !== "number
13410 22 20 7c 7c 20 21 69 73 46 69 6e 69 74 65 28 62 " || !isFinite(b
13420 29 20 7c 7c 20 62 20 3c 3d 20 30 20 7c 7c 0d 0a ) || b <= 0 ||..
13430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13440 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 74 68 Math
13450 2e 66 6c 6f 6f 72 28 62 29 20 21 3d 3d 20 62 29 .floor(b) !== b)
13460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
13470 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f erro
13480 72 28 22 45 78 70 65 63 74 65 64 20 61 20 73 6d r("Expected a sm
13490 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 6e 64 20 all integer and
134a0 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61 7d instead saw '{a}
134b0 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 '.",..
134c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
134d0 20 20 20 20 20 20 76 2c 20 76 2e 76 61 6c 75 65 v, v.value
134e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
134f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f o
13510 62 6a 2e 77 68 69 74 65 20 3d 20 74 72 75 65 3b bj.white = true;
13520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13530 20 20 20 20 20 20 6f 62 6a 2e 69 6e 64 65 6e 74 obj.indent
13540 20 3d 20 62 3b 0d 0a 20 20 20 20 20 20 20 20 20 = b;..
13550 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
13560 20 28 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6d (t.value === "m
13570 61 78 65 72 72 22 20 26 26 20 28 6f 20 3d 3d 3d axerr" && (o ===
13580 20 22 2f 2a 6a 73 68 69 6e 74 22 20 7c 7c 20 6f "/*jshint" || o
13590 20 3d 3d 3d 20 22 2f 2a 6a 73 6c 69 6e 74 22 29 === "/*jslint")
135a0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
135b0 20 20 20 20 20 20 20 20 20 62 20 3d 20 2b 76 2e b = +v.
135c0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 value;..
135d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
135e0 74 79 70 65 6f 66 20 62 20 21 3d 3d 20 22 6e 75 typeof b !== "nu
135f0 6d 62 65 72 22 20 7c 7c 20 21 69 73 46 69 6e 69 mber" || !isFini
13600 74 65 28 62 29 20 7c 7c 20 62 20 3c 3d 20 30 20 te(b) || b <= 0
13610 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||..
13620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13630 4d 61 74 68 2e 66 6c 6f 6f 72 28 62 29 20 21 3d Math.floor(b) !=
13640 3d 20 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 = b) {..
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13660 65 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 20 error("Expected
13670 61 20 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20 a small integer
13680 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 and instead saw
13690 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 '{a}'.",..
136a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
136b0 20 20 20 20 20 20 20 20 20 20 76 2c 20 76 2e 76 v, v.v
136c0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 alue);..
136d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
136f0 20 20 20 6f 62 6a 2e 6d 61 78 65 72 72 20 3d 20 obj.maxerr =
13700 62 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 b;..
13710 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 } else if (t
13720 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6d 61 78 6c .value === "maxl
13730 65 6e 22 20 26 26 20 28 6f 20 3d 3d 3d 20 22 2f en" && (o === "/
13740 2a 6a 73 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d *jshint" || o ==
13750 3d 20 22 2f 2a 6a 73 6c 69 6e 74 22 29 29 20 7b = "/*jslint")) {
13760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13770 20 20 20 20 20 20 62 20 3d 20 2b 76 2e 76 61 6c b = +v.val
13780 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue;..
13790 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 if (typ
137a0 65 6f 66 20 62 20 21 3d 3d 20 22 6e 75 6d 62 65 eof b !== "numbe
137b0 72 22 20 7c 7c 20 21 69 73 46 69 6e 69 74 65 28 r" || !isFinite(
137c0 62 29 20 7c 7c 20 62 20 3c 3d 20 30 20 7c 7c 0d b) || b <= 0 ||.
137d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
137e0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 74 Mat
137f0 68 2e 66 6c 6f 6f 72 28 62 29 20 21 3d 3d 20 62 h.floor(b) !== b
13800 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
13810 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err
13820 6f 72 28 22 45 78 70 65 63 74 65 64 20 61 20 73 or("Expected a s
13830 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 6e 64 mall integer and
13840 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61 instead saw '{a
13850 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 }'.",..
13860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13870 20 20 20 20 20 20 20 76 2c 20 76 2e 76 61 6c 75 v, v.valu
13880 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e);..
13890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
138b0 6f 62 6a 2e 6d 61 78 6c 65 6e 20 3d 20 62 3b 0d obj.maxlen = b;.
138c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
138d0 20 7d 20 65 6c 73 65 20 69 66 20 28 74 2e 76 61 } else if (t.va
138e0 6c 75 65 20 3d 3d 3d 20 22 76 61 6c 69 64 74 68 lue === "validth
138f0 69 73 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 is") {..
13900 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
13910 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 funct["(global)"
13920 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]) {..
13930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 er
13940 72 6f 72 28 22 4f 70 74 69 6f 6e 20 27 76 61 6c ror("Option 'val
13950 69 64 74 68 69 73 27 20 63 61 6e 27 74 20 62 65 idthis' can't be
13960 20 75 73 65 64 20 69 6e 20 61 20 67 6c 6f 62 61 used in a globa
13970 6c 20 73 63 6f 70 65 2e 22 29 3b 0d 0a 20 20 20 l scope.");..
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13990 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
139a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
139b0 20 20 20 69 66 20 28 76 2e 76 61 6c 75 65 20 3d if (v.value =
139c0 3d 3d 20 22 74 72 75 65 22 20 7c 7c 20 76 2e 76 == "true" || v.v
139d0 61 6c 75 65 20 3d 3d 3d 20 22 66 61 6c 73 65 22 alue === "false"
139e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f o
13a00 62 6a 5b 74 2e 76 61 6c 75 65 5d 20 3d 20 76 2e bj[t.value] = v.
13a10 76 61 6c 75 65 20 3d 3d 3d 20 22 74 72 75 65 22 value === "true"
13a20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
13a30 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d else.
13a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err
13a60 6f 72 28 22 42 61 64 20 6f 70 74 69 6f 6e 20 76 or("Bad option v
13a70 61 6c 75 65 2e 22 2c 20 76 29 3b 0d 0a 20 20 20 alue.", v);..
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13a90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
13aa0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 } else if (t
13ab0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 71 75 6f 74 .value === "quot
13ac0 6d 61 72 6b 22 20 26 26 20 28 6f 20 3d 3d 3d 20 mark" && (o ===
13ad0 22 2f 2a 6a 73 68 69 6e 74 22 29 29 20 7b 0d 0a "/*jshint")) {..
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13af0 20 20 20 20 73 77 69 74 63 68 20 28 76 2e 76 61 switch (v.va
13b00 6c 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 lue) {..
13b10 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
13b20 20 22 74 72 75 65 22 3a 0d 0a 20 20 20 20 20 20 "true":..
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13b40 20 20 6f 62 6a 2e 71 75 6f 74 6d 61 72 6b 20 3d obj.quotmark =
13b50 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13b70 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 break;..
13b80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
13b90 20 22 66 61 6c 73 65 22 3a 0d 0a 20 20 20 20 20 "false":..
13ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13bb0 20 20 20 6f 62 6a 2e 71 75 6f 74 6d 61 72 6b 20 obj.quotmark
13bc0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 = false;..
13bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13be0 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
13bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
13c00 73 65 20 22 64 6f 75 62 6c 65 22 3a 0d 0a 20 20 se "double":..
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13c20 20 20 63 61 73 65 20 22 73 69 6e 67 6c 65 22 3a case "single":
13c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13c40 20 20 20 20 20 20 20 20 20 20 6f 62 6a 2e 71 75 obj.qu
13c50 6f 74 6d 61 72 6b 20 3d 20 76 2e 76 61 6c 75 65 otmark = v.value
13c60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
13c70 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
13c80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
13c90 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d default:.
13ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
13cb0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 error("
13cc0 42 61 64 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 Bad option value
13cd0 2e 22 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20 .", v);..
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
13cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13d00 7d 20 65 6c 73 65 20 69 66 20 28 76 2e 76 61 6c } else if (v.val
13d10 75 65 20 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c ue === "true" ||
13d20 20 76 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 66 61 v.value === "fa
13d30 6c 73 65 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 lse") {..
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
13d50 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73 6c 69 6e 74 (o === "/*jslint
13d60 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6e tn
13d80 20 3d 20 72 65 6e 61 6d 65 64 4f 70 74 69 6f 6e = renamedOption
13d90 73 5b 74 2e 76 61 6c 75 65 5d 20 7c 7c 20 74 2e s[t.value] || t.
13da0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 value;..
13db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13dc0 6f 62 6a 5b 74 6e 5d 20 3d 20 76 2e 76 61 6c 75 obj[tn] = v.valu
13dd0 65 20 3d 3d 3d 20 22 74 72 75 65 22 3b 0d 0a 20 e === "true";..
13de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13df0 20 20 20 20 20 20 20 69 66 20 28 69 6e 76 65 72 if (inver
13e00 74 65 64 4f 70 74 69 6f 6e 73 5b 74 6e 5d 20 21 tedOptions[tn] !
13e10 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 0d == undefined) {.
13e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a obj
13e40 5b 74 6e 5d 20 3d 20 21 6f 62 6a 5b 74 6e 5d 3b [tn] = !obj[tn];
13e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13e60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
13e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13e80 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
13e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13ea0 20 20 20 6f 62 6a 5b 74 2e 76 61 6c 75 65 5d 20 obj[t.value]
13eb0 3d 20 76 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 74 = v.value === "t
13ec0 72 75 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 rue";..
13ed0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a }....
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13ef0 20 20 20 20 69 66 20 28 74 2e 76 61 6c 75 65 20 if (t.value
13f00 3d 3d 3d 20 22 6e 65 77 63 61 70 22 29 0d 0a 20 === "newcap")..
13f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13f20 20 20 20 20 20 20 20 6f 62 6a 5b 22 28 65 78 70 obj["(exp
13f30 6c 69 63 69 74 4e 65 77 63 61 70 29 22 5d 20 3d licitNewcap)"] =
13f40 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
13f50 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
13f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13f70 20 20 20 20 20 20 65 72 72 6f 72 28 22 42 61 64 error("Bad
13f80 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 2e 22 2c option value.",
13f90 20 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 v);..
13fa0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
13fb0 20 20 20 20 20 20 20 20 20 74 20 3d 20 6c 65 78 t = lex
13fc0 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20 20 20 20 20 .token();..
13fd0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d } else {.
13fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
13ff0 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73 if (o === "/*js
14000 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d 3d 20 22 hint" || o === "
14010 2f 2a 6a 73 6c 69 6e 74 22 29 20 7b 0d 0a 20 20 /*jslint") {..
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14030 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e 67 error("Missing
14040 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 2e 22 2c option value.",
14050 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 t);..
14060 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
14070 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 5b 74 obj[t
14080 2e 76 61 6c 75 65 5d 20 3d 20 66 61 6c 73 65 3b .value] = false;
14090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
140a0 20 20 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f if (o === "/
140b0 2a 67 6c 6f 62 61 6c 22 20 26 26 20 6d 69 6e 75 *global" && minu
140c0 73 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20 s === true) {..
140d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
140e0 20 20 20 4a 53 48 49 4e 54 2e 62 6c 61 63 6b 6c JSHINT.blackl
140f0 69 73 74 5b 74 2e 76 61 6c 75 65 5d 20 3d 20 74 ist[t.value] = t
14100 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 .value;..
14110 20 20 20 20 20 20 20 20 20 20 20 20 20 75 70 64 upd
14120 61 74 65 50 72 65 64 65 66 69 6e 65 64 28 29 3b atePredefined();
14130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
14140 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
14150 20 20 20 20 20 20 20 74 20 3d 20 76 3b 0d 0a 20 t = v;..
14160 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
14170 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
14180 20 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a if (o === "/*
14190 6d 65 6d 62 65 72 73 22 29 20 7b 0d 0a 20 20 20 members") {..
141a0 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e option.
141b0 71 75 6f 74 6d 61 72 6b 20 3d 20 71 75 6f 74 6d quotmark = quotm
141c0 61 72 6b 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 arkValue;..
141d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
141e0 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e combine(predefin
141f0 65 64 2c 20 70 72 65 64 65 66 29 3b 0d 0a 0d 0a ed, predef);....
14200 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
14210 20 6b 65 79 20 69 6e 20 70 72 65 64 65 66 29 20 key in predef)
14220 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
14230 66 20 28 69 73 5f 6f 77 6e 28 70 72 65 64 65 66 f (is_own(predef
14240 2c 20 6b 65 79 29 29 20 7b 0d 0a 20 20 20 20 20 , key)) {..
14250 20 20 20 20 20 20 20 20 20 20 20 64 65 63 6c 61 decla
14260 72 65 64 5b 6b 65 79 5d 20 3d 20 6e 74 3b 0d 0a red[key] = nt;..
14270 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
14280 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
14290 20 20 20 20 69 66 20 28 66 69 6c 74 65 72 29 20 if (filter)
142a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 {.. a
142b0 73 73 75 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 ssume();..
142c0 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a }.. }......
142d0 2f 2f 20 57 65 20 6e 65 65 64 20 61 20 70 65 65 // We need a pee
142e0 6b 20 66 75 6e 63 74 69 6f 6e 2e 20 49 66 20 69 k function. If i
142f0 74 20 68 61 73 20 61 6e 20 61 72 67 75 6d 65 6e t has an argumen
14300 74 2c 20 69 74 20 70 65 65 6b 73 20 74 68 61 74 t, it peeks that
14310 20 6d 75 63 68 20 66 61 72 74 68 65 72 0d 0a 2f much farther../
14320 2f 20 61 68 65 61 64 2e 20 49 74 20 69 73 20 75 / ahead. It is u
14330 73 65 64 20 74 6f 20 64 69 73 74 69 6e 67 75 69 sed to distingui
14340 73 68 0d 0a 2f 2f 20 20 20 20 20 66 6f 72 20 28 sh..// for (
14350 20 76 61 72 20 69 20 69 6e 20 2e 2e 2e 0d 0a 2f var i in ...../
14360 2f 20 66 72 6f 6d 0d 0a 2f 2f 20 20 20 20 20 66 / from..// f
14370 6f 72 20 28 20 76 61 72 20 69 20 3d 20 2e 2e 2e or ( var i = ...
14380 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e .... function
14390 20 70 65 65 6b 28 70 29 20 7b 0d 0a 20 20 20 20 peek(p) {..
143a0 20 20 20 20 76 61 72 20 69 20 3d 20 70 20 7c 7c var i = p ||
143b0 20 30 2c 20 6a 20 3d 20 30 2c 20 74 3b 0d 0a 0d 0, j = 0, t;...
143c0 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 . while (
143d0 6a 20 3c 3d 20 69 29 20 7b 0d 0a 20 20 20 20 20 j <= i) {..
143e0 20 20 20 20 20 20 20 74 20 3d 20 6c 6f 6f 6b 61 t = looka
143f0 68 65 61 64 5b 6a 5d 3b 0d 0a 20 20 20 20 20 20 head[j];..
14400 20 20 20 20 20 20 69 66 20 28 21 74 29 20 7b 0d if (!t) {.
14410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
14420 20 74 20 3d 20 6c 6f 6f 6b 61 68 65 61 64 5b 6a t = lookahead[j
14430 5d 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b ] = lex.token();
14440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
14450 0a 20 20 20 20 20 20 20 20 20 20 20 20 6a 20 2b . j +
14460 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d = 1;.. }.
14470 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
14480 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 0d t;.. }.......
14490 0a 2f 2f 20 50 72 6f 64 75 63 65 20 74 68 65 20 .// Produce the
144a0 6e 65 78 74 20 74 6f 6b 65 6e 2e 20 49 74 20 6c next token. It l
144b0 6f 6f 6b 73 20 66 6f 72 20 70 72 6f 67 72 61 6d ooks for program
144c0 6d 69 6e 67 20 65 72 72 6f 72 73 2e 0d 0a 0d 0a ming errors.....
144d0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 64 76 function adv
144e0 61 6e 63 65 28 69 64 2c 20 74 29 20 7b 0d 0a 20 ance(id, t) {..
144f0 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 switch (t
14500 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20 20 20 20 oken.id) {..
14510 20 20 20 20 63 61 73 65 20 22 28 6e 75 6d 62 65 case "(numbe
14520 72 29 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 r)":..
14530 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e if (nexttoken.
14540 69 64 20 3d 3d 3d 20 22 2e 22 29 20 7b 0d 0a 20 id === ".") {..
14550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
14560 61 72 6e 69 6e 67 28 22 41 20 64 6f 74 20 66 6f arning("A dot fo
14570 6c 6c 6f 77 69 6e 67 20 61 20 6e 75 6d 62 65 72 llowing a number
14580 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73 65 64 can be confused
14590 20 77 69 74 68 20 61 20 64 65 63 69 6d 61 6c 20 with a decimal
145a0 70 6f 69 6e 74 2e 22 2c 20 74 6f 6b 65 6e 29 3b point.", token);
145b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
145c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 . bre
145d0 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 ak;.. cas
145e0 65 20 22 2d 22 3a 0d 0a 20 20 20 20 20 20 20 20 e "-":..
145f0 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 if (nexttoke
14600 6e 2e 69 64 20 3d 3d 3d 20 22 2d 22 20 7c 7c 20 n.id === "-" ||
14610 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d nexttoken.id ===
14620 20 22 2d 2d 22 29 20 7b 0d 0a 20 20 20 20 20 20 "--") {..
14630 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
14640 67 28 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e g("Confusing min
14650 75 73 73 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20 usses.");..
14660 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
14670 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 break;..
14680 20 20 20 20 20 20 63 61 73 65 20 22 2b 22 3a 0d case "+":.
14690 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
146a0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d (nexttoken.id ==
146b0 3d 20 22 2b 22 20 7c 7c 20 6e 65 78 74 74 6f 6b = "+" || nexttok
146c0 65 6e 2e 69 64 20 3d 3d 3d 20 22 2b 2b 22 29 20 en.id === "++")
146d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
146e0 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e 66 warning("Conf
146f0 75 73 69 6e 67 20 70 6c 75 73 73 65 73 2e 22 29 using plusses.")
14700 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
14710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .. br
14720 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d eak;.. }.
14730 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 ... if (t
14740 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 22 28 oken.type === "(
14750 73 74 72 69 6e 67 29 22 20 7c 7c 20 74 6f 6b 65 string)" || toke
14760 6e 2e 69 64 65 6e 74 69 66 69 65 72 29 20 7b 0d n.identifier) {.
14770 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 6f . ano
14780 6e 6e 61 6d 65 20 3d 20 74 6f 6b 65 6e 2e 76 61 nname = token.va
14790 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d lue;.. }.
147a0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 ... if (i
147b0 64 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 d && nexttoken.i
147c0 64 20 21 3d 3d 20 69 64 29 20 7b 0d 0a 20 20 20 d !== id) {..
147d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 29 20 if (t)
147e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
147f0 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e if (nexttoken
14800 2e 69 64 20 3d 3d 3d 20 22 28 65 6e 64 29 22 29 .id === "(end)")
14810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
14820 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
14830 22 55 6e 6d 61 74 63 68 65 64 20 27 7b 61 7d 27 "Unmatched '{a}'
14840 2e 22 2c 20 74 2c 20 74 2e 69 64 29 3b 0d 0a 20 .", t, t.id);..
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
14860 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 else {..
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
14880 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 27 ning("Expected '
14890 7b 61 7d 27 20 74 6f 20 6d 61 74 63 68 20 27 7b {a}' to match '{
148a0 62 7d 27 20 66 72 6f 6d 20 6c 69 6e 65 20 7b 63 b}' from line {c
148b0 7d 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 } and instead sa
148c0 77 20 27 7b 64 7d 27 2e 22 2c 0d 0a 20 20 20 20 w '{d}'.",..
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
148e0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
148f0 6e 2c 20 69 64 2c 20 74 2e 69 64 2c 20 74 2e 6c n, id, t.id, t.l
14900 69 6e 65 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 ine, nexttoken.v
14910 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 alue);..
14920 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
14930 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
14940 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65 (nexttoken.type
14950 20 21 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65 !== "(identifie
14960 72 29 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 r)" ||..
14970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14980 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 nexttoken.va
14990 6c 75 65 20 21 3d 3d 20 69 64 29 20 7b 0d 0a 20 lue !== id) {..
149a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
149b0 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 arning("Expected
149c0 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73 74 65 '{a}' and inste
149d0 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22 2c 0d ad saw '{b}'.",.
149e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
149f0 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b nexttok
14a00 65 6e 2c 20 69 64 2c 20 6e 65 78 74 74 6f 6b 65 en, id, nexttoke
14a10 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 n.value);..
14a20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
14a30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 }.... p
14a40 72 65 76 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e revtoken = token
14a50 3b 0d 0a 20 20 20 20 20 20 20 20 74 6f 6b 65 6e ;.. token
14a60 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 = nexttoken;..
14a70 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 for (;;)
14a80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {.. n
14a90 65 78 74 74 6f 6b 65 6e 20 3d 20 6c 6f 6f 6b 61 exttoken = looka
14aa0 68 65 61 64 2e 73 68 69 66 74 28 29 20 7c 7c 20 head.shift() ||
14ab0 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20 20 lex.token();..
14ac0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 if (ne
14ad0 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 xttoken.id === "
14ae0 28 65 6e 64 29 22 20 7c 7c 20 6e 65 78 74 74 6f (end)" || nextto
14af0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 65 72 72 ken.id === "(err
14b00 6f 72 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 or)") {..
14b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b return;
14b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
14b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
14b40 28 6e 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65 20 (nexttoken.type
14b50 3d 3d 3d 20 22 73 70 65 63 69 61 6c 22 29 20 7b === "special") {
14b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
14b70 20 20 64 6f 4f 70 74 69 6f 6e 28 29 3b 0d 0a 20 doOption();..
14b80 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
14b90 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e {..
14ba0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b if (nexttok
14bb0 65 6e 2e 69 64 20 21 3d 3d 20 22 28 65 6e 64 6c en.id !== "(endl
14bc0 69 6e 65 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 ine)") {..
14bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
14be0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
14bf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
14c00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
14c10 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 2f 2f }.. }......//
14c20 20 54 68 69 73 20 69 73 20 74 68 65 20 68 65 61 This is the hea
14c30 72 74 20 6f 66 20 4a 53 48 49 4e 54 2c 20 74 68 rt of JSHINT, th
14c40 65 20 50 72 61 74 74 20 70 61 72 73 65 72 2e 20 e Pratt parser.
14c50 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 70 In addition to p
14c60 61 72 73 69 6e 67 2c 20 69 74 0d 0a 2f 2f 20 69 arsing, it..// i
14c70 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 64 s looking for ad
14c80 20 68 6f 63 20 6c 69 6e 74 20 70 61 74 74 65 72 hoc lint patter
14c90 6e 73 2e 20 57 65 20 61 64 64 20 2e 66 75 64 20 ns. We add .fud
14ca0 74 6f 20 50 72 61 74 74 27 73 20 6d 6f 64 65 6c to Pratt's model
14cb0 2c 20 77 68 69 63 68 20 69 73 0d 0a 2f 2f 20 6c , which is..// l
14cc0 69 6b 65 20 2e 6e 75 64 20 65 78 63 65 70 74 20 ike .nud except
14cd0 74 68 61 74 20 69 74 20 69 73 20 6f 6e 6c 79 20 that it is only
14ce0 75 73 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73 used on the firs
14cf0 74 20 74 6f 6b 65 6e 20 6f 66 20 61 20 73 74 61 t token of a sta
14d00 74 65 6d 65 6e 74 2e 0d 0a 2f 2f 20 48 61 76 69 tement...// Havi
14d10 6e 67 20 2e 66 75 64 20 6d 61 6b 65 73 20 69 74 ng .fud makes it
14d20 20 6d 75 63 68 20 65 61 73 69 65 72 20 74 6f 20 much easier to
14d30 64 65 66 69 6e 65 20 73 74 61 74 65 6d 65 6e 74 define statement
14d40 2d 6f 72 69 65 6e 74 65 64 20 6c 61 6e 67 75 61 -oriented langua
14d50 67 65 73 20 6c 69 6b 65 0d 0a 2f 2f 20 4a 61 76 ges like..// Jav
14d60 61 53 63 72 69 70 74 2e 20 49 20 72 65 74 61 69 aScript. I retai
14d70 6e 65 64 20 50 72 61 74 74 27 73 20 6e 6f 6d 65 ned Pratt's nome
14d80 6e 63 6c 61 74 75 72 65 2e 0d 0a 0d 0a 2f 2f 20 nclature.....//
14d90 2e 6e 75 64 20 20 20 20 20 4e 75 6c 6c 20 64 65 .nud Null de
14da0 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20 2e 66 75 notation..// .fu
14db0 64 20 20 20 20 20 46 69 72 73 74 20 6e 75 6c 6c d First null
14dc0 20 64 65 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20 denotation..//
14dd0 2e 6c 65 64 20 20 20 20 20 4c 65 66 74 20 64 65 .led Left de
14de0 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20 20 6c 62 notation..// lb
14df0 70 20 20 20 20 20 4c 65 66 74 20 62 69 6e 64 69 p Left bindi
14e00 6e 67 20 70 6f 77 65 72 0d 0a 2f 2f 20 20 72 62 ng power..// rb
14e10 70 20 20 20 20 20 52 69 67 68 74 20 62 69 6e 64 p Right bind
14e20 69 6e 67 20 70 6f 77 65 72 0d 0a 0d 0a 2f 2f 20 ing power....//
14e30 54 68 65 79 20 61 72 65 20 65 6c 65 6d 65 6e 74 They are element
14e40 73 20 6f 66 20 74 68 65 20 70 61 72 73 69 6e 67 s of the parsing
14e50 20 6d 65 74 68 6f 64 20 63 61 6c 6c 65 64 20 54 method called T
14e60 6f 70 20 44 6f 77 6e 20 4f 70 65 72 61 74 6f 72 op Down Operator
14e70 20 50 72 65 63 65 64 65 6e 63 65 2e 0d 0a 0d 0a Precedence.....
14e80 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 78 70 function exp
14e90 72 65 73 73 69 6f 6e 28 72 62 70 2c 20 69 6e 69 ression(rbp, ini
14ea0 74 69 61 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 tial) {..
14eb0 20 76 61 72 20 6c 65 66 74 2c 20 69 73 41 72 72 var left, isArr
14ec0 61 79 20 3d 20 66 61 6c 73 65 2c 20 69 73 4f 62 ay = false, isOb
14ed0 6a 65 63 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d ject = false;...
14ee0 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 . if (nex
14ef0 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 ttoken.id === "(
14f00 65 6e 64 29 22 29 0d 0a 20 20 20 20 20 20 20 20 end)")..
14f10 20 20 20 20 65 72 72 6f 72 28 22 55 6e 65 78 70 error("Unexp
14f20 65 63 74 65 64 20 65 61 72 6c 79 20 65 6e 64 20 ected early end
14f30 6f 66 20 70 72 6f 67 72 61 6d 2e 22 2c 20 74 6f of program.", to
14f40 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 ken);....
14f50 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 advance();..
14f60 20 20 20 20 20 69 66 20 28 69 6e 69 74 69 61 6c if (initial
14f70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
14f80 20 61 6e 6f 6e 6e 61 6d 65 20 3d 20 22 61 6e 6f anonname = "ano
14f90 6e 79 6d 6f 75 73 22 3b 0d 0a 20 20 20 20 20 20 nymous";..
14fa0 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 76 65 funct["(ve
14fb0 72 62 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 76 61 rb)"] = token.va
14fc0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d lue;.. }.
14fd0 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 69 . if (ini
14fe0 74 69 61 6c 20 3d 3d 3d 20 74 72 75 65 20 26 26 tial === true &&
14ff0 20 74 6f 6b 65 6e 2e 66 75 64 29 20 7b 0d 0a 20 token.fud) {..
15000 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 20 left
15010 3d 20 74 6f 6b 65 6e 2e 66 75 64 28 29 3b 0d 0a = token.fud();..
15020 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
15030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
15040 20 28 74 6f 6b 65 6e 2e 6e 75 64 29 20 7b 0d 0a (token.nud) {..
15050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15060 6c 65 66 74 20 3d 20 74 6f 6b 65 6e 2e 6e 75 64 left = token.nud
15070 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ();..
15080 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
15090 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
150a0 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d exttoken.type ==
150b0 3d 20 22 28 6e 75 6d 62 65 72 29 22 20 26 26 20 = "(number)" &&
150c0 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 2e 22 token.id === "."
150d0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
150e0 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
150f0 28 22 41 20 6c 65 61 64 69 6e 67 20 64 65 63 69 ("A leading deci
15100 6d 61 6c 20 70 6f 69 6e 74 20 63 61 6e 20 62 65 mal point can be
15110 20 63 6f 6e 66 75 73 65 64 20 77 69 74 68 20 61 confused with a
15120 20 64 6f 74 3a 20 27 2e 7b 61 7d 27 2e 22 2c 0d dot: '.{a}'.",.
15130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
15140 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b tok
15150 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 en, nexttoken.va
15160 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 lue);..
15170 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e advan
15180 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ce();..
15190 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
151a0 6e 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 n token;..
151b0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
151c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
151d0 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 45 error("E
151e0 78 70 65 63 74 65 64 20 61 6e 20 69 64 65 6e 74 xpected an ident
151f0 69 66 69 65 72 20 61 6e 64 20 69 6e 73 74 65 61 ifier and instea
15200 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 0d 0a d saw '{a}'.",..
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15220 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke
15230 6e 2c 20 74 6f 6b 65 6e 2e 69 64 29 3b 0d 0a 20 n, token.id);..
15240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
15250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
15260 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 . whi
15270 6c 65 20 28 72 62 70 20 3c 20 6e 65 78 74 74 6f le (rbp < nextto
15280 6b 65 6e 2e 6c 62 70 29 20 7b 0d 0a 20 20 20 20 ken.lbp) {..
15290 20 20 20 20 20 20 20 20 20 20 20 20 69 73 41 72 isAr
152a0 72 61 79 20 3d 20 74 6f 6b 65 6e 2e 76 61 6c 75 ray = token.valu
152b0 65 20 3d 3d 3d 20 22 41 72 72 61 79 22 3b 0d 0a e === "Array";..
152c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
152d0 69 73 4f 62 6a 65 63 74 20 3d 20 74 6f 6b 65 6e isObject = token
152e0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 4f 62 6a 65 .value === "Obje
152f0 63 74 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ct";....
15300 20 20 20 20 20 20 20 20 2f 2f 20 23 35 32 37 2c // #527,
15310 20 6e 65 77 20 46 6f 6f 2e 41 72 72 61 79 28 29 new Foo.Array()
15320 2c 20 46 6f 6f 2e 41 72 72 61 79 28 29 2c 20 6e , Foo.Array(), n
15330 65 77 20 46 6f 6f 2e 4f 62 6a 65 63 74 28 29 2c ew Foo.Object(),
15340 20 46 6f 6f 2e 4f 62 6a 65 63 74 28 29 0d 0a 20 Foo.Object()..
15350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
15360 2f 20 4c 69 6e 65 20 62 72 65 61 6b 73 20 69 6e / Line breaks in
15370 20 49 66 53 74 61 74 65 6d 65 6e 74 20 68 65 61 IfStatement hea
15380 64 73 20 65 78 69 73 74 20 74 6f 20 73 61 74 69 ds exist to sati
15390 73 66 79 20 74 68 65 20 63 68 65 63 6b 4a 53 48 sfy the checkJSH
153a0 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 int..
153b0 20 20 20 20 20 2f 2f 20 22 4c 69 6e 65 20 74 6f // "Line to
153c0 6f 20 6c 6f 6e 67 2e 22 20 65 72 72 6f 72 2e 0d o long." error..
153d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
153e0 20 69 66 20 28 6c 65 66 74 20 26 26 20 28 6c 65 if (left && (le
153f0 66 74 2e 76 61 6c 75 65 20 7c 7c 20 28 6c 65 66 ft.value || (lef
15400 74 2e 66 69 72 73 74 20 26 26 20 6c 65 66 74 2e t.first && left.
15410 66 69 72 73 74 2e 76 61 6c 75 65 29 29 29 20 7b first.value))) {
15420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
15430 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 // If the
15440 6c 65 66 74 2e 76 61 6c 75 65 20 69 73 20 6e 6f left.value is no
15450 74 20 22 6e 65 77 22 2c 20 6f 72 20 74 68 65 20 t "new", or the
15460 6c 65 66 74 2e 66 69 72 73 74 2e 76 61 6c 75 65 left.first.value
15470 20 69 73 20 61 20 22 2e 22 0d 0a 20 20 20 20 20 is a "."..
15480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
15490 2f 20 74 68 65 6e 20 73 61 66 65 6c 79 20 61 73 / then safely as
154a0 73 75 6d 65 20 74 68 61 74 20 74 68 69 73 20 69 sume that this i
154b0 73 20 6e 6f 74 20 22 6e 65 77 20 41 72 72 61 79 s not "new Array
154c0 28 29 22 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 ()" and possibly
154d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
154e0 20 20 20 20 20 20 2f 2f 20 6e 6f 74 20 22 6e 65 // not "ne
154f0 77 20 4f 62 6a 65 63 74 28 29 22 2e 2e 2e 0d 0a w Object()".....
15500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15510 20 20 20 20 69 66 20 28 6c 65 66 74 2e 76 61 6c if (left.val
15520 75 65 20 21 3d 3d 20 22 6e 65 77 22 20 7c 7c 0d ue !== "new" ||.
15530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
15540 20 20 20 20 20 20 20 28 6c 65 66 74 2e 66 69 72 (left.fir
15550 73 74 20 26 26 20 6c 65 66 74 2e 66 69 72 73 74 st && left.first
15560 2e 76 61 6c 75 65 20 26 26 20 6c 65 66 74 2e 66 .value && left.f
15570 69 72 73 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 irst.value === "
15580 2e 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 .")) {..
15590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
155a0 69 73 41 72 72 61 79 20 3d 20 66 61 6c 73 65 3b isArray = false;
155b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
155c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 2e 2e 2e // ...
155d0 49 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 4f In the case of O
155e0 62 6a 65 63 74 2c 20 69 66 20 74 68 65 20 6c 65 bject, if the le
155f0 66 74 2e 76 61 6c 75 65 20 61 6e 64 20 74 6f 6b ft.value and tok
15600 65 6e 2e 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 en.value..
15610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15620 20 20 2f 2f 20 61 72 65 20 6e 6f 74 20 65 71 75 // are not equ
15630 61 6c 2c 20 74 68 65 6e 20 73 61 66 65 6c 79 20 al, then safely
15640 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 69 73 assume that this
15650 20 6e 6f 74 20 22 6e 65 77 20 4f 62 6a 65 63 74 not "new Object
15660 28 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ()"..
15670 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
15680 28 6c 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d 20 (left.value !==
15690 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 20 7b 0d 0a token.value) {..
156a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
156b0 20 20 20 20 20 20 20 20 20 20 20 20 69 73 4f 62 isOb
156c0 6a 65 63 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 ject = false;..
156d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
156e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
15700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
15710 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 }....
15720 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 29 3b advance();
15730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
15740 20 20 69 66 20 28 69 73 41 72 72 61 79 20 26 26 if (isArray &&
15750 20 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 token.id === "(
15760 22 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 " && nexttoken.i
15770 64 20 3d 3d 3d 20 22 29 22 29 0d 0a 20 20 20 20 d === ")")..
15780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15790 77 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68 65 warning("Use the
157a0 20 61 72 72 61 79 20 6c 69 74 65 72 61 6c 20 6e array literal n
157b0 6f 74 61 74 69 6f 6e 20 5b 5d 2e 22 2c 20 74 6f otation [].", to
157c0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
157d0 20 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 6a if (isObj
157e0 65 63 74 20 26 26 20 74 6f 6b 65 6e 2e 69 64 20 ect && token.id
157f0 3d 3d 3d 20 22 28 22 20 26 26 20 6e 65 78 74 74 === "(" && nextt
15800 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 29 22 29 oken.id === ")")
15810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
15820 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 warning("U
15830 73 65 20 74 68 65 20 6f 62 6a 65 63 74 20 6c 69 se the object li
15840 74 65 72 61 6c 20 6e 6f 74 61 74 69 6f 6e 20 7b teral notation {
15850 7d 2e 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 }.", token);..
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
15870 20 28 74 6f 6b 65 6e 2e 6c 65 64 29 20 7b 0d 0a (token.led) {..
15880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15890 20 20 20 20 6c 65 66 74 20 3d 20 74 6f 6b 65 6e left = token
158a0 2e 6c 65 64 28 6c 65 66 74 29 3b 0d 0a 20 20 20 .led(left);..
158b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
158c0 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 lse {..
158d0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
158e0 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 6f 70 ("Expected an op
158f0 65 72 61 74 6f 72 20 61 6e 64 20 69 6e 73 74 65 erator and inste
15900 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 0d ad saw '{a}'.",.
15910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
15920 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20 token,
15930 74 6f 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20 token.id);..
15940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
15950 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
15960 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
15970 20 72 65 74 75 72 6e 20 6c 65 66 74 3b 0d 0a 20 return left;..
15980 20 20 20 7d 0d 0a 0d 0a 0d 0a 2f 2f 20 46 75 6e }......// Fun
15990 63 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 66 6f ctions for confo
159a0 72 6d 61 6e 63 65 20 6f 66 20 73 74 79 6c 65 2e rmance of style.
159b0 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e .... function
159c0 20 61 64 6a 61 63 65 6e 74 28 6c 65 66 74 2c 20 adjacent(left,
159d0 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20 right) {..
159e0 20 20 6c 65 66 74 20 3d 20 6c 65 66 74 20 7c 7c left = left ||
159f0 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 token;..
15a00 20 72 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c right = right |
15a10 7c 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 | nexttoken;..
15a20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
15a30 2e 77 68 69 74 65 29 20 7b 0d 0a 20 20 20 20 20 .white) {..
15a40 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e if (left.
15a50 63 68 61 72 61 63 74 65 72 20 21 3d 3d 20 72 69 character !== ri
15a60 67 68 74 2e 66 72 6f 6d 20 26 26 20 6c 65 66 74 ght.from && left
15a70 2e 6c 69 6e 65 20 3d 3d 3d 20 72 69 67 68 74 2e .line === right.
15a80 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 line) {..
15a90 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 66 72 left.fr
15aa0 6f 6d 20 2b 3d 20 28 6c 65 66 74 2e 63 68 61 72 om += (left.char
15ab0 61 63 74 65 72 20 2d 20 6c 65 66 74 2e 66 72 6f acter - left.fro
15ac0 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 m);..
15ad0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
15ae0 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20 61 expected space a
15af0 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c 20 6c 65 fter '{a}'.", le
15b00 66 74 2c 20 6c 65 66 74 2e 76 61 6c 75 65 29 3b ft, left.value);
15b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
15b20 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
15b30 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f }.... functio
15b40 6e 20 6e 6f 62 72 65 61 6b 28 6c 65 66 74 2c 20 n nobreak(left,
15b50 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20 right) {..
15b60 20 20 6c 65 66 74 20 3d 20 6c 65 66 74 20 7c 7c left = left ||
15b70 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 token;..
15b80 20 72 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c right = right |
15b90 7c 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 | nexttoken;..
15ba0 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
15bb0 2e 77 68 69 74 65 20 26 26 20 28 6c 65 66 74 2e .white && (left.
15bc0 63 68 61 72 61 63 74 65 72 20 21 3d 3d 20 72 69 character !== ri
15bd0 67 68 74 2e 66 72 6f 6d 20 7c 7c 20 6c 65 66 74 ght.from || left
15be0 2e 6c 69 6e 65 20 21 3d 3d 20 72 69 67 68 74 2e .line !== right.
15bf0 6c 69 6e 65 29 29 20 7b 0d 0a 20 20 20 20 20 20 line)) {..
15c00 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 warning("U
15c10 6e 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20 nexpected space
15c20 62 65 66 6f 72 65 20 27 7b 61 7d 27 2e 22 2c 20 before '{a}'.",
15c30 72 69 67 68 74 2c 20 72 69 67 68 74 2e 76 61 6c right, right.val
15c40 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d ue);.. }.
15c50 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 66 75 . }.... fu
15c60 6e 63 74 69 6f 6e 20 6e 6f 73 70 61 63 65 28 6c nction nospace(l
15c70 65 66 74 2c 20 72 69 67 68 74 29 20 7b 0d 0a 20 eft, right) {..
15c80 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20 6c 65 left = le
15c90 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b 0d 0a 20 20 ft || token;..
15ca0 20 20 20 20 20 20 72 69 67 68 74 20 3d 20 72 69 right = ri
15cb0 67 68 74 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e ght || nexttoken
15cc0 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f ;.. if (o
15cd0 70 74 69 6f 6e 2e 77 68 69 74 65 20 26 26 20 21 ption.white && !
15ce0 6c 65 66 74 2e 63 6f 6d 6d 65 6e 74 29 20 7b 0d left.comment) {.
15cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
15d00 28 6c 65 66 74 2e 6c 69 6e 65 20 3d 3d 3d 20 72 (left.line === r
15d10 69 67 68 74 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 ight.line) {..
15d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 ad
15d30 6a 61 63 65 6e 74 28 6c 65 66 74 2c 20 72 69 67 jacent(left, rig
15d40 68 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ht);..
15d50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a }.. }..
15d60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e }.... fun
15d70 63 74 69 6f 6e 20 6e 6f 6e 61 64 6a 61 63 65 6e ction nonadjacen
15d80 74 28 6c 65 66 74 2c 20 72 69 67 68 74 29 20 7b t(left, right) {
15d90 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 .. if (op
15da0 74 69 6f 6e 2e 77 68 69 74 65 29 20 7b 0d 0a 20 tion.white) {..
15db0 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 20 left
15dc0 3d 20 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b = left || token;
15dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 69 .. ri
15de0 67 68 74 20 3d 20 72 69 67 68 74 20 7c 7c 20 6e ght = right || n
15df0 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 exttoken;..
15e00 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e if (left.
15e10 76 61 6c 75 65 20 3d 3d 3d 20 22 3b 22 20 26 26 value === ";" &&
15e20 20 72 69 67 68 74 2e 76 61 6c 75 65 20 3d 3d 3d right.value ===
15e30 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 ";") {..
15e40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b return;
15e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
15e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
15e70 28 6c 65 66 74 2e 6c 69 6e 65 20 3d 3d 3d 20 72 (left.line === r
15e80 69 67 68 74 2e 6c 69 6e 65 20 26 26 20 6c 65 66 ight.line && lef
15e90 74 2e 63 68 61 72 61 63 74 65 72 20 3d 3d 3d 20 t.character ===
15ea0 72 69 67 68 74 2e 66 72 6f 6d 29 20 7b 0d 0a 20 right.from) {..
15eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c l
15ec0 65 66 74 2e 66 72 6f 6d 20 2b 3d 20 28 6c 65 66 eft.from += (lef
15ed0 74 2e 63 68 61 72 61 63 74 65 72 20 2d 20 6c 65 t.character - le
15ee0 66 74 2e 66 72 6f 6d 29 3b 0d 0a 20 20 20 20 20 ft.from);..
15ef0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
15f00 6e 67 28 22 4d 69 73 73 69 6e 67 20 73 70 61 63 ng("Missing spac
15f10 65 20 61 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c e after '{a}'.",
15f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
15f30 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2c 20 left,
15f40 6c 65 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 left.value);..
15f50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
15f60 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d }.. }...
15f70 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f . function no
15f80 62 72 65 61 6b 6e 6f 6e 61 64 6a 61 63 65 6e 74 breaknonadjacent
15f90 28 6c 65 66 74 2c 20 72 69 67 68 74 29 20 7b 0d (left, right) {.
15fa0 0a 20 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20 . left =
15fb0 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b 0d 0a left || token;..
15fc0 20 20 20 20 20 20 20 20 72 69 67 68 74 20 3d 20 right =
15fd0 72 69 67 68 74 20 7c 7c 20 6e 65 78 74 74 6f 6b right || nexttok
15fe0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 en;.. if
15ff0 28 21 6f 70 74 69 6f 6e 2e 6c 61 78 62 72 65 61 (!option.laxbrea
16000 6b 20 26 26 20 6c 65 66 74 2e 6c 69 6e 65 20 21 k && left.line !
16010 3d 3d 20 72 69 67 68 74 2e 6c 69 6e 65 29 20 7b == right.line) {
16020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 .. wa
16030 72 6e 69 6e 67 28 22 42 61 64 20 6c 69 6e 65 20 rning("Bad line
16040 62 72 65 61 6b 69 6e 67 20 62 65 66 6f 72 65 20 breaking before
16050 27 7b 61 7d 27 2e 22 2c 20 72 69 67 68 74 2c 20 '{a}'.", right,
16060 72 69 67 68 74 2e 69 64 29 3b 0d 0a 20 20 20 20 right.id);..
16070 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6f } else if (o
16080 70 74 69 6f 6e 2e 77 68 69 74 65 29 20 7b 0d 0a ption.white) {..
16090 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 left
160a0 20 3d 20 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e = left || token
160b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ;.. r
160c0 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c 7c 20 ight = right ||
160d0 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 nexttoken;..
160e0 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 if (left
160f0 2e 63 68 61 72 61 63 74 65 72 20 3d 3d 3d 20 72 .character === r
16100 69 67 68 74 2e 66 72 6f 6d 29 20 7b 0d 0a 20 20 ight.from) {..
16110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 le
16120 66 74 2e 66 72 6f 6d 20 2b 3d 20 28 6c 65 66 74 ft.from += (left
16130 2e 63 68 61 72 61 63 74 65 72 20 2d 20 6c 65 66 .character - lef
16140 74 2e 66 72 6f 6d 29 3b 0d 0a 20 20 20 20 20 20 t.from);..
16150 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
16160 67 28 22 4d 69 73 73 69 6e 67 20 73 70 61 63 65 g("Missing space
16170 20 61 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c 0d after '{a}'.",.
16180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
16190 20 20 20 20 20 20 20 20 20 6c 65 66 74 2c 20 6c left, l
161a0 65 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 eft.value);..
161b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
161c0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a }.. }....
161d0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e 64 function ind
161e0 65 6e 74 61 74 69 6f 6e 28 62 69 61 73 29 20 7b entation(bias) {
161f0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 3b .. var i;
16200 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 .. if (op
16210 74 69 6f 6e 2e 77 68 69 74 65 20 26 26 20 6e 65 tion.white && ne
16220 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 xttoken.id !== "
16230 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20 (end)") {..
16240 20 20 20 20 20 20 20 69 20 3d 20 69 6e 64 65 6e i = inden
16250 74 20 2b 20 28 62 69 61 73 20 7c 7c 20 30 29 3b t + (bias || 0);
16260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
16270 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d (nexttoken.from
16280 20 21 3d 3d 20 69 29 20 7b 0d 0a 20 20 20 20 20 !== i) {..
16290 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
162a0 6e 67 28 0d 0a 22 45 78 70 65 63 74 65 64 20 27 ng(.."Expected '
162b0 7b 61 7d 27 20 74 6f 20 68 61 76 65 20 61 6e 20 {a}' to have an
162c0 69 6e 64 65 6e 74 61 74 69 6f 6e 20 61 74 20 7b indentation at {
162d0 62 7d 20 69 6e 73 74 65 61 64 20 61 74 20 7b 63 b} instead at {c
162e0 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 }.",..
162f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 ne
16300 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b xttoken, nexttok
16310 65 6e 2e 76 61 6c 75 65 2c 20 69 2c 20 6e 65 78 en.value, i, nex
16320 74 74 6f 6b 65 6e 2e 66 72 6f 6d 29 3b 0d 0a 20 ttoken.from);..
16330 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
16340 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a }.. }..
16350 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e .. function n
16360 6f 6c 69 6e 65 62 72 65 61 6b 28 74 29 20 7b 0d olinebreak(t) {.
16370 0a 20 20 20 20 20 20 20 20 74 20 3d 20 74 20 7c . t = t |
16380 7c 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 | token;..
16390 20 20 69 66 20 28 74 2e 6c 69 6e 65 20 21 3d 3d if (t.line !==
163a0 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29 nexttoken.line)
163b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
163c0 77 61 72 6e 69 6e 67 28 22 4c 69 6e 65 20 62 72 warning("Line br
163d0 65 61 6b 69 6e 67 20 65 72 72 6f 72 20 27 7b 61 eaking error '{a
163e0 7d 27 2e 22 2c 20 74 2c 20 74 2e 76 61 6c 75 65 }'.", t, t.value
163f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 );.. }..
16400 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 }...... fu
16410 6e 63 74 69 6f 6e 20 63 6f 6d 6d 61 28 29 20 7b nction comma() {
16420 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 6f .. if (to
16430 6b 65 6e 2e 6c 69 6e 65 20 21 3d 3d 20 6e 65 78 ken.line !== nex
16440 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a ttoken.line) {..
16450 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
16460 21 6f 70 74 69 6f 6e 2e 6c 61 78 63 6f 6d 6d 61 !option.laxcomma
16470 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
16480 20 20 20 20 20 69 66 20 28 63 6f 6d 6d 61 2e 66 if (comma.f
16490 69 72 73 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 irst) {..
164a0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
164b0 6e 69 6e 67 28 22 43 6f 6d 6d 61 20 77 61 72 6e ning("Comma warn
164c0 69 6e 67 73 20 63 61 6e 20 62 65 20 74 75 72 6e ings can be turn
164d0 65 64 20 6f 66 66 20 77 69 74 68 20 27 6c 61 78 ed off with 'lax
164e0 63 6f 6d 6d 61 27 22 29 3b 0d 0a 20 20 20 20 20 comma'");..
164f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
16500 6f 6d 6d 61 2e 66 69 72 73 74 20 3d 20 66 61 6c omma.first = fal
16510 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se;..
16520 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
16530 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
16540 22 42 61 64 20 6c 69 6e 65 20 62 72 65 61 6b 69 "Bad line breaki
16550 6e 67 20 62 65 66 6f 72 65 20 27 7b 61 7d 27 2e ng before '{a}'.
16560 22 2c 20 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f ", token, nextto
16570 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20 ken.id);..
16580 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
16590 20 7d 20 65 6c 73 65 20 69 66 20 28 21 74 6f 6b } else if (!tok
165a0 65 6e 2e 63 6f 6d 6d 65 6e 74 20 26 26 20 74 6f en.comment && to
165b0 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20 21 3d ken.character !=
165c0 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d = nexttoken.from
165d0 20 26 26 20 6f 70 74 69 6f 6e 2e 77 68 69 74 65 && option.white
165e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
165f0 20 74 6f 6b 65 6e 2e 66 72 6f 6d 20 2b 3d 20 28 token.from += (
16600 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20 token.character
16610 2d 20 74 6f 6b 65 6e 2e 66 72 6f 6d 29 3b 0d 0a - token.from);..
16620 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
16630 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 64 20 ing("Unexpected
16640 73 70 61 63 65 20 61 66 74 65 72 20 27 7b 61 7d space after '{a}
16650 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 74 6f 6b 65 '.", token, toke
16660 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 n.value);..
16670 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 61 64 }.. ad
16680 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20 20 20 vance(",");..
16690 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 nonadjacent
166a0 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 (token, nexttoke
166b0 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a n);.. }......
166c0 2f 2f 20 46 75 6e 63 74 69 6f 6e 61 6c 20 63 6f // Functional co
166d0 6e 73 74 72 75 63 74 6f 72 73 20 66 6f 72 20 6d nstructors for m
166e0 61 6b 69 6e 67 20 74 68 65 20 73 79 6d 62 6f 6c aking the symbol
166f0 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 69 s that will be i
16700 6e 68 65 72 69 74 65 64 20 62 79 0d 0a 2f 2f 20 nherited by..//
16710 74 6f 6b 65 6e 73 2e 0d 0a 0d 0a 20 20 20 20 66 tokens..... f
16720 75 6e 63 74 69 6f 6e 20 73 79 6d 62 6f 6c 28 73 unction symbol(s
16730 2c 20 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 , p) {..
16740 76 61 72 20 78 20 3d 20 73 79 6e 74 61 78 5b 73 var x = syntax[s
16750 5d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 ];.. if (
16760 21 78 20 7c 7c 20 74 79 70 65 6f 66 20 78 20 21 !x || typeof x !
16770 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a == "object") {..
16780 20 20 20 20 20 20 20 20 20 20 20 20 73 79 6e 74 synt
16790 61 78 5b 73 5d 20 3d 20 78 20 3d 20 7b 0d 0a 20 ax[s] = x = {..
167a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
167b0 64 3a 20 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 d: s,..
167c0 20 20 20 20 20 20 20 6c 62 70 3a 20 70 2c 0d 0a lbp: p,..
167d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
167e0 76 61 6c 75 65 3a 20 73 0d 0a 20 20 20 20 20 20 value: s..
167f0 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 };..
16800 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 }.. ret
16810 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a 0d urn x;.. }...
16820 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 ... function
16830 64 65 6c 69 6d 28 73 29 20 7b 0d 0a 20 20 20 20 delim(s) {..
16840 20 20 20 20 72 65 74 75 72 6e 20 73 79 6d 62 6f return symbo
16850 6c 28 73 2c 20 30 29 3b 0d 0a 20 20 20 20 7d 0d l(s, 0);.. }.
16860 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f ..... functio
16870 6e 20 73 74 6d 74 28 73 2c 20 66 29 20 7b 0d 0a n stmt(s, f) {..
16880 20 20 20 20 20 20 20 20 76 61 72 20 78 20 3d 20 var x =
16890 64 65 6c 69 6d 28 73 29 3b 0d 0a 20 20 20 20 20 delim(s);..
168a0 20 20 20 78 2e 69 64 65 6e 74 69 66 69 65 72 20 x.identifier
168b0 3d 20 78 2e 72 65 73 65 72 76 65 64 20 3d 20 74 = x.reserved = t
168c0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e rue;.. x.
168d0 66 75 64 20 3d 20 66 3b 0d 0a 20 20 20 20 20 20 fud = f;..
168e0 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 return x;..
168f0 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 }...... func
16900 74 69 6f 6e 20 62 6c 6f 63 6b 73 74 6d 74 28 73 tion blockstmt(s
16910 2c 20 66 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 , f) {..
16920 76 61 72 20 78 20 3d 20 73 74 6d 74 28 73 2c 20 var x = stmt(s,
16930 66 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 62 f);.. x.b
16940 6c 6f 63 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20 lock = true;..
16950 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d return x;.
16960 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 . }......
16970 66 75 6e 63 74 69 6f 6e 20 72 65 73 65 72 76 65 function reserve
16980 4e 61 6d 65 28 78 29 20 7b 0d 0a 20 20 20 20 20 Name(x) {..
16990 20 20 20 76 61 72 20 63 20 3d 20 78 2e 69 64 2e var c = x.id.
169a0 63 68 61 72 41 74 28 30 29 3b 0d 0a 20 20 20 20 charAt(0);..
169b0 20 20 20 20 69 66 20 28 28 63 20 3e 3d 20 22 61 if ((c >= "a
169c0 22 20 26 26 20 63 20 3c 3d 20 22 7a 22 29 20 7c " && c <= "z") |
169d0 7c 20 28 63 20 3e 3d 20 22 41 22 20 26 26 20 63 | (c >= "A" && c
169e0 20 3c 3d 20 22 5a 22 29 29 20 7b 0d 0a 20 20 20 <= "Z")) {..
169f0 20 20 20 20 20 20 20 20 20 78 2e 69 64 65 6e 74 x.ident
16a00 69 66 69 65 72 20 3d 20 78 2e 72 65 73 65 72 76 ifier = x.reserv
16a10 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 ed = true;..
16a20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 }.. r
16a30 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d eturn x;.. }.
16a40 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f ..... functio
16a50 6e 20 70 72 65 66 69 78 28 73 2c 20 66 29 20 7b n prefix(s, f) {
16a60 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20 .. var x
16a70 3d 20 73 79 6d 62 6f 6c 28 73 2c 20 31 35 30 29 = symbol(s, 150)
16a80 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 73 65 72 ;.. reser
16a90 76 65 4e 61 6d 65 28 78 29 3b 0d 0a 20 20 20 20 veName(x);..
16aa0 20 20 20 20 78 2e 6e 75 64 20 3d 20 28 74 79 70 x.nud = (typ
16ab0 65 6f 66 20 66 20 3d 3d 3d 20 22 66 75 6e 63 74 eof f === "funct
16ac0 69 6f 6e 22 29 20 3f 20 66 20 3a 20 66 75 6e 63 ion") ? f : func
16ad0 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 tion () {..
16ae0 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 this.righ
16af0 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31 t = expression(1
16b00 35 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 50);..
16b10 20 20 74 68 69 73 2e 61 72 69 74 79 20 3d 20 22 this.arity = "
16b20 75 6e 61 72 79 22 3b 0d 0a 20 20 20 20 20 20 20 unary";..
16b30 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 64 if (this.id
16b40 20 3d 3d 3d 20 22 2b 2b 22 20 7c 7c 20 74 68 69 === "++" || thi
16b50 73 2e 69 64 20 3d 3d 3d 20 22 2d 2d 22 29 20 7b s.id === "--") {
16b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
16b70 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 6c 75 if (option.plu
16b80 73 70 6c 75 73 29 20 7b 0d 0a 20 20 20 20 20 20 splus) {..
16b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
16ba0 72 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 rning("Unexpecte
16bb0 64 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22 d use of '{a}'."
16bc0 2c 20 74 68 69 73 2c 20 74 68 69 73 2e 69 64 29 , this, this.id)
16bd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
16be0 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 21 } else if ((!
16bf0 74 68 69 73 2e 72 69 67 68 74 2e 69 64 65 6e 74 this.right.ident
16c00 69 66 69 65 72 20 7c 7c 20 74 68 69 73 2e 72 69 ifier || this.ri
16c10 67 68 74 2e 72 65 73 65 72 76 65 64 29 20 26 26 ght.reserved) &&
16c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
16c30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 this.r
16c40 69 67 68 74 2e 69 64 20 21 3d 3d 20 22 2e 22 20 ight.id !== "."
16c50 26 26 20 74 68 69 73 2e 72 69 67 68 74 2e 69 64 && this.right.id
16c60 20 21 3d 3d 20 22 5b 22 29 20 7b 0d 0a 20 20 20 !== "[") {..
16c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16c80 20 77 61 72 6e 69 6e 67 28 22 42 61 64 20 6f 70 warning("Bad op
16c90 65 72 61 6e 64 2e 22 2c 20 74 68 69 73 29 3b 0d erand.", this);.
16ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
16cb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
16cc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 }.. r
16cd0 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 eturn this;..
16ce0 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 };..
16cf0 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 return x;..
16d00 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 }...... funct
16d10 69 6f 6e 20 74 79 70 65 28 73 2c 20 66 29 20 7b ion type(s, f) {
16d20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20 .. var x
16d30 3d 20 64 65 6c 69 6d 28 73 29 3b 0d 0a 20 20 20 = delim(s);..
16d40 20 20 20 20 20 78 2e 74 79 70 65 20 3d 20 73 3b x.type = s;
16d50 0d 0a 20 20 20 20 20 20 20 20 78 2e 6e 75 64 20 .. x.nud
16d60 3d 20 66 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 = f;.. re
16d70 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a turn x;.. }..
16d80 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e .... function
16d90 20 72 65 73 65 72 76 65 28 73 2c 20 66 29 20 7b reserve(s, f) {
16da0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20 .. var x
16db0 3d 20 74 79 70 65 28 73 2c 20 66 29 3b 0d 0a 20 = type(s, f);..
16dc0 20 20 20 20 20 20 20 78 2e 69 64 65 6e 74 69 66 x.identif
16dd0 69 65 72 20 3d 20 78 2e 72 65 73 65 72 76 65 64 ier = x.reserved
16de0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 = true;..
16df0 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 return x;..
16e00 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 }...... func
16e10 74 69 6f 6e 20 72 65 73 65 72 76 65 76 61 72 28 tion reservevar(
16e20 73 2c 20 76 29 20 7b 0d 0a 20 20 20 20 20 20 20 s, v) {..
16e30 20 72 65 74 75 72 6e 20 72 65 73 65 72 76 65 28 return reserve(
16e40 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b s, function () {
16e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
16e60 20 28 74 79 70 65 6f 66 20 76 20 3d 3d 3d 20 22 (typeof v === "
16e70 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 function") {..
16e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 28 v(
16e90 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 this);..
16ea0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
16eb0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d return this;.
16ec0 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 . });..
16ed0 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e }...... fun
16ee0 63 74 69 6f 6e 20 69 6e 66 69 78 28 73 2c 20 66 ction infix(s, f
16ef0 2c 20 70 2c 20 77 29 20 7b 0d 0a 20 20 20 20 20 , p, w) {..
16f00 20 20 20 76 61 72 20 78 20 3d 20 73 79 6d 62 6f var x = symbo
16f10 6c 28 73 2c 20 70 29 3b 0d 0a 20 20 20 20 20 20 l(s, p);..
16f20 20 20 72 65 73 65 72 76 65 4e 61 6d 65 28 78 29 reserveName(x)
16f30 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 64 ;.. x.led
16f40 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 = function (lef
16f50 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 t) {..
16f60 20 20 69 66 20 28 21 77 29 20 7b 0d 0a 20 20 20 if (!w) {..
16f70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 62 nob
16f80 72 65 61 6b 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 reaknonadjacent(
16f90 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e prevtoken, token
16fa0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
16fb0 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 nonadjacent(
16fc0 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e token, nexttoken
16fd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
16fe0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 }.. i
16ff0 66 20 28 73 20 3d 3d 3d 20 22 69 6e 22 20 26 26 f (s === "in" &&
17000 20 6c 65 66 74 2e 69 64 20 3d 3d 3d 20 22 21 22 left.id === "!"
17010 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
17020 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f warning("Co
17030 6e 66 75 73 69 6e 67 20 75 73 65 20 6f 66 20 27 nfusing use of '
17040 7b 61 7d 27 2e 22 2c 20 6c 65 66 74 2c 20 22 21 {a}'.", left, "!
17050 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ");..
17060 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
17070 69 66 20 28 74 79 70 65 6f 66 20 66 20 3d 3d 3d if (typeof f ===
17080 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a "function") {..
17090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
170a0 72 65 74 75 72 6e 20 66 28 6c 65 66 74 2c 20 74 return f(left, t
170b0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 his);..
170c0 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 } else {..
170d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
170e0 73 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a s.left = left;..
170f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17100 74 68 69 73 2e 72 69 67 68 74 20 3d 20 65 78 70 this.right = exp
17110 72 65 73 73 69 6f 6e 28 70 29 3b 0d 0a 20 20 20 ression(p);..
17120 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
17130 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 urn this;..
17140 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
17150 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 };.. re
17160 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a turn x;.. }..
17170 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e .... function
17180 20 72 65 6c 61 74 69 6f 6e 28 73 2c 20 66 29 20 relation(s, f)
17190 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 {.. var x
171a0 20 3d 20 73 79 6d 62 6f 6c 28 73 2c 20 31 30 30 = symbol(s, 100
171b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 );.. x.le
171c0 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 d = function (le
171d0 66 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ft) {..
171e0 20 20 20 6e 6f 62 72 65 61 6b 6e 6f 6e 61 64 6a nobreaknonadj
171f0 61 63 65 6e 74 28 70 72 65 76 74 6f 6b 65 6e 2c acent(prevtoken,
17200 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 token);..
17210 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e nonadjacen
17220 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b t(token, nexttok
17230 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 en);..
17240 20 20 76 61 72 20 72 69 67 68 74 20 3d 20 65 78 var right = ex
17250 70 72 65 73 73 69 6f 6e 28 31 30 30 29 3b 0d 0a pression(100);..
17260 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
17270 28 6c 65 66 74 20 26 26 20 6c 65 66 74 2e 69 64 (left && left.id
17280 20 3d 3d 3d 20 22 4e 61 4e 22 29 20 7c 7c 20 28 === "NaN") || (
17290 72 69 67 68 74 20 26 26 20 72 69 67 68 74 2e 69 right && right.i
172a0 64 20 3d 3d 3d 20 22 4e 61 4e 22 29 29 20 7b 0d d === "NaN")) {.
172b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
172c0 20 77 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68 warning("Use th
172d0 65 20 69 73 4e 61 4e 20 66 75 6e 63 74 69 6f 6e e isNaN function
172e0 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74 68 to compare with
172f0 20 4e 61 4e 2e 22 2c 20 74 68 69 73 29 3b 0d 0a NaN.", this);..
17300 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
17310 73 65 20 69 66 20 28 66 29 20 7b 0d 0a 20 20 20 se if (f) {..
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 61 f.a
17330 70 70 6c 79 28 74 68 69 73 2c 20 5b 6c 65 66 74 pply(this, [left
17340 2c 20 72 69 67 68 74 5d 29 3b 0d 0a 20 20 20 20 , right]);..
17350 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
17360 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e if (left.
17370 69 64 20 3d 3d 3d 20 22 21 22 29 20 7b 0d 0a 20 id === "!") {..
17380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
17390 61 72 6e 69 6e 67 28 22 43 6f 6e 66 75 73 69 6e arning("Confusin
173a0 67 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22 g use of '{a}'."
173b0 2c 20 6c 65 66 74 2c 20 22 21 22 29 3b 0d 0a 20 , left, "!");..
173c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
173d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 69 if (ri
173e0 67 68 74 2e 69 64 20 3d 3d 3d 20 22 21 22 29 20 ght.id === "!")
173f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
17400 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e 66 warning("Conf
17410 75 73 69 6e 67 20 75 73 65 20 6f 66 20 27 7b 61 using use of '{a
17420 7d 27 2e 22 2c 20 72 69 67 68 74 2c 20 22 21 22 }'.", right, "!"
17430 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
17440 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 }.. t
17450 68 69 73 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b his.left = left;
17460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
17470 69 73 2e 72 69 67 68 74 20 3d 20 72 69 67 68 74 is.right = right
17480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ;.. r
17490 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 eturn this;..
174a0 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 };..
174b0 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 return x;..
174c0 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 }...... funct
174d0 69 6f 6e 20 69 73 50 6f 6f 72 52 65 6c 61 74 69 ion isPoorRelati
174e0 6f 6e 28 6e 6f 64 65 29 20 7b 0d 0a 20 20 20 20 on(node) {..
174f0 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 20 return node
17500 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&..
17510 20 20 28 28 6e 6f 64 65 2e 74 79 70 65 20 3d 3d ((node.type ==
17520 3d 20 22 28 6e 75 6d 62 65 72 29 22 20 26 26 20 = "(number)" &&
17530 2b 6e 6f 64 65 2e 76 61 6c 75 65 20 3d 3d 3d 20 +node.value ===
17540 30 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 0) ||..
17550 20 20 20 20 20 20 28 6e 6f 64 65 2e 74 79 70 65 (node.type
17560 20 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 20 === "(string)"
17570 26 26 20 6e 6f 64 65 2e 76 61 6c 75 65 20 3d 3d && node.value ==
17580 3d 20 22 22 29 20 7c 7c 0d 0a 20 20 20 20 20 20 = "") ||..
17590 20 20 20 20 20 20 20 20 20 28 6e 6f 64 65 2e 74 (node.t
175a0 79 70 65 20 3d 3d 3d 20 22 6e 75 6c 6c 22 20 26 ype === "null" &
175b0 26 20 21 6f 70 74 69 6f 6e 2e 65 71 6e 75 6c 6c & !option.eqnull
175c0 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 ) ||..
175d0 20 20 20 20 20 20 6e 6f 64 65 2e 74 79 70 65 20 node.type
175e0 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c 0d 0a 20 === "true" ||..
175f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e n
17600 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20 22 66 61 ode.type === "fa
17610 6c 73 65 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20 lse" ||..
17620 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 74 79 node.ty
17630 70 65 20 3d 3d 3d 20 22 75 6e 64 65 66 69 6e 65 pe === "undefine
17640 64 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d d");.. }.....
17650 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 73 . function as
17660 73 69 67 6e 6f 70 28 73 29 20 7b 0d 0a 20 20 20 signop(s) {..
17670 20 20 20 20 20 73 79 6d 62 6f 6c 28 73 2c 20 32 symbol(s, 2
17680 30 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0).exps = true;.
17690 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ... retur
176a0 6e 20 69 6e 66 69 78 28 73 2c 20 66 75 6e 63 74 n infix(s, funct
176b0 69 6f 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29 ion (left, that)
176c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
176d0 74 68 61 74 2e 6c 65 66 74 20 3d 20 6c 65 66 74 that.left = left
176e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
176f0 20 69 66 20 28 70 72 65 64 65 66 69 6e 65 64 5b if (predefined[
17700 6c 65 66 74 2e 76 61 6c 75 65 5d 20 3d 3d 3d 20 left.value] ===
17710 66 61 6c 73 65 20 26 26 0d 0a 20 20 20 20 20 20 false &&..
17720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 sc
17730 6f 70 65 5b 6c 65 66 74 2e 76 61 6c 75 65 5d 5b ope[left.value][
17740 22 28 67 6c 6f 62 61 6c 29 22 5d 20 3d 3d 3d 20 "(global)"] ===
17750 74 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 true) {..
17760 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
17770 28 22 52 65 61 64 20 6f 6e 6c 79 2e 22 2c 20 6c ("Read only.", l
17780 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 eft);..
17790 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 65 } else if (le
177a0 66 74 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29 20 ft["function"])
177b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
177c0 20 20 20 77 61 72 6e 69 6e 67 28 22 27 7b 61 7d warning("'{a}
177d0 27 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 2e ' is a function.
177e0 22 2c 20 6c 65 66 74 2c 20 6c 65 66 74 2e 76 61 ", left, left.va
177f0 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 lue);..
17800 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
17810 20 20 20 20 69 66 20 28 6c 65 66 74 29 20 7b 0d if (left) {.
17820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
17830 20 69 66 20 28 6f 70 74 69 6f 6e 2e 65 73 6e 65 if (option.esne
17840 78 74 20 26 26 20 66 75 6e 63 74 5b 6c 65 66 74 xt && funct[left
17850 2e 76 61 6c 75 65 5d 20 3d 3d 3d 20 22 63 6f 6e .value] === "con
17860 73 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 st") {..
17870 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
17880 69 6e 67 28 22 41 74 74 65 6d 70 74 69 6e 67 20 ing("Attempting
17890 74 6f 20 6f 76 65 72 72 69 64 65 20 27 7b 61 7d to override '{a}
178a0 27 20 77 68 69 63 68 20 69 73 20 61 20 63 6f 6e ' which is a con
178b0 73 74 61 6e 74 22 2c 20 6c 65 66 74 2c 20 6c 65 stant", left, le
178c0 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 ft.value);..
178d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d }...
178e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
178f0 20 69 66 20 28 6c 65 66 74 2e 69 64 20 3d 3d 3d if (left.id ===
17900 20 22 2e 22 20 7c 7c 20 6c 65 66 74 2e 69 64 20 "." || left.id
17910 3d 3d 3d 20 22 5b 22 29 20 7b 0d 0a 20 20 20 20 === "[") {..
17920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17930 69 66 20 28 21 6c 65 66 74 2e 6c 65 66 74 20 7c if (!left.left |
17940 7c 20 6c 65 66 74 2e 6c 65 66 74 2e 76 61 6c 75 | left.left.valu
17950 65 20 3d 3d 3d 20 22 61 72 67 75 6d 65 6e 74 73 e === "arguments
17960 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
17970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
17980 72 6e 69 6e 67 28 22 42 61 64 20 61 73 73 69 67 rning("Bad assig
17990 6e 6d 65 6e 74 2e 22 2c 20 74 68 61 74 29 3b 0d nment.", that);.
179a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
179b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
179c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 61 74 that
179d0 2e 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 .right = express
179e0 69 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20 ion(19);..
179f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
17a00 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 turn that;..
17a10 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
17a20 73 65 20 69 66 20 28 6c 65 66 74 2e 69 64 65 6e se if (left.iden
17a30 74 69 66 69 65 72 20 26 26 20 21 6c 65 66 74 2e tifier && !left.
17a40 72 65 73 65 72 76 65 64 29 20 7b 0d 0a 20 20 20 reserved) {..
17a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17a60 20 69 66 20 28 66 75 6e 63 74 5b 6c 65 66 74 2e if (funct[left.
17a70 76 61 6c 75 65 5d 20 3d 3d 3d 20 22 65 78 63 65 value] === "exce
17a80 70 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 ption") {..
17a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17aa0 20 20 20 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e warning("Do n
17ab0 6f 74 20 61 73 73 69 67 6e 20 74 6f 20 74 68 65 ot assign to the
17ac0 20 65 78 63 65 70 74 69 6f 6e 20 70 61 72 61 6d exception param
17ad0 65 74 65 72 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a eter.", left);..
17ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17af0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
17b00 20 20 20 20 20 20 20 20 20 20 20 74 68 61 74 2e that.
17b10 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 right = expressi
17b20 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20 20 on(19);..
17b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
17b40 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 20 urn that;..
17b50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a }....
17b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17b70 69 66 20 28 6c 65 66 74 20 3d 3d 3d 20 73 79 6e if (left === syn
17b80 74 61 78 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29 tax["function"])
17b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
17ba0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
17bb0 0d 0a 22 45 78 70 65 63 74 65 64 20 61 6e 20 69 .."Expected an i
17bc0 64 65 6e 74 69 66 69 65 72 20 69 6e 20 61 6e 20 dentifier in an
17bd0 61 73 73 69 67 6e 6d 65 6e 74 20 61 6e 64 20 69 assignment and i
17be0 6e 73 74 65 61 64 20 73 61 77 20 61 20 66 75 6e nstead saw a fun
17bf0 63 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e ction invocation
17c00 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
17c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17c20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 token);..
17c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
17c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
17c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 .. er
17c60 72 6f 72 28 22 42 61 64 20 61 73 73 69 67 6e 6d ror("Bad assignm
17c70 65 6e 74 2e 22 2c 20 74 68 61 74 29 3b 0d 0a 20 ent.", that);..
17c80 20 20 20 20 20 20 20 7d 2c 20 32 30 29 3b 0d 0a }, 20);..
17c90 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 }...... f
17ca0 75 6e 63 74 69 6f 6e 20 62 69 74 77 69 73 65 28 unction bitwise(
17cb0 73 2c 20 66 2c 20 70 29 20 7b 0d 0a 20 20 20 20 s, f, p) {..
17cc0 20 20 20 20 76 61 72 20 78 20 3d 20 73 79 6d 62 var x = symb
17cd0 6f 6c 28 73 2c 20 70 29 3b 0d 0a 20 20 20 20 20 ol(s, p);..
17ce0 20 20 20 72 65 73 65 72 76 65 4e 61 6d 65 28 78 reserveName(x
17cf0 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 );.. x.le
17d00 64 20 3d 20 28 74 79 70 65 6f 66 20 66 20 3d 3d d = (typeof f ==
17d10 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 3f 20 = "function") ?
17d20 66 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 f : function (le
17d30 66 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ft) {..
17d40 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 62 69 if (option.bi
17d50 74 77 69 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 twise) {..
17d60 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
17d70 67 28 22 55 6e 65 78 70 65 63 74 65 64 20 75 73 g("Unexpected us
17d80 65 20 6f 66 20 27 7b 61 7d 27 2e 22 2c 20 74 68 e of '{a}'.", th
17d90 69 73 2c 20 74 68 69 73 2e 69 64 29 3b 0d 0a 20 is, this.id);..
17da0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
17db0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c this.l
17dc0 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20 20 eft = left;..
17dd0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 this.ri
17de0 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e ght = expression
17df0 28 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 (p);..
17e00 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a return this;..
17e10 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 };..
17e20 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 return x;..
17e30 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 }...... fu
17e40 6e 63 74 69 6f 6e 20 62 69 74 77 69 73 65 61 73 nction bitwiseas
17e50 73 69 67 6e 6f 70 28 73 29 20 7b 0d 0a 20 20 20 signop(s) {..
17e60 20 20 20 20 20 73 79 6d 62 6f 6c 28 73 2c 20 32 symbol(s, 2
17e70 30 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0).exps = true;.
17e80 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
17e90 69 6e 66 69 78 28 73 2c 20 66 75 6e 63 74 69 6f infix(s, functio
17ea0 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b n (left, that) {
17eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
17ec0 20 28 6f 70 74 69 6f 6e 2e 62 69 74 77 69 73 65 (option.bitwise
17ed0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
17ee0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
17ef0 65 78 70 65 63 74 65 64 20 75 73 65 20 6f 66 20 expected use of
17f00 27 7b 61 7d 27 2e 22 2c 20 74 68 61 74 2c 20 74 '{a}'.", that, t
17f10 68 61 74 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20 hat.id);..
17f20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
17f30 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 nonadjacent
17f40 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 (prevtoken, toke
17f50 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 n);..
17f60 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b nonadjacent(tok
17f70 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d en, nexttoken);.
17f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
17f90 28 6c 65 66 74 29 20 7b 0d 0a 20 20 20 20 20 20 (left) {..
17fa0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 if (le
17fb0 66 74 2e 69 64 20 3d 3d 3d 20 22 2e 22 20 7c 7c ft.id === "." ||
17fc0 20 6c 65 66 74 2e 69 64 20 3d 3d 3d 20 22 5b 22 left.id === "["
17fd0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ||..
17fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 (le
17ff0 66 74 2e 69 64 65 6e 74 69 66 69 65 72 20 26 26 ft.identifier &&
18000 20 21 6c 65 66 74 2e 72 65 73 65 72 76 65 64 29 !left.reserved)
18010 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
18020 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 express
18030 69 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20 ion(19);..
18040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
18050 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 turn that;..
18060 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
18070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
18080 66 20 28 6c 65 66 74 20 3d 3d 3d 20 73 79 6e 74 f (left === synt
18090 61 78 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29 20 ax["function"])
180a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
180b0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 0d warning(.
180c0 0a 22 45 78 70 65 63 74 65 64 20 61 6e 20 69 64 ."Expected an id
180d0 65 6e 74 69 66 69 65 72 20 69 6e 20 61 6e 20 61 entifier in an a
180e0 73 73 69 67 6e 6d 65 6e 74 2c 20 61 6e 64 20 69 ssignment, and i
180f0 6e 73 74 65 61 64 20 73 61 77 20 61 20 66 75 6e nstead saw a fun
18100 63 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e ction invocation
18110 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
18120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18130 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 token);..
18140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
18150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
18160 20 72 65 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20 return that;..
18170 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
18180 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error(
18190 22 42 61 64 20 61 73 73 69 67 6e 6d 65 6e 74 2e "Bad assignment.
181a0 22 2c 20 74 68 61 74 29 3b 0d 0a 20 20 20 20 20 ", that);..
181b0 20 20 20 7d 2c 20 32 30 29 3b 0d 0a 20 20 20 20 }, 20);..
181c0 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 }...... funct
181d0 69 6f 6e 20 73 75 66 66 69 78 28 73 29 20 7b 0d ion suffix(s) {.
181e0 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20 3d . var x =
181f0 20 73 79 6d 62 6f 6c 28 73 2c 20 31 35 30 29 3b symbol(s, 150);
18200 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 64 20 .. x.led
18210 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74 = function (left
18220 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
18230 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 6c 75 73 if (option.plus
18240 70 6c 75 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 plus) {..
18250 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
18260 28 22 55 6e 65 78 70 65 63 74 65 64 20 75 73 65 ("Unexpected use
18270 20 6f 66 20 27 7b 61 7d 27 2e 22 2c 20 74 68 69 of '{a}'.", thi
18280 73 2c 20 74 68 69 73 2e 69 64 29 3b 0d 0a 20 20 s, this.id);..
18290 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
182a0 20 69 66 20 28 28 21 6c 65 66 74 2e 69 64 65 6e if ((!left.iden
182b0 74 69 66 69 65 72 20 7c 7c 20 6c 65 66 74 2e 72 tifier || left.r
182c0 65 73 65 72 76 65 64 29 20 26 26 0d 0a 20 20 20 eserved) &&..
182d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
182e0 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 2e 22 left.id !== "."
182f0 20 26 26 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20 && left.id !==
18300 22 5b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 "[") {..
18310 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
18320 22 42 61 64 20 6f 70 65 72 61 6e 64 2e 22 2c 20 "Bad operand.",
18330 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 this);..
18340 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
18350 20 20 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6c this.left = l
18360 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eft;..
18370 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a return this;..
18380 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 };..
18390 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 return x;..
183a0 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f }...... //
183b0 20 66 6e 70 61 72 61 6d 20 6d 65 61 6e 73 20 74 fnparam means t
183c0 68 61 74 20 74 68 69 73 20 69 64 65 6e 74 69 66 hat this identif
183d0 69 65 72 20 69 73 20 62 65 69 6e 67 20 64 65 66 ier is being def
183e0 69 6e 65 64 20 61 73 20 61 20 66 75 6e 63 74 69 ined as a functi
183f0 6f 6e 0d 0a 20 20 20 20 2f 2f 20 61 72 67 75 6d on.. // argum
18400 65 6e 74 20 28 73 65 65 20 69 64 65 6e 74 69 66 ent (see identif
18410 69 65 72 28 29 29 0d 0a 20 20 20 20 66 75 6e 63 ier()).. func
18420 74 69 6f 6e 20 6f 70 74 69 6f 6e 61 6c 69 64 65 tion optionalide
18430 6e 74 69 66 69 65 72 28 66 6e 70 61 72 61 6d 29 ntifier(fnparam)
18440 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
18450 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 65 6e 74 69 nexttoken.identi
18460 66 69 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 fier) {..
18470 20 20 20 20 20 61 64 76 61 6e 63 65 28 29 3b 0d advance();.
18480 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
18490 28 74 6f 6b 65 6e 2e 72 65 73 65 72 76 65 64 20 (token.reserved
184a0 26 26 20 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20 && !option.es5)
184b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
184c0 20 20 20 2f 2f 20 60 75 6e 64 65 66 69 6e 65 64 // `undefined
184d0 60 20 61 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 ` as a function
184e0 70 61 72 61 6d 20 69 73 20 61 20 63 6f 6d 6d 6f param is a commo
184f0 6e 20 70 61 74 74 65 72 6e 20 74 6f 20 70 72 6f n pattern to pro
18500 74 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 tect..
18510 20 20 20 20 20 20 2f 2f 20 61 67 61 69 6e 73 74 // against
18520 20 74 68 65 20 63 61 73 65 20 77 68 65 6e 20 73 the case when s
18530 6f 6d 65 62 6f 64 79 20 64 6f 65 73 20 60 75 6e omebody does `un
18540 64 65 66 69 6e 65 64 20 3d 20 74 72 75 65 60 20 defined = true`
18550 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 and..
18560 20 20 20 20 20 2f 2f 20 68 65 6c 70 20 77 69 74 // help wit
18570 68 20 6d 69 6e 69 66 69 63 61 74 69 6f 6e 2e 20 h minification.
18580 4d 6f 72 65 20 69 6e 66 6f 3a 20 68 74 74 70 73 More info: https
18590 3a 2f 2f 67 69 73 74 2e 67 69 74 68 75 62 2e 63 ://gist.github.c
185a0 6f 6d 2f 33 31 35 39 31 36 0d 0a 20 20 20 20 20 om/315916..
185b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 if (!
185c0 66 6e 70 61 72 61 6d 20 7c 7c 20 74 6f 6b 65 6e fnparam || token
185d0 2e 76 61 6c 75 65 20 21 3d 3d 20 22 75 6e 64 65 .value !== "unde
185e0 66 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20 fined") {..
185f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
18600 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 arning("Expected
18610 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 an identifier a
18620 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 nd instead saw '
18630 7b 61 7d 27 20 28 61 20 72 65 73 65 72 76 65 64 {a}' (a reserved
18640 20 77 6f 72 64 29 2e 22 2c 0d 0a 20 20 20 20 20 word).",..
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18660 20 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20 74 6f token, to
18670 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20 ken.id);..
18680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
18690 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
186a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
186b0 6f 6b 65 6e 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 oken.value;..
186c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d }.. }...
186d0 0a 20 20 20 20 2f 2f 20 66 6e 70 61 72 61 6d 20 . // fnparam
186e0 6d 65 61 6e 73 20 74 68 61 74 20 74 68 69 73 20 means that this
186f0 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 62 65 identifier is be
18700 69 6e 67 20 64 65 66 69 6e 65 64 20 61 73 20 61 ing defined as a
18710 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f function.. /
18720 2f 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20 20 / argument..
18730 66 75 6e 63 74 69 6f 6e 20 69 64 65 6e 74 69 66 function identif
18740 69 65 72 28 66 6e 70 61 72 61 6d 29 20 7b 0d 0a ier(fnparam) {..
18750 20 20 20 20 20 20 20 20 76 61 72 20 69 20 3d 20 var i =
18760 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74 69 66 69 optionalidentifi
18770 65 72 28 66 6e 70 61 72 61 6d 29 3b 0d 0a 20 20 er(fnparam);..
18780 20 20 20 20 20 20 69 66 20 28 69 29 20 7b 0d 0a if (i) {..
18790 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
187a0 72 6e 20 69 3b 0d 0a 20 20 20 20 20 20 20 20 7d rn i;.. }
187b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 6f .. if (to
187c0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63 ken.id === "func
187d0 74 69 6f 6e 22 20 26 26 20 6e 65 78 74 74 6f 6b tion" && nexttok
187e0 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 22 29 20 7b en.id === "(") {
187f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 .. wa
18800 72 6e 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 6e rning("Missing n
18810 61 6d 65 20 69 6e 20 66 75 6e 63 74 69 6f 6e 20 ame in function
18820 64 65 63 6c 61 72 61 74 69 6f 6e 2e 22 29 3b 0d declaration.");.
18830 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
18840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 {.. e
18850 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 20 61 rror("Expected a
18860 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 n identifier and
18870 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61 instead saw '{a
18880 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 }'.",..
18890 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 nextt
188a0 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e oken, nexttoken.
188b0 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 value);..
188c0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 }.. }......
188d0 20 20 20 66 75 6e 63 74 69 6f 6e 20 72 65 61 63 function reac
188e0 68 61 62 6c 65 28 73 29 20 7b 0d 0a 20 20 20 20 hable(s) {..
188f0 20 20 20 20 76 61 72 20 69 20 3d 20 30 2c 20 74 var i = 0, t
18900 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e ;.. if (n
18910 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 exttoken.id !==
18920 22 3b 22 20 7c 7c 20 6e 6f 72 65 61 63 68 29 20 ";" || noreach)
18930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
18940 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 eturn;..
18950 7d 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 }.. for (
18960 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ;;) {..
18970 20 20 20 74 20 3d 20 70 65 65 6b 28 69 29 3b 0d t = peek(i);.
18980 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
18990 28 74 2e 72 65 61 63 68 29 20 7b 0d 0a 20 20 20 (t.reach) {..
189a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
189b0 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 urn;..
189c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
189d0 20 69 66 20 28 74 2e 69 64 20 21 3d 3d 20 22 28 if (t.id !== "(
189e0 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a 20 20 endline)") {..
189f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
18a00 20 28 74 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63 (t.id === "func
18a10 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 tion") {..
18a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
18a30 20 28 21 6f 70 74 69 6f 6e 2e 6c 61 74 65 64 65 (!option.latede
18a40 66 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 f) {..
18a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
18a60 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
18a70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18a90 20 77 61 72 6e 69 6e 67 28 0d 0a 22 49 6e 6e 65 warning(.."Inne
18aa0 72 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 75 r functions shou
18ab0 6c 64 20 62 65 20 6c 69 73 74 65 64 20 61 74 20 ld be listed at
18ac0 74 68 65 20 74 6f 70 20 6f 66 20 74 68 65 20 6f the top of the o
18ad0 75 74 65 72 20 66 75 6e 63 74 69 6f 6e 2e 22 2c uter function.",
18ae0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 t);..
18af0 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b break;
18b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
18b10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
18b20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
18b30 72 65 61 63 68 61 62 6c 65 20 27 7b 61 7d 27 20 reachable '{a}'
18b40 61 66 74 65 72 20 27 7b 62 7d 27 2e 22 2c 20 74 after '{b}'.", t
18b50 2c 20 74 2e 76 61 6c 75 65 2c 20 73 29 3b 0d 0a , t.value, s);..
18b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18b70 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 break;..
18b80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
18b90 20 20 20 69 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 i += 1;..
18ba0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a }.. }....
18bb0 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 .. function s
18bc0 74 61 74 65 6d 65 6e 74 28 6e 6f 69 6e 64 65 6e tatement(noinden
18bd0 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 t) {.. va
18be0 72 20 69 20 3d 20 69 6e 64 65 6e 74 2c 20 72 2c r i = indent, r,
18bf0 20 73 20 3d 20 73 63 6f 70 65 2c 20 74 20 3d 20 s = scope, t =
18c00 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 0d 0a 20 20 nexttoken;....
18c10 20 20 20 20 20 20 69 66 20 28 74 2e 69 64 20 3d if (t.id =
18c20 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 == ";") {..
18c30 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 advance("
18c40 3b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ;");..
18c50 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 return;..
18c60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
18c70 2f 2f 20 49 73 20 74 68 69 73 20 61 20 6c 61 62 // Is this a lab
18c80 65 6c 6c 65 64 20 73 74 61 74 65 6d 65 6e 74 3f elled statement?
18c90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 .... if (
18ca0 74 2e 69 64 65 6e 74 69 66 69 65 72 20 26 26 20 t.identifier &&
18cb0 21 74 2e 72 65 73 65 72 76 65 64 20 26 26 20 70 !t.reserved && p
18cc0 65 65 6b 28 29 2e 69 64 20 3d 3d 3d 20 22 3a 22 eek().id === ":"
18cd0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
18ce0 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 advance();..
18cf0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
18d00 28 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 (":");..
18d10 20 20 20 20 73 63 6f 70 65 20 3d 20 4f 62 6a 65 scope = Obje
18d20 63 74 2e 63 72 65 61 74 65 28 73 29 3b 0d 0a 20 ct.create(s);..
18d30 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c 61 addla
18d40 62 65 6c 28 74 2e 76 61 6c 75 65 2c 20 22 6c 61 bel(t.value, "la
18d50 62 65 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 bel");....
18d60 20 20 20 20 20 20 69 66 20 28 21 6e 65 78 74 74 if (!nextt
18d70 6f 6b 65 6e 2e 6c 61 62 65 6c 6c 65 64 20 26 26 oken.labelled &&
18d80 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 nexttoken.value
18d90 20 21 3d 3d 20 22 7b 22 29 20 7b 0d 0a 20 20 20 !== "{") {..
18da0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
18db0 6e 69 6e 67 28 22 4c 61 62 65 6c 20 27 7b 61 7d ning("Label '{a}
18dc0 27 20 6f 6e 20 7b 62 7d 20 73 74 61 74 65 6d 65 ' on {b} stateme
18dd0 6e 74 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c nt.", nexttoken,
18de0 20 74 2e 76 61 6c 75 65 2c 20 6e 65 78 74 74 6f t.value, nextto
18df0 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 ken.value);..
18e00 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 }....
18e10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6a 78 if (jx
18e20 2e 74 65 73 74 28 74 2e 76 61 6c 75 65 20 2b 20 .test(t.value +
18e30 22 3a 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 ":")) {..
18e40 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
18e50 28 22 4c 61 62 65 6c 20 27 7b 61 7d 27 20 6c 6f ("Label '{a}' lo
18e60 6f 6b 73 20 6c 69 6b 65 20 61 20 6a 61 76 61 73 oks like a javas
18e70 63 72 69 70 74 20 75 72 6c 2e 22 2c 20 74 2c 20 cript url.", t,
18e80 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 t.value);..
18e90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
18ea0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
18eb0 6e 2e 6c 61 62 65 6c 20 3d 20 74 2e 76 61 6c 75 n.label = t.valu
18ec0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e;..
18ed0 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a t = nexttoken;..
18ee0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }....
18ef0 20 20 20 20 20 2f 2f 20 49 73 20 69 74 20 61 20 // Is it a
18f00 6c 6f 6e 65 6c 79 20 62 6c 6f 63 6b 3f 0d 0a 0d lonely block?...
18f10 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 2e 69 . if (t.i
18f20 64 20 3d 3d 3d 20 22 7b 22 29 20 7b 0d 0a 20 20 d === "{") {..
18f30 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 block(
18f40 74 72 75 65 2c 20 74 72 75 65 29 3b 0d 0a 20 20 true, true);..
18f50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
18f60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a ;.. }....
18f70 20 20 20 20 20 20 20 20 2f 2f 20 50 61 72 73 65 // Parse
18f80 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2e 0d the statement..
18f90 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 ... if (!
18fa0 6e 6f 69 6e 64 65 6e 74 29 20 7b 0d 0a 20 20 20 noindent) {..
18fb0 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61 indenta
18fc0 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 tion();..
18fd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 20 3d 20 }.. r =
18fe0 65 78 70 72 65 73 73 69 6f 6e 28 30 2c 20 74 72 expression(0, tr
18ff0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ue);....
19000 2f 2f 20 4c 6f 6f 6b 20 66 6f 72 20 74 68 65 20 // Look for the
19010 66 69 6e 61 6c 20 73 65 6d 69 63 6f 6c 6f 6e 2e final semicolon.
19020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 .... if (
19030 21 74 2e 62 6c 6f 63 6b 29 20 7b 0d 0a 20 20 20 !t.block) {..
19040 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 if (!op
19050 74 69 6f 6e 2e 65 78 70 72 20 26 26 20 28 21 72 tion.expr && (!r
19060 20 7c 7c 20 21 72 2e 65 78 70 73 29 29 20 7b 0d || !r.exps)) {.
19070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19080 20 77 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 warning("Expect
19090 65 64 20 61 6e 20 61 73 73 69 67 6e 6d 65 6e 74 ed an assignment
190a0 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c or function cal
190b0 6c 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 l and instead sa
190c0 77 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e w an expression.
190d0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ",..
190e0 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d token);.
190f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
19100 6c 73 65 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e lse if (option.n
19110 6f 6e 65 77 20 26 26 20 72 2e 69 64 20 3d 3d 3d onew && r.id ===
19120 20 22 28 22 20 26 26 20 72 2e 6c 65 66 74 2e 69 "(" && r.left.i
19130 64 20 3d 3d 3d 20 22 6e 65 77 22 29 20 7b 0d 0a d === "new") {..
19140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19150 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e 6f 74 20 warning("Do not
19160 75 73 65 20 27 6e 65 77 27 20 66 6f 72 20 73 69 use 'new' for si
19170 64 65 20 65 66 66 65 63 74 73 2e 22 2c 20 74 29 de effects.", t)
19180 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
19190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
191a0 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 if (nexttoken.id
191b0 20 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 === ",") {..
191c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
191d0 75 72 6e 20 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20 urn comma();..
191e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 }....
191f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
19200 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 exttoken.id !==
19210 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ";") {..
19220 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 if (!opt
19230 69 6f 6e 2e 61 73 69 29 20 7b 0d 0a 20 20 20 20 ion.asi) {..
19240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19250 2f 2f 20 49 66 20 74 68 69 73 20 69 73 20 74 68 // If this is th
19260 65 20 6c 61 73 74 20 73 74 61 74 65 6d 65 6e 74 e last statement
19270 20 69 6e 20 61 20 62 6c 6f 63 6b 20 74 68 61 74 in a block that
19280 20 65 6e 64 73 20 6f 6e 0d 0a 20 20 20 20 20 20 ends on..
19290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
192a0 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 2a the same line *
192b0 61 6e 64 2a 20 6f 70 74 69 6f 6e 20 6c 61 73 74 and* option last
192c0 73 65 6d 69 63 20 69 73 20 6f 6e 2c 20 69 67 6e semic is on, ign
192d0 6f 72 65 20 74 68 65 20 77 61 72 6e 69 6e 67 2e ore the warning.
192e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
192f0 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 77 69 // Otherwi
19300 73 65 2c 20 63 6f 6d 70 6c 61 69 6e 20 61 62 6f se, complain abo
19310 75 74 20 6d 69 73 73 69 6e 67 20 73 65 6d 69 63 ut missing semic
19320 6f 6c 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 olon...
19330 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 if (!
19340 6f 70 74 69 6f 6e 2e 6c 61 73 74 73 65 6d 69 63 option.lastsemic
19350 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 || nexttoken.id
19360 20 21 3d 3d 20 22 7d 22 20 7c 7c 0d 0a 20 20 20 !== "}" ||..
19370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19380 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b nexttok
19390 65 6e 2e 6c 69 6e 65 20 21 3d 3d 20 74 6f 6b 65 en.line !== toke
193a0 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 n.line) {..
193b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
193c0 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69 warningAt("Mi
193d0 73 73 69 6e 67 20 73 65 6d 69 63 6f 6c 6f 6e 2e ssing semicolon.
193e0 22 2c 20 74 6f 6b 65 6e 2e 6c 69 6e 65 2c 20 74 ", token.line, t
193f0 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 29 3b oken.character);
19400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
19410 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
19420 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
19430 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
19440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
19450 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e adjacent(token
19460 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 , nexttoken);..
19470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
19480 64 76 61 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20 dvance(";");..
19490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f no
194a0 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c nadjacent(token,
194b0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 nexttoken);..
194c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
194d0 20 20 20 20 20 7d 0d 0a 0d 0a 2f 2f 20 52 65 73 }....// Res
194e0 74 6f 72 65 20 74 68 65 20 69 6e 64 65 6e 74 61 tore the indenta
194f0 74 69 6f 6e 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 tion.....
19500 20 69 6e 64 65 6e 74 20 3d 20 69 3b 0d 0a 20 20 indent = i;..
19510 20 20 20 20 20 20 73 63 6f 70 65 20 3d 20 73 3b scope = s;
19520 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
19530 20 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a r;.. }......
19540 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 74 61 function sta
19550 74 65 6d 65 6e 74 73 28 73 74 61 72 74 4c 69 6e tements(startLin
19560 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 e) {.. va
19570 72 20 61 20 3d 20 5b 5d 2c 20 70 3b 0d 0a 0d 0a r a = [], p;....
19580 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 21 while (!
19590 6e 65 78 74 74 6f 6b 65 6e 2e 72 65 61 63 68 20 nexttoken.reach
195a0 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 && nexttoken.id
195b0 21 3d 3d 20 22 28 65 6e 64 29 22 29 20 7b 0d 0a !== "(end)") {..
195c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
195d0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d nexttoken.id ===
195e0 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 ";") {..
195f0 20 20 20 20 20 20 20 20 20 70 20 3d 20 70 65 65 p = pee
19600 6b 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 k();..
19610 20 20 20 20 20 20 69 66 20 28 21 70 20 7c 7c 20 if (!p ||
19620 70 2e 69 64 20 21 3d 3d 20 22 28 22 29 20 7b 0d p.id !== "(") {.
19630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19640 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
19650 6e 65 63 65 73 73 61 72 79 20 73 65 6d 69 63 6f necessary semico
19660 6c 6f 6e 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 lon.");..
19670 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
19680 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 adva
19690 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20 20 20 20 nce(";");..
196a0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d } else {.
196b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
196c0 20 61 2e 70 75 73 68 28 73 74 61 74 65 6d 65 6e a.push(statemen
196d0 74 28 73 74 61 72 74 4c 69 6e 65 20 3d 3d 3d 20 t(startLine ===
196e0 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29 29 nexttoken.line))
196f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
19700 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 .. }..
19710 20 20 20 20 20 72 65 74 75 72 6e 20 61 3b 0d 0a return a;..
19720 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f }...... /
19730 2a 0d 0a 20 20 20 20 20 2a 20 72 65 61 64 20 61 *.. * read a
19740 6c 6c 20 64 69 72 65 63 74 69 76 65 73 0d 0a 20 ll directives..
19750 20 20 20 20 2a 20 72 65 63 6f 67 6e 69 7a 65 73 * recognizes
19760 20 61 20 73 69 6d 70 6c 65 20 66 6f 72 6d 20 6f a simple form o
19770 66 20 61 73 69 2c 20 62 75 74 20 61 6c 77 61 79 f asi, but alway
19780 73 0d 0a 20 20 20 20 20 2a 20 77 61 72 6e 73 2c s.. * warns,
19790 20 69 66 20 69 74 20 69 73 20 75 73 65 64 0d 0a if it is used..
197a0 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e */.. fun
197b0 63 74 69 6f 6e 20 64 69 72 65 63 74 69 76 65 73 ction directives
197c0 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 () {.. va
197d0 72 20 69 2c 20 70 2c 20 70 6e 3b 0d 0a 0d 0a 20 r i, p, pn;....
197e0 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 for (;;)
197f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
19800 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 f (nexttoken.id
19810 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 29 20 === "(string)")
19820 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
19830 20 20 20 70 20 3d 20 70 65 65 6b 28 30 29 3b 0d p = peek(0);.
19840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19850 20 69 66 20 28 70 2e 69 64 20 3d 3d 3d 20 22 28 if (p.id === "(
19860 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a 20 20 endline)") {..
19870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19880 20 20 69 20 3d 20 31 3b 0d 0a 20 20 20 20 20 20 i = 1;..
19890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f do
198a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
198b0 20 20 20 20 20 20 20 20 20 20 20 20 70 6e 20 3d pn =
198c0 20 70 65 65 6b 28 69 29 3b 0d 0a 20 20 20 20 20 peek(i);..
198d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
198e0 20 20 20 69 20 3d 20 69 20 2b 20 31 3b 0d 0a 20 i = i + 1;..
198f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19900 20 20 20 7d 20 77 68 69 6c 65 20 28 70 6e 2e 69 } while (pn.i
19910 64 20 3d 3d 3d 20 22 28 65 6e 64 6c 69 6e 65 29 d === "(endline)
19920 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 ");....
19930 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 if (p
19940 6e 2e 69 64 20 21 3d 3d 20 22 3b 22 29 20 7b 0d n.id !== ";") {.
19950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19960 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6e 2e if (pn.
19970 69 64 20 21 3d 3d 20 22 28 73 74 72 69 6e 67 29 id !== "(string)
19980 22 20 26 26 20 70 6e 2e 69 64 20 21 3d 3d 20 22 " && pn.id !== "
19990 28 6e 75 6d 62 65 72 29 22 20 26 26 0d 0a 20 20 (number)" &&..
199a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
199b0 20 20 20 20 20 20 20 20 20 20 70 6e 2e 69 64 20 pn.id
199c0 21 3d 3d 20 22 28 72 65 67 65 78 70 29 22 20 26 !== "(regexp)" &
199d0 26 20 70 6e 2e 69 64 65 6e 74 69 66 69 65 72 20 & pn.identifier
199e0 21 3d 3d 20 74 72 75 65 20 26 26 0d 0a 20 20 20 !== true &&..
199f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19a00 20 20 20 20 20 20 20 20 20 70 6e 2e 69 64 20 21 pn.id !
19a10 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20 20 20 20 20 == "}") {..
19a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19a30 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 break;..
19a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19a50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
19a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19a70 20 20 77 61 72 6e 69 6e 67 28 22 4d 69 73 73 69 warning("Missi
19a80 6e 67 20 73 65 6d 69 63 6f 6c 6f 6e 2e 22 2c 20 ng semicolon.",
19a90 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 nexttoken);..
19aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19ab0 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
19ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19ad0 20 20 20 70 20 3d 20 70 6e 3b 0d 0a 20 20 20 20 p = pn;..
19ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19af0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
19b00 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 70 2e } else if (p.
19b10 69 64 20 3d 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20 id === "}") {..
19b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b30 20 20 20 2f 2f 20 64 69 72 65 63 74 69 76 65 20 // directive
19b40 77 69 74 68 20 6e 6f 20 6f 74 68 65 72 20 73 74 with no other st
19b50 61 74 65 6d 65 6e 74 73 2c 20 77 61 72 6e 20 61 atements, warn a
19b60 62 6f 75 74 20 6d 69 73 73 69 6e 67 20 73 65 6d bout missing sem
19b70 69 63 6f 6c 6f 6e 0d 0a 20 20 20 20 20 20 20 20 icolon..
19b80 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
19b90 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 73 65 6d ing("Missing sem
19ba0 69 63 6f 6c 6f 6e 2e 22 2c 20 70 29 3b 0d 0a 20 icolon.", p);..
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
19bc0 20 65 6c 73 65 20 69 66 20 28 70 2e 69 64 20 21 else if (p.id !
19bd0 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 == ";") {..
19be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
19bf0 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
19c00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
19c10 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 inde
19c20 6e 74 61 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 ntation();..
19c30 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 adva
19c40 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 nce();..
19c50 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65 if (dire
19c60 63 74 69 76 65 5b 74 6f 6b 65 6e 2e 76 61 6c 75 ctive[token.valu
19c70 65 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 e]) {..
19c80 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
19c90 6e 67 28 22 55 6e 6e 65 63 65 73 73 61 72 79 20 ng("Unnecessary
19ca0 64 69 72 65 63 74 69 76 65 20 5c 22 7b 61 7d 5c directive \"{a}\
19cb0 22 2e 22 2c 20 74 6f 6b 65 6e 2c 20 74 6f 6b 65 ".", token, toke
19cc0 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 n.value);..
19cd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a }....
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19cf0 69 66 20 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 if (token.value
19d00 3d 3d 3d 20 22 75 73 65 20 73 74 72 69 63 74 22 === "use strict"
19d10 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
19d20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 if (!op
19d30 74 69 6f 6e 5b 22 28 65 78 70 6c 69 63 69 74 4e tion["(explicitN
19d40 65 77 63 61 70 29 22 5d 29 0d 0a 20 20 20 20 20 ewcap)"])..
19d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19d60 20 20 20 6f 70 74 69 6f 6e 2e 6e 65 77 63 61 70 option.newcap
19d70 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 = true;..
19d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 op
19d90 74 69 6f 6e 2e 75 6e 64 65 66 20 3d 20 74 72 75 tion.undef = tru
19da0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e;..
19db0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
19dc0 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 72 // ther
19dd0 65 27 73 20 6e 6f 20 64 69 72 65 63 74 69 76 65 e's no directive
19de0 20 6e 65 67 61 74 69 6f 6e 2c 20 73 6f 20 61 6c negation, so al
19df0 77 61 79 73 20 73 65 74 20 74 6f 20 74 72 75 65 ways set to true
19e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
19e10 20 20 64 69 72 65 63 74 69 76 65 5b 74 6f 6b 65 directive[toke
19e20 6e 2e 76 61 6c 75 65 5d 20 3d 20 74 72 75 65 3b n.value] = true;
19e30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
19e40 20 20 20 20 69 66 20 28 70 2e 69 64 20 3d 3d 3d if (p.id ===
19e50 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 ";") {..
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 adv
19e70 61 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20 20 20 ance(";");..
19e80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
19e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
19ea0 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 ontinue;..
19eb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
19ec0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
19ed0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d }.. }...
19ee0 0a 0d 0a 20 20 20 20 2f 2a 0d 0a 20 20 20 20 20 ... /*..
19ef0 2a 20 50 61 72 73 65 73 20 61 20 73 69 6e 67 6c * Parses a singl
19f00 65 20 62 6c 6f 63 6b 2e 20 41 20 62 6c 6f 63 6b e block. A block
19f10 20 69 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f is a sequence o
19f20 66 20 73 74 61 74 65 6d 65 6e 74 73 20 77 72 61 f statements wra
19f30 70 70 65 64 20 69 6e 0d 0a 20 20 20 20 20 2a 20 pped in.. *
19f40 62 72 61 63 65 73 2e 0d 0a 20 20 20 20 20 2a 0d braces... *.
19f50 0a 20 20 20 20 20 2a 20 6f 72 64 69 6e 61 72 79 . * ordinary
19f60 20 2d 20 74 72 75 65 20 66 6f 72 20 65 76 65 72 - true for ever
19f70 79 74 68 69 6e 67 20 62 75 74 20 66 75 6e 63 74 ything but funct
19f80 69 6f 6e 20 62 6f 64 69 65 73 20 61 6e 64 20 74 ion bodies and t
19f90 72 79 20 62 6c 6f 63 6b 73 2e 0d 0a 20 20 20 20 ry blocks...
19fa0 20 2a 20 73 74 6d 74 20 20 20 20 20 2d 20 74 72 * stmt - tr
19fb0 75 65 20 69 66 20 62 6c 6f 63 6b 20 63 61 6e 20 ue if block can
19fc0 62 65 20 61 20 73 69 6e 67 6c 65 20 73 74 61 74 be a single stat
19fd0 65 6d 65 6e 74 20 28 65 2e 67 2e 20 69 6e 20 69 ement (e.g. in i
19fe0 66 2f 66 6f 72 2f 77 68 69 6c 65 29 2e 0d 0a 20 f/for/while)...
19ff0 20 20 20 20 2a 20 69 73 66 75 6e 63 20 20 20 2d * isfunc -
1a000 20 74 72 75 65 20 69 66 20 62 6c 6f 63 6b 20 69 true if block i
1a010 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 62 6f 64 s a function bod
1a020 79 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 y.. */..
1a030 66 75 6e 63 74 69 6f 6e 20 62 6c 6f 63 6b 28 6f function block(o
1a040 72 64 69 6e 61 72 79 2c 20 73 74 6d 74 2c 20 69 rdinary, stmt, i
1a050 73 66 75 6e 63 29 20 7b 0d 0a 20 20 20 20 20 20 sfunc) {..
1a060 20 20 76 61 72 20 61 2c 0d 0a 20 20 20 20 20 20 var a,..
1a070 20 20 20 20 20 20 62 20 3d 20 69 6e 62 6c 6f 63 b = inbloc
1a080 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k,..
1a090 6f 6c 64 5f 69 6e 64 65 6e 74 20 3d 20 69 6e 64 old_indent = ind
1a0a0 65 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ent,..
1a0b0 20 20 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 m,..
1a0c0 20 20 73 20 3d 20 73 63 6f 70 65 2c 0d 0a 20 20 s = scope,..
1a0d0 20 20 20 20 20 20 20 20 20 20 74 2c 0d 0a 20 20 t,..
1a0e0 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 0d line,.
1a0f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 3b 0d . d;.
1a100 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 62 6c 6f ... inblo
1a110 63 6b 20 3d 20 6f 72 64 69 6e 61 72 79 3b 0d 0a ck = ordinary;..
1a120 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 72 64 if (!ord
1a130 69 6e 61 72 79 20 7c 7c 20 21 6f 70 74 69 6f 6e inary || !option
1a140 2e 66 75 6e 63 73 63 6f 70 65 29 20 73 63 6f 70 .funcscope) scop
1a150 65 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 e = Object.creat
1a160 65 28 73 63 6f 70 65 29 3b 0d 0a 20 20 20 20 20 e(scope);..
1a170 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 nonadjacent(t
1a180 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 oken, nexttoken)
1a190 3b 0d 0a 20 20 20 20 20 20 20 20 74 20 3d 20 6e ;.. t = n
1a1a0 65 78 74 74 6f 6b 65 6e 3b 0d 0a 0d 0a 20 20 20 exttoken;....
1a1b0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b if (nexttok
1a1c0 65 6e 2e 69 64 20 3d 3d 3d 20 22 7b 22 29 20 7b en.id === "{") {
1a1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 .. ad
1a1e0 76 61 6e 63 65 28 22 7b 22 29 3b 0d 0a 20 20 20 vance("{");..
1a1f0 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 line =
1a200 74 6f 6b 65 6e 2e 6c 69 6e 65 3b 0d 0a 20 20 20 token.line;..
1a210 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 if (nex
1a220 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 7d ttoken.id !== "}
1a230 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
1a240 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 indent +=
1a250 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a option.indent;..
1a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a270 77 68 69 6c 65 20 28 21 6f 72 64 69 6e 61 72 79 while (!ordinary
1a280 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 && nexttoken.fr
1a290 6f 6d 20 3e 20 69 6e 64 65 6e 74 29 20 7b 0d 0a om > indent) {..
1a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a2b0 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 6f 70 indent += op
1a2c0 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20 tion.indent;..
1a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
1a2e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
1a2f0 20 20 20 69 66 20 28 69 73 66 75 6e 63 29 20 7b if (isfunc) {
1a300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1a310 20 20 20 20 20 20 6d 20 3d 20 7b 7d 3b 0d 0a 20 m = {};..
1a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a330 20 20 20 66 6f 72 20 28 64 20 69 6e 20 64 69 72 for (d in dir
1a340 65 63 74 69 76 65 29 20 7b 0d 0a 20 20 20 20 20 ective) {..
1a350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a360 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 64 69 if (is_own(di
1a370 72 65 63 74 69 76 65 2c 20 64 29 29 20 7b 0d 0a rective, d)) {..
1a380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a390 20 20 20 20 20 20 20 20 20 20 20 20 6d 5b 64 5d m[d]
1a3a0 20 3d 20 64 69 72 65 63 74 69 76 65 5b 64 5d 3b = directive[d];
1a3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1a3c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
1a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a3e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
1a3f0 20 20 20 20 20 20 20 20 64 69 72 65 63 74 69 76 directiv
1a400 65 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 es();....
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1a420 28 6f 70 74 69 6f 6e 2e 73 74 72 69 63 74 20 26 (option.strict &
1a430 26 20 66 75 6e 63 74 5b 22 28 63 6f 6e 74 65 78 & funct["(contex
1a440 74 29 22 5d 5b 22 28 67 6c 6f 62 61 6c 29 22 5d t)"]["(global)"]
1a450 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1a460 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1a470 28 21 6d 5b 22 75 73 65 20 73 74 72 69 63 74 22 (!m["use strict"
1a480 5d 20 26 26 20 21 64 69 72 65 63 74 69 76 65 5b ] && !directive[
1a490 22 75 73 65 20 73 74 72 69 63 74 22 5d 29 20 7b "use strict"]) {
1a4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
1a4c0 72 6e 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 5c rning("Missing \
1a4d0 22 75 73 65 20 73 74 72 69 63 74 5c 22 20 73 74 "use strict\" st
1a4e0 61 74 65 6d 65 6e 74 2e 22 29 3b 0d 0a 20 20 20 atement.");..
1a4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a500 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
1a510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1a530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
1a540 20 20 20 20 61 20 3d 20 73 74 61 74 65 6d 65 6e a = statemen
1a550 74 73 28 6c 69 6e 65 29 3b 0d 0a 0d 0a 20 20 20 ts(line);....
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1a570 28 69 73 66 75 6e 63 29 20 7b 0d 0a 20 20 20 20 (isfunc) {..
1a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a590 64 69 72 65 63 74 69 76 65 20 3d 20 6d 3b 0d 0a directive = m;..
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a5b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }....
1a5c0 20 20 20 20 20 69 6e 64 65 6e 74 20 2d 3d 20 6f indent -= o
1a5d0 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 ption.indent;..
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
1a5f0 66 20 28 6c 69 6e 65 20 21 3d 3d 20 6e 65 78 74 f (line !== next
1a600 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 token.line) {..
1a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a620 20 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 indentation()
1a630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
1a640 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
1a650 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 69 6e } else if (lin
1a660 65 20 21 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e e !== nexttoken.
1a670 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 line) {..
1a680 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61 indenta
1a690 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 tion();..
1a6a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
1a6b0 20 20 20 20 61 64 76 61 6e 63 65 28 22 7d 22 2c advance("}",
1a6c0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 t);..
1a6d0 20 20 69 6e 64 65 6e 74 20 3d 20 6f 6c 64 5f 69 indent = old_i
1a6e0 6e 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 ndent;..
1a6f0 7d 20 65 6c 73 65 20 69 66 20 28 21 6f 72 64 69 } else if (!ordi
1a700 6e 61 72 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 nary) {..
1a710 20 20 20 20 20 65 72 72 6f 72 28 22 45 78 70 65 error("Expe
1a720 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 69 cted '{a}' and i
1a730 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d 27 nstead saw '{b}'
1a740 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
1a750 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e nexttoken
1a760 2c 20 22 7b 22 2c 20 6e 65 78 74 74 6f 6b 65 6e , "{", nexttoken
1a770 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 .value);..
1a780 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 } else {..
1a790 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 6d if (!stm
1a7a0 74 20 7c 7c 20 6f 70 74 69 6f 6e 2e 63 75 72 6c t || option.curl
1a7b0 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 y)..
1a7c0 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 70 warning("Exp
1a7d0 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 ected '{a}' and
1a7e0 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d instead saw '{b}
1a7f0 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 '.",..
1a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 ne
1a810 78 74 74 6f 6b 65 6e 2c 20 22 7b 22 2c 20 6e 65 xttoken, "{", ne
1a820 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d xttoken.value);.
1a830 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ... n
1a840 6f 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a oreach = true;..
1a850 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 inde
1a860 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 nt += option.ind
1a870 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ent;..
1a880 20 20 2f 2f 20 74 65 73 74 20 69 6e 64 65 6e 74 // test indent
1a890 61 74 69 6f 6e 20 6f 6e 6c 79 20 69 66 20 73 74 ation only if st
1a8a0 61 74 65 6d 65 6e 74 20 69 73 20 69 6e 20 6e 65 atement is in ne
1a8b0 77 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 w line..
1a8c0 20 20 20 20 61 20 3d 20 5b 73 74 61 74 65 6d 65 a = [stateme
1a8d0 6e 74 28 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e nt(nexttoken.lin
1a8e0 65 20 3d 3d 3d 20 74 6f 6b 65 6e 2e 6c 69 6e 65 e === token.line
1a8f0 29 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 )];..
1a900 20 69 6e 64 65 6e 74 20 2d 3d 20 6f 70 74 69 6f indent -= optio
1a910 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20 20 20 20 n.indent;..
1a920 20 20 20 20 20 20 20 6e 6f 72 65 61 63 68 20 3d noreach =
1a930 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 false;..
1a940 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 }.. func
1a950 74 5b 22 28 76 65 72 62 29 22 5d 20 3d 20 6e 75 t["(verb)"] = nu
1a960 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 ll;.. if
1a970 28 21 6f 72 64 69 6e 61 72 79 20 7c 7c 20 21 6f (!ordinary || !o
1a980 70 74 69 6f 6e 2e 66 75 6e 63 73 63 6f 70 65 29 ption.funcscope)
1a990 20 73 63 6f 70 65 20 3d 20 73 3b 0d 0a 20 20 20 scope = s;..
1a9a0 20 20 20 20 20 69 6e 62 6c 6f 63 6b 20 3d 20 62 inblock = b
1a9b0 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f ;.. if (o
1a9c0 72 64 69 6e 61 72 79 20 26 26 20 6f 70 74 69 6f rdinary && optio
1a9d0 6e 2e 6e 6f 65 6d 70 74 79 20 26 26 20 28 21 61 n.noempty && (!a
1a9e0 20 7c 7c 20 61 2e 6c 65 6e 67 74 68 20 3d 3d 3d || a.length ===
1a9f0 20 30 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 0)) {..
1aa00 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 6d 70 warning("Emp
1aa10 74 79 20 62 6c 6f 63 6b 2e 22 29 3b 0d 0a 20 20 ty block.");..
1aa20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
1aa30 20 72 65 74 75 72 6e 20 61 3b 0d 0a 20 20 20 20 return a;..
1aa40 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 }...... funct
1aa50 69 6f 6e 20 63 6f 75 6e 74 4d 65 6d 62 65 72 28 ion countMember(
1aa60 6d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 m) {.. if
1aa70 20 28 6d 65 6d 62 65 72 73 4f 6e 6c 79 20 26 26 (membersOnly &&
1aa80 20 74 79 70 65 6f 66 20 6d 65 6d 62 65 72 73 4f typeof membersO
1aa90 6e 6c 79 5b 6d 5d 20 21 3d 3d 20 22 62 6f 6f 6c nly[m] !== "bool
1aaa0 65 61 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 ean") {..
1aab0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
1aac0 65 78 70 65 63 74 65 64 20 2f 2a 6d 65 6d 62 65 expected /*membe
1aad0 72 20 27 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e r '{a}'.", token
1aae0 2c 20 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d , m);.. }
1aaf0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 .. if (ty
1ab00 70 65 6f 66 20 6d 65 6d 62 65 72 5b 6d 5d 20 3d peof member[m] =
1ab10 3d 3d 20 22 6e 75 6d 62 65 72 22 29 20 7b 0d 0a == "number") {..
1ab20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 62 memb
1ab30 65 72 5b 6d 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 er[m] += 1;..
1ab40 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 } else {..
1ab50 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 62 65 membe
1ab60 72 5b 6d 5d 20 3d 20 31 3b 0d 0a 20 20 20 20 20 r[m] = 1;..
1ab70 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d }.. }.....
1ab80 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f . function no
1ab90 74 65 5f 69 6d 70 6c 69 65 64 28 74 6f 6b 65 6e te_implied(token
1aba0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
1abb0 20 6e 61 6d 65 20 3d 20 74 6f 6b 65 6e 2e 76 61 name = token.va
1abc0 6c 75 65 2c 20 6c 69 6e 65 20 3d 20 74 6f 6b 65 lue, line = toke
1abd0 6e 2e 6c 69 6e 65 2c 20 61 20 3d 20 69 6d 70 6c n.line, a = impl
1abe0 69 65 64 5b 6e 61 6d 65 5d 3b 0d 0a 20 20 20 20 ied[name];..
1abf0 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 61 if (typeof a
1ac00 20 3d 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 === "function")
1ac10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
1ac20 61 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 a = false;..
1ac30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
1ac40 20 69 66 20 28 21 61 29 20 7b 0d 0a 20 20 20 20 if (!a) {..
1ac50 20 20 20 20 20 20 20 20 61 20 3d 20 5b 6c 69 6e a = [lin
1ac60 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e];..
1ac70 20 69 6d 70 6c 69 65 64 5b 6e 61 6d 65 5d 20 3d implied[name] =
1ac80 20 61 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 a;.. } e
1ac90 6c 73 65 20 69 66 20 28 61 5b 61 2e 6c 65 6e 67 lse if (a[a.leng
1aca0 74 68 20 2d 20 31 5d 20 21 3d 3d 20 6c 69 6e 65 th - 1] !== line
1acb0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1acc0 20 61 2e 70 75 73 68 28 6c 69 6e 65 29 3b 0d 0a a.push(line);..
1acd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d }.. }
1ace0 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f 20 42 75 69 ...... // Bui
1acf0 6c 64 20 74 68 65 20 73 79 6e 74 61 78 20 74 61 ld the syntax ta
1ad00 62 6c 65 20 62 79 20 64 65 63 6c 61 72 69 6e 67 ble by declaring
1ad10 20 74 68 65 20 73 79 6e 74 61 63 74 69 63 20 65 the syntactic e
1ad20 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 6c lements of the l
1ad30 61 6e 67 75 61 67 65 2e 0d 0a 0d 0a 20 20 20 20 anguage.....
1ad40 74 79 70 65 28 22 28 6e 75 6d 62 65 72 29 22 2c type("(number)",
1ad50 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a function () {..
1ad60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
1ad70 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d his;.. });...
1ad80 0a 20 20 20 20 74 79 70 65 28 22 28 73 74 72 69 . type("(stri
1ad90 6e 67 29 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ng)", function (
1ada0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
1adb0 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d urn this;.. }
1adc0 29 3b 0d 0a 0d 0a 20 20 20 20 73 79 6e 74 61 78 );.... syntax
1add0 5b 22 28 69 64 65 6e 74 69 66 69 65 72 29 22 5d ["(identifier)"]
1ade0 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 79 = {.. ty
1adf0 70 65 3a 20 22 28 69 64 65 6e 74 69 66 69 65 72 pe: "(identifier
1ae00 29 22 2c 0d 0a 20 20 20 20 20 20 20 20 6c 62 70 )",.. lbp
1ae10 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 69 64 : 0,.. id
1ae20 65 6e 74 69 66 69 65 72 3a 20 74 72 75 65 2c 0d entifier: true,.
1ae30 0a 20 20 20 20 20 20 20 20 6e 75 64 3a 20 66 75 . nud: fu
1ae40 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 nction () {..
1ae50 20 20 20 20 20 20 20 20 20 76 61 72 20 76 20 3d var v =
1ae60 20 74 68 69 73 2e 76 61 6c 75 65 2c 0d 0a 20 20 this.value,..
1ae70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 s
1ae80 3d 20 73 63 6f 70 65 5b 76 5d 2c 0d 0a 20 20 20 = scope[v],..
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 66 3b 0d f;.
1aea0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ... i
1aeb0 66 20 28 74 79 70 65 6f 66 20 73 20 3d 3d 3d 20 f (typeof s ===
1aec0 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 "function") {..
1aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
1aee0 2f 20 50 72 6f 74 65 63 74 69 6f 6e 20 61 67 61 / Protection aga
1aef0 69 6e 73 74 20 61 63 63 69 64 65 6e 74 61 6c 20 inst accidental
1af00 69 6e 68 65 72 69 74 61 6e 63 65 2e 0d 0a 20 20 inheritance...
1af10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 s
1af20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d 0a 20 20 = undefined;..
1af30 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
1af40 20 69 66 20 28 74 79 70 65 6f 66 20 73 20 3d 3d if (typeof s ==
1af50 3d 20 22 62 6f 6f 6c 65 61 6e 22 29 20 7b 0d 0a = "boolean") {..
1af60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1af70 66 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20 20 f = funct;..
1af80 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 func
1af90 74 20 3d 20 66 75 6e 63 74 69 6f 6e 73 5b 30 5d t = functions[0]
1afa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
1afb0 20 20 20 61 64 64 6c 61 62 65 6c 28 76 2c 20 22 addlabel(v, "
1afc0 76 61 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 var");..
1afd0 20 20 20 20 20 20 20 20 73 20 3d 20 66 75 6e 63 s = func
1afe0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 t;..
1aff0 20 20 20 20 66 75 6e 63 74 20 3d 20 66 3b 0d 0a funct = f;..
1b000 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d }...
1b010 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . //
1b020 54 68 65 20 6e 61 6d 65 20 69 73 20 69 6e 20 73 The name is in s
1b030 63 6f 70 65 20 61 6e 64 20 64 65 66 69 6e 65 64 cope and defined
1b040 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 in the current
1b050 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 function...
1b060 20 20 20 20 20 20 20 69 66 20 28 66 75 6e 63 74 if (funct
1b070 20 3d 3d 3d 20 73 29 20 7b 0d 0a 20 20 20 20 20 === s) {..
1b080 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 // Ch
1b090 61 6e 67 65 20 27 75 6e 75 73 65 64 27 20 74 6f ange 'unused' to
1b0a0 20 27 76 61 72 27 2c 20 61 6e 64 20 72 65 6a 65 'var', and reje
1b0b0 63 74 20 6c 61 62 65 6c 73 2e 0d 0a 20 20 20 20 ct labels...
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 swit
1b0d0 63 68 20 28 66 75 6e 63 74 5b 76 5d 29 20 7b 0d ch (funct[v]) {.
1b0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1b0f0 20 63 61 73 65 20 22 75 6e 75 73 65 64 22 3a 0d case "unused":.
1b100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1b110 20 20 20 20 20 66 75 6e 63 74 5b 76 5d 20 3d 20 funct[v] =
1b120 22 76 61 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 "var";..
1b130 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
1b140 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
1b150 20 20 20 20 63 61 73 65 20 22 75 6e 63 74 69 6f case "unctio
1b160 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 n":..
1b170 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 76 funct[v
1b180 5d 20 3d 20 22 66 75 6e 63 74 69 6f 6e 22 3b 0d ] = "function";.
1b190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1b1a0 20 20 20 20 20 74 68 69 73 5b 22 66 75 6e 63 74 this["funct
1b1b0 69 6f 6e 22 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 ion"] = true;..
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b1d0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
1b1e0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
1b1f0 22 66 75 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20 "function":..
1b200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b210 20 74 68 69 73 5b 22 66 75 6e 63 74 69 6f 6e 22 this["function"
1b220 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 ] = true;..
1b230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
1b240 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
1b250 20 20 20 20 20 20 20 63 61 73 65 20 22 6c 61 62 case "lab
1b260 65 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 el":..
1b270 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
1b280 67 28 22 27 7b 61 7d 27 20 69 73 20 61 20 73 74 g("'{a}' is a st
1b290 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 2e 22 2c atement label.",
1b2a0 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 token, v);..
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b2c0 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 break;..
1b2d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
1b2e0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
1b2f0 66 20 28 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 f (funct["(globa
1b300 6c 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 l)"]) {..
1b310 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 // The
1b320 6e 61 6d 65 20 69 73 20 6e 6f 74 20 64 65 66 69 name is not defi
1b330 6e 65 64 20 69 6e 20 74 68 65 20 66 75 6e 63 74 ned in the funct
1b340 69 6f 6e 2e 20 20 49 66 20 77 65 20 61 72 65 20 ion. If we are
1b350 69 6e 20 74 68 65 20 67 6c 6f 62 61 6c 0d 0a 20 in the global..
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
1b370 2f 20 73 63 6f 70 65 2c 20 74 68 65 6e 20 77 65 / scope, then we
1b380 20 68 61 76 65 20 61 6e 20 75 6e 64 65 66 69 6e have an undefin
1b390 65 64 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20 20 ed variable...
1b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
1b3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1b3c0 20 20 2f 2f 20 4f 70 65 72 61 74 6f 72 73 20 74 // Operators t
1b3d0 79 70 65 6f 66 20 61 6e 64 20 64 65 6c 65 74 65 ypeof and delete
1b3e0 20 64 6f 20 6e 6f 74 20 72 61 69 73 65 20 72 75 do not raise ru
1b3f0 6e 74 69 6d 65 20 65 72 72 6f 72 73 20 65 76 65 ntime errors eve
1b400 6e 20 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 n if..
1b410 20 20 20 20 20 20 2f 2f 20 74 68 65 20 62 61 73 // the bas
1b420 65 20 6f 62 6a 65 63 74 20 6f 66 20 61 20 72 65 e object of a re
1b430 66 65 72 65 6e 63 65 20 69 73 20 6e 75 6c 6c 20 ference is null
1b440 73 6f 20 6e 6f 20 6e 65 65 64 20 74 6f 20 64 69 so no need to di
1b450 73 70 6c 61 79 20 77 61 72 6e 69 6e 67 0d 0a 20 splay warning..
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
1b470 2f 20 69 66 20 77 65 27 72 65 20 69 6e 73 69 64 / if we're insid
1b480 65 20 6f 66 20 74 79 70 65 6f 66 20 6f 72 20 64 e of typeof or d
1b490 65 6c 65 74 65 2e 0d 0a 0d 0a 20 20 20 20 20 20 elete.....
1b4a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 if (op
1b4b0 74 69 6f 6e 2e 75 6e 64 65 66 20 26 26 20 74 79 tion.undef && ty
1b4c0 70 65 6f 66 20 70 72 65 64 65 66 69 6e 65 64 5b peof predefined[
1b4d0 76 5d 20 21 3d 3d 20 22 62 6f 6f 6c 65 61 6e 22 v] !== "boolean"
1b4e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1b4f0 20 20 20 20 20 20 20 20 20 2f 2f 20 41 74 74 65 // Atte
1b500 6d 70 74 69 6e 67 20 74 6f 20 73 75 62 73 63 72 mpting to subscr
1b510 69 70 74 20 61 20 6e 75 6c 6c 20 72 65 66 65 72 ipt a null refer
1b520 65 6e 63 65 20 77 69 6c 6c 20 74 68 72 6f 77 20 ence will throw
1b530 61 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 an..
1b540 20 20 20 20 20 20 20 20 2f 2f 20 65 72 72 6f 72 // error
1b550 2c 20 65 76 65 6e 20 77 69 74 68 69 6e 20 74 68 , even within th
1b560 65 20 74 79 70 65 6f 66 20 61 6e 64 20 64 65 6c e typeof and del
1b570 65 74 65 20 6f 70 65 72 61 74 6f 72 73 0d 0a 20 ete operators..
1b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b590 20 20 20 69 66 20 28 21 28 61 6e 6f 6e 6e 61 6d if (!(anonnam
1b5a0 65 20 3d 3d 3d 20 22 74 79 70 65 6f 66 22 20 7c e === "typeof" |
1b5b0 7c 20 61 6e 6f 6e 6e 61 6d 65 20 3d 3d 3d 20 22 | anonname === "
1b5c0 64 65 6c 65 74 65 22 29 20 7c 7c 0d 0a 20 20 20 delete") ||..
1b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b5e0 20 20 20 20 20 28 6e 65 78 74 74 6f 6b 65 6e 20 (nexttoken
1b5f0 26 26 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 && (nexttoken.va
1b600 6c 75 65 20 3d 3d 3d 20 22 2e 22 20 7c 7c 20 6e lue === "." || n
1b610 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d exttoken.value =
1b620 3d 3d 20 22 5b 22 29 29 29 20 7b 0d 0a 0d 0a 20 == "["))) {....
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b640 20 20 20 20 20 20 20 69 73 75 6e 64 65 66 28 66 isundef(f
1b650 75 6e 63 74 2c 20 22 27 7b 61 7d 27 20 69 73 20 unct, "'{a}' is
1b660 6e 6f 74 20 64 65 66 69 6e 65 64 2e 22 2c 20 74 not defined.", t
1b670 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 oken, v);..
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1b690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1b6a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
1b6b0 20 20 20 20 20 20 20 6e 6f 74 65 5f 69 6d 70 6c note_impl
1b6c0 69 65 64 28 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 ied(token);..
1b6d0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
1b6e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1b6f0 20 20 20 2f 2f 20 49 66 20 74 68 65 20 6e 61 6d // If the nam
1b700 65 20 69 73 20 61 6c 72 65 61 64 79 20 64 65 66 e is already def
1b710 69 6e 65 64 20 69 6e 20 74 68 65 20 63 75 72 72 ined in the curr
1b720 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ent..
1b730 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 69 6f 6e // function
1b740 2c 20 62 75 74 20 6e 6f 74 20 61 73 20 6f 75 74 , but not as out
1b750 65 72 2c 20 74 68 65 6e 20 74 68 65 72 65 20 69 er, then there i
1b760 73 20 61 20 73 63 6f 70 65 20 65 72 72 6f 72 2e s a scope error.
1b770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
1b780 20 20 20 20 73 77 69 74 63 68 20 28 66 75 6e 63 switch (func
1b790 74 5b 76 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 t[v]) {..
1b7a0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 63 case "c
1b7b0 6c 6f 73 75 72 65 22 3a 0d 0a 20 20 20 20 20 20 losure":..
1b7c0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 case "
1b7d0 66 75 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20 20 function":..
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
1b7f0 20 22 76 61 72 22 3a 0d 0a 20 20 20 20 20 20 20 "var":..
1b800 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 75 case "u
1b810 6e 75 73 65 64 22 3a 0d 0a 20 20 20 20 20 20 20 nused":..
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
1b830 6e 69 6e 67 28 22 27 7b 61 7d 27 20 75 73 65 64 ning("'{a}' used
1b840 20 6f 75 74 20 6f 66 20 73 63 6f 70 65 2e 22 2c out of scope.",
1b850 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 token, v);..
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b870 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 break;..
1b880 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6c case "l
1b890 61 62 65 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20 abel":..
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
1b8b0 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 61 20 ing("'{a}' is a
1b8c0 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 2e statement label.
1b8d0 22 2c 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 ", token, v);..
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b8f0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
1b900 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
1b910 22 6f 75 74 65 72 22 3a 0d 0a 20 20 20 20 20 20 "outer":..
1b920 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 case "
1b930 67 6c 6f 62 61 6c 22 3a 0d 0a 20 20 20 20 20 20 global":..
1b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
1b950 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
1b960 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a default:..
1b970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b980 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 6e 61 // If the na
1b990 6d 65 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e me is defined in
1b9a0 20 61 6e 20 6f 75 74 65 72 20 66 75 6e 63 74 69 an outer functi
1b9b0 6f 6e 2c 20 6d 61 6b 65 20 61 6e 20 6f 75 74 65 on, make an oute
1b9c0 72 20 65 6e 74 72 79 2c 0d 0a 20 20 20 20 20 20 r entry,..
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
1b9e0 20 61 6e 64 20 69 66 20 69 74 20 77 61 73 20 75 and if it was u
1b9f0 6e 75 73 65 64 2c 20 6d 61 6b 65 20 69 74 20 76 nused, make it v
1ba00 61 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ar...
1ba10 20 20 20 20 20 20 20 20 20 69 66 20 28 73 20 3d if (s =
1ba20 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20 20 20 20 == true) {..
1ba30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ba40 20 20 20 20 66 75 6e 63 74 5b 76 5d 20 3d 20 74 funct[v] = t
1ba50 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 rue;..
1ba60 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
1ba70 20 69 66 20 28 73 20 3d 3d 3d 20 6e 75 6c 6c 29 if (s === null)
1ba80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
1ba90 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
1baa0 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 6e 6f ing("'{a}' is no
1bab0 74 20 61 6c 6c 6f 77 65 64 2e 22 2c 20 74 6f 6b t allowed.", tok
1bac0 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20 en, v);..
1bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bae0 20 6e 6f 74 65 5f 69 6d 70 6c 69 65 64 28 74 6f note_implied(to
1baf0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
1bb00 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
1bb10 65 20 69 66 20 28 74 79 70 65 6f 66 20 73 20 21 e if (typeof s !
1bb20 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a == "object") {..
1bb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bb40 20 20 20 20 20 20 20 20 2f 2f 20 4f 70 65 72 61 // Opera
1bb50 74 6f 72 73 20 74 79 70 65 6f 66 20 61 6e 64 20 tors typeof and
1bb60 64 65 6c 65 74 65 20 64 6f 20 6e 6f 74 20 72 61 delete do not ra
1bb70 69 73 65 20 72 75 6e 74 69 6d 65 20 65 72 72 6f ise runtime erro
1bb80 72 73 20 65 76 65 6e 0d 0a 20 20 20 20 20 20 20 rs even..
1bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bba0 20 2f 2f 20 69 66 20 74 68 65 20 62 61 73 65 20 // if the base
1bbb0 6f 62 6a 65 63 74 20 6f 66 20 61 20 72 65 66 65 object of a refe
1bbc0 72 65 6e 63 65 20 69 73 20 6e 75 6c 6c 20 73 6f rence is null so
1bbd0 20 6e 6f 20 6e 65 65 64 20 74 6f 0d 0a 20 20 20 no need to..
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bbf0 20 20 20 20 20 2f 2f 20 64 69 73 70 6c 61 79 20 // display
1bc00 77 61 72 6e 69 6e 67 20 69 66 20 77 65 27 72 65 warning if we're
1bc10 20 69 6e 73 69 64 65 20 6f 66 20 74 79 70 65 6f inside of typeo
1bc20 66 20 6f 72 20 64 65 6c 65 74 65 2e 0d 0a 20 20 f or delete...
1bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bc40 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
1bc50 2e 75 6e 64 65 66 29 20 7b 0d 0a 20 20 20 20 20 .undef) {..
1bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bc70 20 20 20 20 20 20 20 2f 2f 20 41 74 74 65 6d 70 // Attemp
1bc80 74 69 6e 67 20 74 6f 20 73 75 62 73 63 72 69 70 ting to subscrip
1bc90 74 20 61 20 6e 75 6c 6c 20 72 65 66 65 72 65 6e t a null referen
1bca0 63 65 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e ce will throw an
1bcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
1bcd0 20 65 72 72 6f 72 2c 20 65 76 65 6e 20 77 69 74 error, even wit
1bce0 68 69 6e 20 74 68 65 20 74 79 70 65 6f 66 20 61 hin the typeof a
1bcf0 6e 64 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 nd delete operat
1bd00 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ors..
1bd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bd20 20 69 66 20 28 21 28 61 6e 6f 6e 6e 61 6d 65 20 if (!(anonname
1bd30 3d 3d 3d 20 22 74 79 70 65 6f 66 22 20 7c 7c 20 === "typeof" ||
1bd40 61 6e 6f 6e 6e 61 6d 65 20 3d 3d 3d 20 22 64 65 anonname === "de
1bd50 6c 65 74 65 22 29 20 7c 7c 0d 0a 20 20 20 20 20 lete") ||..
1bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bd70 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 (next
1bd80 74 6f 6b 65 6e 20 26 26 0d 0a 20 20 20 20 20 20 token &&..
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e (n
1bdb0 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d exttoken.value =
1bdc0 3d 3d 20 22 2e 22 20 7c 7c 20 6e 65 78 74 74 6f == "." || nextto
1bdd0 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 5b ken.value === "[
1bde0 22 29 29 29 20 7b 0d 0a 0d 0a 20 20 20 20 20 20 "))) {....
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1be00 20 20 20 20 20 20 20 20 20 20 69 73 75 6e 64 65 isunde
1be10 66 28 66 75 6e 63 74 2c 20 22 27 7b 61 7d 27 20 f(funct, "'{a}'
1be20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 2e 22 is not defined."
1be30 2c 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 , token, v);..
1be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1be50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
1be60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1be70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
1be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1be90 66 75 6e 63 74 5b 76 5d 20 3d 20 74 72 75 65 3b funct[v] = true;
1bea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1beb0 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 69 note_i
1bec0 6d 70 6c 69 65 64 28 74 6f 6b 65 6e 29 3b 0d 0a mplied(token);..
1bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bee0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 } else {..
1bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bf00 20 20 20 20 20 20 73 77 69 74 63 68 20 28 73 5b switch (s[
1bf10 76 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 v]) {..
1bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
1bf30 61 73 65 20 22 66 75 6e 63 74 69 6f 6e 22 3a 0d ase "function":.
1bf40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1bf50 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 75 case "u
1bf60 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 nction":..
1bf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bf80 20 20 20 20 20 20 74 68 69 73 5b 22 66 75 6e 63 this["func
1bf90 74 69 6f 6e 22 5d 20 3d 20 74 72 75 65 3b 0d 0a tion"] = true;..
1bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bfb0 20 20 20 20 20 20 20 20 20 20 20 20 73 5b 76 5d s[v]
1bfc0 20 3d 20 22 63 6c 6f 73 75 72 65 22 3b 0d 0a 20 = "closure";..
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bfe0 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 funct
1bff0 5b 76 5d 20 3d 20 73 5b 22 28 67 6c 6f 62 61 6c [v] = s["(global
1c000 29 22 5d 20 3f 20 22 67 6c 6f 62 61 6c 22 20 3a )"] ? "global" :
1c010 20 22 6f 75 74 65 72 22 3b 0d 0a 20 20 20 20 20 "outer";..
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c030 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 break;..
1c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c050 20 20 20 20 20 20 20 63 61 73 65 20 22 76 61 72 case "var
1c060 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
1c070 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
1c080 20 22 75 6e 75 73 65 64 22 3a 0d 0a 20 20 20 20 "unused":..
1c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c0a0 20 20 20 20 20 20 20 20 73 5b 76 5d 20 3d 20 22 s[v] = "
1c0b0 63 6c 6f 73 75 72 65 22 3b 0d 0a 20 20 20 20 20 closure";..
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c0d0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 76 5d 20 funct[v]
1c0e0 3d 20 73 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 20 = s["(global)"]
1c0f0 3f 20 22 67 6c 6f 62 61 6c 22 20 3a 20 22 6f 75 ? "global" : "ou
1c100 74 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 ter";..
1c110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c120 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
1c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c140 20 20 20 63 61 73 65 20 22 63 6c 6f 73 75 72 65 case "closure
1c150 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
1c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c170 66 75 6e 63 74 5b 76 5d 20 3d 20 73 5b 22 28 67 funct[v] = s["(g
1c180 6c 6f 62 61 6c 29 22 5d 20 3f 20 22 67 6c 6f 62 lobal)"] ? "glob
1c190 61 6c 22 20 3a 20 22 6f 75 74 65 72 22 3b 0d 0a al" : "outer";..
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c1b0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
1c1c0 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
1c1d0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
1c1e0 20 22 6c 61 62 65 6c 22 3a 0d 0a 20 20 20 20 20 "label":..
1c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c200 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 warning("
1c210 27 7b 61 7d 27 20 69 73 20 61 20 73 74 61 74 65 '{a}' is a state
1c220 6d 65 6e 74 20 6c 61 62 65 6c 2e 22 2c 20 74 6f ment label.", to
1c230 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 ken, v);..
1c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c250 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1c260 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
1c270 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1c280 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
1c290 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
1c2a0 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 20 20 20 this;..
1c2b0 7d 2c 0d 0a 20 20 20 20 20 20 20 20 6c 65 64 3a },.. led:
1c2c0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a function () {..
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f erro
1c2e0 72 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 6f r("Expected an o
1c2f0 70 65 72 61 74 6f 72 20 61 6e 64 20 69 6e 73 74 perator and inst
1c300 65 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c ead saw '{a}'.",
1c310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1c320 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 nexttoken, nex
1c330 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a ttoken.value);..
1c340 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d }.. }
1c350 3b 0d 0a 0d 0a 20 20 20 20 74 79 70 65 28 22 28 ;.... type("(
1c360 72 65 67 65 78 70 29 22 2c 20 66 75 6e 63 74 69 regexp)", functi
1c370 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 on () {..
1c380 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 return this;..
1c390 20 20 20 7d 29 3b 0d 0a 0d 0a 0d 0a 2f 2f 20 45 });......// E
1c3a0 43 4d 41 53 63 72 69 70 74 20 70 61 72 73 65 72 CMAScript parser
1c3b0 0d 0a 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 28 .... delim("(
1c3c0 65 6e 64 6c 69 6e 65 29 22 29 3b 0d 0a 20 20 20 endline)");..
1c3d0 20 64 65 6c 69 6d 28 22 28 62 65 67 69 6e 29 22 delim("(begin)"
1c3e0 29 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 28 );.. delim("(
1c3f0 65 6e 64 29 22 29 2e 72 65 61 63 68 20 3d 20 74 end)").reach = t
1c400 72 75 65 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28 rue;.. delim(
1c410 22 3c 2f 22 29 2e 72 65 61 63 68 20 3d 20 74 72 "</").reach = tr
1c420 75 65 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 ue;.. delim("
1c430 3c 21 22 29 3b 0d 0a 20 20 20 20 64 65 6c 69 6d <!");.. delim
1c440 28 22 3c 21 2d 2d 22 29 3b 0d 0a 20 20 20 20 64 ("<!--");.. d
1c450 65 6c 69 6d 28 22 2d 2d 3e 22 29 3b 0d 0a 20 20 elim("-->");..
1c460 20 20 64 65 6c 69 6d 28 22 28 65 72 72 6f 72 29 delim("(error)
1c470 22 29 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b ").reach = true;
1c480 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 7d 22 29 .. delim("}")
1c490 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a .reach = true;..
1c4a0 20 20 20 20 64 65 6c 69 6d 28 22 29 22 29 3b 0d delim(")");.
1c4b0 0a 20 20 20 20 64 65 6c 69 6d 28 22 5d 22 29 3b . delim("]");
1c4c0 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 5c 22 22 .. delim("\""
1c4d0 29 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d ).reach = true;.
1c4e0 0a 20 20 20 20 64 65 6c 69 6d 28 22 27 22 29 2e . delim("'").
1c4f0 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a 20 reach = true;..
1c500 20 20 20 64 65 6c 69 6d 28 22 3b 22 29 3b 0d 0a delim(";");..
1c510 20 20 20 20 64 65 6c 69 6d 28 22 3a 22 29 2e 72 delim(":").r
1c520 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a 20 20 each = true;..
1c530 20 20 64 65 6c 69 6d 28 22 2c 22 29 3b 0d 0a 20 delim(",");..
1c540 20 20 20 64 65 6c 69 6d 28 22 23 22 29 3b 0d 0a delim("#");..
1c550 20 20 20 20 64 65 6c 69 6d 28 22 40 22 29 3b 0d delim("@");.
1c560 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 65 6c . reserve("el
1c570 73 65 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 se");.. reser
1c580 76 65 28 22 63 61 73 65 22 29 2e 72 65 61 63 68 ve("case").reach
1c590 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 72 65 = true;.. re
1c5a0 73 65 72 76 65 28 22 63 61 74 63 68 22 29 3b 0d serve("catch");.
1c5b0 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 64 65 . reserve("de
1c5c0 66 61 75 6c 74 22 29 2e 72 65 61 63 68 20 3d 20 fault").reach =
1c5d0 74 72 75 65 3b 0d 0a 20 20 20 20 72 65 73 65 72 true;.. reser
1c5e0 76 65 28 22 66 69 6e 61 6c 6c 79 22 29 3b 0d 0a ve("finally");..
1c5f0 20 20 20 20 72 65 73 65 72 76 65 76 61 72 28 22 reservevar("
1c600 61 72 67 75 6d 65 6e 74 73 22 2c 20 66 75 6e 63 arguments", func
1c610 74 69 6f 6e 20 28 78 29 20 7b 0d 0a 20 20 20 20 tion (x) {..
1c620 20 20 20 20 69 66 20 28 64 69 72 65 63 74 69 76 if (directiv
1c630 65 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d 20 e["use strict"]
1c640 26 26 20 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 && funct["(globa
1c650 6c 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 l)"]) {..
1c660 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 53 74 warning("St
1c670 72 69 63 74 20 76 69 6f 6c 61 74 69 6f 6e 2e 22 rict violation."
1c680 2c 20 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d , x);.. }
1c690 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 72 .. });.. r
1c6a0 65 73 65 72 76 65 76 61 72 28 22 65 76 61 6c 22 eservevar("eval"
1c6b0 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 65 76 );.. reservev
1c6c0 61 72 28 22 66 61 6c 73 65 22 29 3b 0d 0a 20 20 ar("false");..
1c6d0 20 20 72 65 73 65 72 76 65 76 61 72 28 22 49 6e reservevar("In
1c6e0 66 69 6e 69 74 79 22 29 3b 0d 0a 20 20 20 20 72 finity");.. r
1c6f0 65 73 65 72 76 65 76 61 72 28 22 4e 61 4e 22 29 eservevar("NaN")
1c700 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 65 76 61 ;.. reserveva
1c710 72 28 22 6e 75 6c 6c 22 29 3b 0d 0a 20 20 20 20 r("null");..
1c720 72 65 73 65 72 76 65 76 61 72 28 22 74 68 69 73 reservevar("this
1c730 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 78 29 20 ", function (x)
1c740 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 {.. if (d
1c750 69 72 65 63 74 69 76 65 5b 22 75 73 65 20 73 74 irective["use st
1c760 72 69 63 74 22 5d 20 26 26 20 21 6f 70 74 69 6f rict"] && !optio
1c770 6e 2e 76 61 6c 69 64 74 68 69 73 20 26 26 20 28 n.validthis && (
1c780 28 66 75 6e 63 74 5b 22 28 73 74 61 74 65 6d 65 (funct["(stateme
1c790 6e 74 29 22 5d 20 26 26 0d 0a 20 20 20 20 20 20 nt)"] &&..
1c7a0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b funct[
1c7b0 22 28 6e 61 6d 65 29 22 5d 2e 63 68 61 72 41 74 "(name)"].charAt
1c7c0 28 30 29 20 3e 20 22 5a 22 29 20 7c 7c 20 66 75 (0) > "Z") || fu
1c7d0 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 29 nct["(global)"])
1c7e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1c7f0 20 77 61 72 6e 69 6e 67 28 22 50 6f 73 73 69 62 warning("Possib
1c800 6c 65 20 73 74 72 69 63 74 20 76 69 6f 6c 61 74 le strict violat
1c810 69 6f 6e 2e 22 2c 20 78 29 3b 0d 0a 20 20 20 20 ion.", x);..
1c820 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29 3b 0d 0a }.. });..
1c830 20 20 20 20 72 65 73 65 72 76 65 76 61 72 28 22 reservevar("
1c840 74 72 75 65 22 29 3b 0d 0a 20 20 20 20 72 65 73 true");.. res
1c850 65 72 76 65 76 61 72 28 22 75 6e 64 65 66 69 6e ervevar("undefin
1c860 65 64 22 29 3b 0d 0a 20 20 20 20 61 73 73 69 67 ed");.. assig
1c870 6e 6f 70 28 22 3d 22 2c 20 22 61 73 73 69 67 6e nop("=", "assign
1c880 22 2c 20 32 30 29 3b 0d 0a 20 20 20 20 61 73 73 ", 20);.. ass
1c890 69 67 6e 6f 70 28 22 2b 3d 22 2c 20 22 61 73 73 ignop("+=", "ass
1c8a0 69 67 6e 61 64 64 22 2c 20 32 30 29 3b 0d 0a 20 ignadd", 20);..
1c8b0 20 20 20 61 73 73 69 67 6e 6f 70 28 22 2d 3d 22 assignop("-="
1c8c0 2c 20 22 61 73 73 69 67 6e 73 75 62 22 2c 20 32 , "assignsub", 2
1c8d0 30 29 3b 0d 0a 20 20 20 20 61 73 73 69 67 6e 6f 0);.. assigno
1c8e0 70 28 22 2a 3d 22 2c 20 22 61 73 73 69 67 6e 6d p("*=", "assignm
1c8f0 75 6c 74 22 2c 20 32 30 29 3b 0d 0a 20 20 20 20 ult", 20);..
1c900 61 73 73 69 67 6e 6f 70 28 22 2f 3d 22 2c 20 22 assignop("/=", "
1c910 61 73 73 69 67 6e 64 69 76 22 2c 20 32 30 29 2e assigndiv", 20).
1c920 6e 75 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 nud = function (
1c930 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 65 72 72 ) {.. err
1c940 6f 72 28 22 41 20 72 65 67 75 6c 61 72 20 65 78 or("A regular ex
1c950 70 72 65 73 73 69 6f 6e 20 6c 69 74 65 72 61 6c pression literal
1c960 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73 65 64 can be confused
1c970 20 77 69 74 68 20 27 2f 3d 27 2e 22 29 3b 0d 0a with '/='.");..
1c980 20 20 20 20 7d 3b 0d 0a 20 20 20 20 61 73 73 69 };.. assi
1c990 67 6e 6f 70 28 22 25 3d 22 2c 20 22 61 73 73 69 gnop("%=", "assi
1c9a0 67 6e 6d 6f 64 22 2c 20 32 30 29 3b 0d 0a 20 20 gnmod", 20);..
1c9b0 20 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f bitwiseassigno
1c9c0 70 28 22 26 3d 22 2c 20 22 61 73 73 69 67 6e 62 p("&=", "assignb
1c9d0 69 74 61 6e 64 22 2c 20 32 30 29 3b 0d 0a 20 20 itand", 20);..
1c9e0 20 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f bitwiseassigno
1c9f0 70 28 22 7c 3d 22 2c 20 22 61 73 73 69 67 6e 62 p("|=", "assignb
1ca00 69 74 6f 72 22 2c 20 32 30 29 3b 0d 0a 20 20 20 itor", 20);..
1ca10 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f 70 bitwiseassignop
1ca20 28 22 5e 3d 22 2c 20 22 61 73 73 69 67 6e 62 69 ("^=", "assignbi
1ca30 74 78 6f 72 22 2c 20 32 30 29 3b 0d 0a 20 20 20 txor", 20);..
1ca40 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f 70 bitwiseassignop
1ca50 28 22 3c 3c 3d 22 2c 20 22 61 73 73 69 67 6e 73 ("<<=", "assigns
1ca60 68 69 66 74 6c 65 66 74 22 2c 20 32 30 29 3b 0d hiftleft", 20);.
1ca70 0a 20 20 20 20 62 69 74 77 69 73 65 61 73 73 69 . bitwiseassi
1ca80 67 6e 6f 70 28 22 3e 3e 3d 22 2c 20 22 61 73 73 gnop(">>=", "ass
1ca90 69 67 6e 73 68 69 66 74 72 69 67 68 74 22 2c 20 ignshiftright",
1caa0 32 30 29 3b 0d 0a 20 20 20 20 62 69 74 77 69 73 20);.. bitwis
1cab0 65 61 73 73 69 67 6e 6f 70 28 22 3e 3e 3e 3d 22 eassignop(">>>="
1cac0 2c 20 22 61 73 73 69 67 6e 73 68 69 66 74 72 69 , "assignshiftri
1cad0 67 68 74 75 6e 73 69 67 6e 65 64 22 2c 20 32 30 ghtunsigned", 20
1cae0 29 3b 0d 0a 20 20 20 20 69 6e 66 69 78 28 22 3f );.. infix("?
1caf0 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 ", function (lef
1cb00 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20 20 20 20 t, that) {..
1cb10 20 20 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20 that.left =
1cb20 6c 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 74 left;.. t
1cb30 68 61 74 2e 72 69 67 68 74 20 3d 20 65 78 70 72 hat.right = expr
1cb40 65 73 73 69 6f 6e 28 31 30 29 3b 0d 0a 20 20 20 ession(10);..
1cb50 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22 advance(":"
1cb60 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 61 74 );.. that
1cb70 5b 22 65 6c 73 65 22 5d 20 3d 20 65 78 70 72 65 ["else"] = expre
1cb80 73 73 69 6f 6e 28 31 30 29 3b 0d 0a 20 20 20 20 ssion(10);..
1cb90 20 20 20 20 72 65 74 75 72 6e 20 74 68 61 74 3b return that;
1cba0 0d 0a 20 20 20 20 7d 2c 20 33 30 29 3b 0d 0a 0d .. }, 30);...
1cbb0 0a 20 20 20 20 69 6e 66 69 78 28 22 7c 7c 22 2c . infix("||",
1cbc0 20 22 6f 72 22 2c 20 34 30 29 3b 0d 0a 20 20 20 "or", 40);..
1cbd0 20 69 6e 66 69 78 28 22 26 26 22 2c 20 22 61 6e infix("&&", "an
1cbe0 64 22 2c 20 35 30 29 3b 0d 0a 20 20 20 20 62 69 d", 50);.. bi
1cbf0 74 77 69 73 65 28 22 7c 22 2c 20 22 62 69 74 6f twise("|", "bito
1cc00 72 22 2c 20 37 30 29 3b 0d 0a 20 20 20 20 62 69 r", 70);.. bi
1cc10 74 77 69 73 65 28 22 5e 22 2c 20 22 62 69 74 78 twise("^", "bitx
1cc20 6f 72 22 2c 20 38 30 29 3b 0d 0a 20 20 20 20 62 or", 80);.. b
1cc30 69 74 77 69 73 65 28 22 26 22 2c 20 22 62 69 74 itwise("&", "bit
1cc40 61 6e 64 22 2c 20 39 30 29 3b 0d 0a 20 20 20 20 and", 90);..
1cc50 72 65 6c 61 74 69 6f 6e 28 22 3d 3d 22 2c 20 66 relation("==", f
1cc60 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74 2c 20 72 unction (left, r
1cc70 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 ight) {..
1cc80 20 76 61 72 20 65 71 6e 75 6c 6c 20 3d 20 6f 70 var eqnull = op
1cc90 74 69 6f 6e 2e 65 71 6e 75 6c 6c 20 26 26 20 28 tion.eqnull && (
1cca0 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 left.value === "
1ccb0 6e 75 6c 6c 22 20 7c 7c 20 72 69 67 68 74 2e 76 null" || right.v
1ccc0 61 6c 75 65 20 3d 3d 3d 20 22 6e 75 6c 6c 22 29 alue === "null")
1ccd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 ;.... if
1cce0 28 21 65 71 6e 75 6c 6c 20 26 26 20 6f 70 74 69 (!eqnull && opti
1ccf0 6f 6e 2e 65 71 65 71 65 71 29 0d 0a 20 20 20 20 on.eqeqeq)..
1cd00 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
1cd10 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20 "Expected '{a}'
1cd20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 and instead saw
1cd30 27 7b 62 7d 27 2e 22 2c 20 74 68 69 73 2c 20 22 '{b}'.", this, "
1cd40 3d 3d 3d 22 2c 20 22 3d 3d 22 29 3b 0d 0a 20 20 ===", "==");..
1cd50 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 69 else if (i
1cd60 73 50 6f 6f 72 52 65 6c 61 74 69 6f 6e 28 6c 65 sPoorRelation(le
1cd70 66 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 ft))..
1cd80 20 20 77 61 72 6e 69 6e 67 28 22 55 73 65 20 27 warning("Use '
1cd90 7b 61 7d 27 20 74 6f 20 63 6f 6d 70 61 72 65 20 {a}' to compare
1cda0 77 69 74 68 20 27 7b 62 7d 27 2e 22 2c 20 74 68 with '{b}'.", th
1cdb0 69 73 2c 20 22 3d 3d 3d 22 2c 20 6c 65 66 74 2e is, "===", left.
1cdc0 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 value);..
1cdd0 20 65 6c 73 65 20 69 66 20 28 69 73 50 6f 6f 72 else if (isPoor
1cde0 52 65 6c 61 74 69 6f 6e 28 72 69 67 68 74 29 29 Relation(right))
1cdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 .. wa
1ce00 72 6e 69 6e 67 28 22 55 73 65 20 27 7b 61 7d 27 rning("Use '{a}'
1ce10 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74 68 to compare with
1ce20 20 27 7b 62 7d 27 2e 22 2c 20 74 68 69 73 2c 20 '{b}'.", this,
1ce30 22 3d 3d 3d 22 2c 20 72 69 67 68 74 2e 76 61 6c "===", right.val
1ce40 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ue);....
1ce50 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 return this;..
1ce60 20 20 7d 29 3b 0d 0a 20 20 20 20 72 65 6c 61 74 });.. relat
1ce70 69 6f 6e 28 22 3d 3d 3d 22 29 3b 0d 0a 20 20 20 ion("===");..
1ce80 20 72 65 6c 61 74 69 6f 6e 28 22 21 3d 22 2c 20 relation("!=",
1ce90 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74 2c 20 function (left,
1cea0 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20 right) {..
1ceb0 20 20 76 61 72 20 65 71 6e 75 6c 6c 20 3d 20 6f var eqnull = o
1cec0 70 74 69 6f 6e 2e 65 71 6e 75 6c 6c 20 26 26 0d ption.eqnull &&.
1ced0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1cee0 20 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d (left.value ===
1cef0 20 22 6e 75 6c 6c 22 20 7c 7c 20 72 69 67 68 74 "null" || right
1cf00 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6e 75 6c 6c .value === "null
1cf10 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 ");.... i
1cf20 66 20 28 21 65 71 6e 75 6c 6c 20 26 26 20 6f 70 f (!eqnull && op
1cf30 74 69 6f 6e 2e 65 71 65 71 65 71 29 20 7b 0d 0a tion.eqeqeq) {..
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
1cf50 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 27 7b ing("Expected '{
1cf60 61 7d 27 20 61 6e 64 20 69 6e 73 74 65 61 64 20 a}' and instead
1cf70 73 61 77 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20 saw '{b}'.",..
1cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1cf90 20 20 74 68 69 73 2c 20 22 21 3d 3d 22 2c 20 22 this, "!==", "
1cfa0 21 3d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d !=");.. }
1cfb0 20 65 6c 73 65 20 69 66 20 28 69 73 50 6f 6f 72 else if (isPoor
1cfc0 52 65 6c 61 74 69 6f 6e 28 6c 65 66 74 29 29 20 Relation(left))
1cfd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 {.. w
1cfe0 61 72 6e 69 6e 67 28 22 55 73 65 20 27 7b 61 7d arning("Use '{a}
1cff0 27 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74 ' to compare wit
1d000 68 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20 20 20 h '{b}'.",..
1d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1d020 74 68 69 73 2c 20 22 21 3d 3d 22 2c 20 6c 65 66 this, "!==", lef
1d030 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 t.value);..
1d040 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 73 } else if (is
1d050 50 6f 6f 72 52 65 6c 61 74 69 6f 6e 28 72 69 67 PoorRelation(rig
1d060 68 74 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ht)) {..
1d070 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 73 65 warning("Use
1d080 20 27 7b 61 7d 27 20 74 6f 20 63 6f 6d 70 61 72 '{a}' to compar
1d090 65 20 77 69 74 68 20 27 7b 62 7d 27 2e 22 2c 0d e with '{b}'.",.
1d0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1d0b0 20 20 20 20 20 74 68 69 73 2c 20 22 21 3d 3d 22 this, "!=="
1d0c0 2c 20 72 69 67 68 74 2e 76 61 6c 75 65 29 3b 0d , right.value);.
1d0d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
1d0e0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
1d0f0 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 72 .. });.. r
1d100 65 6c 61 74 69 6f 6e 28 22 21 3d 3d 22 29 3b 0d elation("!==");.
1d110 0a 20 20 20 20 72 65 6c 61 74 69 6f 6e 28 22 3c . relation("<
1d120 22 29 3b 0d 0a 20 20 20 20 72 65 6c 61 74 69 6f ");.. relatio
1d130 6e 28 22 3e 22 29 3b 0d 0a 20 20 20 20 72 65 6c n(">");.. rel
1d140 61 74 69 6f 6e 28 22 3c 3d 22 29 3b 0d 0a 20 20 ation("<=");..
1d150 20 20 72 65 6c 61 74 69 6f 6e 28 22 3e 3d 22 29 relation(">=")
1d160 3b 0d 0a 20 20 20 20 62 69 74 77 69 73 65 28 22 ;.. bitwise("
1d170 3c 3c 22 2c 20 22 73 68 69 66 74 6c 65 66 74 22 <<", "shiftleft"
1d180 2c 20 31 32 30 29 3b 0d 0a 20 20 20 20 62 69 74 , 120);.. bit
1d190 77 69 73 65 28 22 3e 3e 22 2c 20 22 73 68 69 66 wise(">>", "shif
1d1a0 74 72 69 67 68 74 22 2c 20 31 32 30 29 3b 0d 0a tright", 120);..
1d1b0 20 20 20 20 62 69 74 77 69 73 65 28 22 3e 3e 3e bitwise(">>>
1d1c0 22 2c 20 22 73 68 69 66 74 72 69 67 68 74 75 6e ", "shiftrightun
1d1d0 73 69 67 6e 65 64 22 2c 20 31 32 30 29 3b 0d 0a signed", 120);..
1d1e0 20 20 20 20 69 6e 66 69 78 28 22 69 6e 22 2c 20 infix("in",
1d1f0 22 69 6e 22 2c 20 31 32 30 29 3b 0d 0a 20 20 20 "in", 120);..
1d200 20 69 6e 66 69 78 28 22 69 6e 73 74 61 6e 63 65 infix("instance
1d210 6f 66 22 2c 20 22 69 6e 73 74 61 6e 63 65 6f 66 of", "instanceof
1d220 22 2c 20 31 32 30 29 3b 0d 0a 20 20 20 20 69 6e ", 120);.. in
1d230 66 69 78 28 22 2b 22 2c 20 66 75 6e 63 74 69 6f fix("+", functio
1d240 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b n (left, that) {
1d250 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 69 .. var ri
1d260 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e ght = expression
1d270 28 31 33 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 (130);..
1d280 69 66 20 28 6c 65 66 74 20 26 26 20 72 69 67 68 if (left && righ
1d290 74 20 26 26 20 6c 65 66 74 2e 69 64 20 3d 3d 3d t && left.id ===
1d2a0 20 22 28 73 74 72 69 6e 67 29 22 20 26 26 20 72 "(string)" && r
1d2b0 69 67 68 74 2e 69 64 20 3d 3d 3d 20 22 28 73 74 ight.id === "(st
1d2c0 72 69 6e 67 29 22 29 20 7b 0d 0a 20 20 20 20 20 ring)") {..
1d2d0 20 20 20 20 20 20 20 6c 65 66 74 2e 76 61 6c 75 left.valu
1d2e0 65 20 2b 3d 20 72 69 67 68 74 2e 76 61 6c 75 65 e += right.value
1d2f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c ;.. l
1d300 65 66 74 2e 63 68 61 72 61 63 74 65 72 20 3d 20 eft.character =
1d310 72 69 67 68 74 2e 63 68 61 72 61 63 74 65 72 3b right.character;
1d320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1d330 20 28 21 6f 70 74 69 6f 6e 2e 73 63 72 69 70 74 (!option.script
1d340 75 72 6c 20 26 26 20 6a 78 2e 74 65 73 74 28 6c url && jx.test(l
1d350 65 66 74 2e 76 61 6c 75 65 29 29 20 7b 0d 0a 20 eft.value)) {..
1d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
1d370 61 72 6e 69 6e 67 28 22 4a 61 76 61 53 63 72 69 arning("JavaScri
1d380 70 74 20 55 52 4c 2e 22 2c 20 6c 65 66 74 29 3b pt URL.", left);
1d390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
1d3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
1d3b0 75 72 6e 20 6c 65 66 74 3b 0d 0a 20 20 20 20 20 urn left;..
1d3c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 74 68 }.. th
1d3d0 61 74 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d at.left = left;.
1d3e0 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 72 69 . that.ri
1d3f0 67 68 74 20 3d 20 72 69 67 68 74 3b 0d 0a 20 20 ght = right;..
1d400 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 61 return tha
1d410 74 3b 0d 0a 20 20 20 20 7d 2c 20 31 33 30 29 3b t;.. }, 130);
1d420 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 2b 22 .. prefix("+"
1d430 2c 20 22 6e 75 6d 22 29 3b 0d 0a 20 20 20 20 70 , "num");.. p
1d440 72 65 66 69 78 28 22 2b 2b 2b 22 2c 20 66 75 6e refix("+++", fun
1d450 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 ction () {..
1d460 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e warning("Con
1d470 66 75 73 69 6e 67 20 70 6c 75 73 65 73 2e 22 29 fusing pluses.")
1d480 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
1d490 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 right = expressi
1d4a0 6f 6e 28 31 35 30 29 3b 0d 0a 20 20 20 20 20 20 on(150);..
1d4b0 20 20 74 68 69 73 2e 61 72 69 74 79 20 3d 20 22 this.arity = "
1d4c0 75 6e 61 72 79 22 3b 0d 0a 20 20 20 20 20 20 20 unary";..
1d4d0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 return this;..
1d4e0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 69 6e 66 69 });.. infi
1d4f0 78 28 22 2b 2b 2b 22 2c 20 66 75 6e 63 74 69 6f x("+++", functio
1d500 6e 20 28 6c 65 66 74 29 20 7b 0d 0a 20 20 20 20 n (left) {..
1d510 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e warning("Con
1d520 66 75 73 69 6e 67 20 70 6c 75 73 65 73 2e 22 29 fusing pluses.")
1d530 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
1d540 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20 left = left;..
1d550 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 this.right
1d560 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31 33 = expression(13
1d570 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 0);.. ret
1d580 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d urn this;.. }
1d590 2c 20 31 33 30 29 3b 0d 0a 20 20 20 20 69 6e 66 , 130);.. inf
1d5a0 69 78 28 22 2d 22 2c 20 22 73 75 62 22 2c 20 31 ix("-", "sub", 1
1d5b0 33 30 29 3b 0d 0a 20 20 20 20 70 72 65 66 69 78 30);.. prefix
1d5c0 28 22 2d 22 2c 20 22 6e 65 67 22 29 3b 0d 0a 20 ("-", "neg");..
1d5d0 20 20 20 70 72 65 66 69 78 28 22 2d 2d 2d 22 2c prefix("---",
1d5e0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a function () {..
1d5f0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
1d600 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e 75 73 "Confusing minus
1d610 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 es.");..
1d620 74 68 69 73 2e 72 69 67 68 74 20 3d 20 65 78 70 this.right = exp
1d630 72 65 73 73 69 6f 6e 28 31 35 30 29 3b 0d 0a 20 ression(150);..
1d640 20 20 20 20 20 20 20 74 68 69 73 2e 61 72 69 74 this.arit
1d650 79 20 3d 20 22 75 6e 61 72 79 22 3b 0d 0a 20 20 y = "unary";..
1d660 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
1d670 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20 s;.. });..
1d680 20 69 6e 66 69 78 28 22 2d 2d 2d 22 2c 20 66 75 infix("---", fu
1d690 6e 63 74 69 6f 6e 20 28 6c 65 66 74 29 20 7b 0d nction (left) {.
1d6a0 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 . warning
1d6b0 28 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e 75 ("Confusing minu
1d6c0 73 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 ses.");..
1d6d0 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6c 65 66 this.left = lef
1d6e0 74 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 t;.. this
1d6f0 2e 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 .right = express
1d700 69 6f 6e 28 31 33 30 29 3b 0d 0a 20 20 20 20 20 ion(130);..
1d710 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d return this;.
1d720 0a 20 20 20 20 7d 2c 20 31 33 30 29 3b 0d 0a 20 . }, 130);..
1d730 20 20 20 69 6e 66 69 78 28 22 2a 22 2c 20 22 6d infix("*", "m
1d740 75 6c 74 22 2c 20 31 34 30 29 3b 0d 0a 20 20 20 ult", 140);..
1d750 20 69 6e 66 69 78 28 22 2f 22 2c 20 22 64 69 76 infix("/", "div
1d760 22 2c 20 31 34 30 29 3b 0d 0a 20 20 20 20 69 6e ", 140);.. in
1d770 66 69 78 28 22 25 22 2c 20 22 6d 6f 64 22 2c 20 fix("%", "mod",
1d780 31 34 30 29 3b 0d 0a 0d 0a 20 20 20 20 73 75 66 140);.... suf
1d790 66 69 78 28 22 2b 2b 22 2c 20 22 70 6f 73 74 69 fix("++", "posti
1d7a0 6e 63 22 29 3b 0d 0a 20 20 20 20 70 72 65 66 69 nc");.. prefi
1d7b0 78 28 22 2b 2b 22 2c 20 22 70 72 65 69 6e 63 22 x("++", "preinc"
1d7c0 29 3b 0d 0a 20 20 20 20 73 79 6e 74 61 78 5b 22 );.. syntax["
1d7d0 2b 2b 22 5d 2e 65 78 70 73 20 3d 20 74 72 75 65 ++"].exps = true
1d7e0 3b 0d 0a 0d 0a 20 20 20 20 73 75 66 66 69 78 28 ;.... suffix(
1d7f0 22 2d 2d 22 2c 20 22 70 6f 73 74 64 65 63 22 29 "--", "postdec")
1d800 3b 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 2d ;.. prefix("-
1d810 2d 22 2c 20 22 70 72 65 64 65 63 22 29 3b 0d 0a -", "predec");..
1d820 20 20 20 20 73 79 6e 74 61 78 5b 22 2d 2d 22 5d syntax["--"]
1d830 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 20 .exps = true;..
1d840 20 20 20 70 72 65 66 69 78 28 22 64 65 6c 65 74 prefix("delet
1d850 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e", function ()
1d860 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 70 {.. var p
1d870 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 30 29 = expression(0)
1d880 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 ;.. if (!
1d890 70 20 7c 7c 20 28 70 2e 69 64 20 21 3d 3d 20 22 p || (p.id !== "
1d8a0 2e 22 20 26 26 20 70 2e 69 64 20 21 3d 3d 20 22 ." && p.id !== "
1d8b0 5b 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 [")) {..
1d8c0 20 20 20 20 77 61 72 6e 69 6e 67 28 22 56 61 72 warning("Var
1d8d0 69 61 62 6c 65 73 20 73 68 6f 75 6c 64 20 6e 6f iables should no
1d8e0 74 20 62 65 20 64 65 6c 65 74 65 64 2e 22 29 3b t be deleted.");
1d8f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 .. }..
1d900 20 20 20 20 20 74 68 69 73 2e 66 69 72 73 74 20 this.first
1d910 3d 20 70 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 = p;.. re
1d920 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 turn this;..
1d930 7d 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d }).exps = true;.
1d940 0a 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 7e ... prefix("~
1d950 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b ", function () {
1d960 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 .. if (op
1d970 74 69 6f 6e 2e 62 69 74 77 69 73 65 29 20 7b 0d tion.bitwise) {.
1d980 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 . war
1d990 6e 69 6e 67 28 22 28 33 29 55 6e 65 78 70 65 63 ning("(3)Unexpec
1d9a0 74 65 64 20 27 7b 61 7d 27 2e 22 2c 20 74 68 69 ted '{a}'.", thi
1d9b0 73 2c 20 22 7e 22 29 3b 0d 0a 20 20 20 20 20 20 s, "~");..
1d9c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 78 70 }.. exp
1d9d0 72 65 73 73 69 6f 6e 28 31 35 30 29 3b 0d 0a 20 ression(150);..
1d9e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
1d9f0 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a is;.. });....
1da00 20 20 20 20 70 72 65 66 69 78 28 22 21 22 2c 20 prefix("!",
1da10 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 function () {..
1da20 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 this.righ
1da30 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31 t = expression(1
1da40 35 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 50);.. th
1da50 69 73 2e 61 72 69 74 79 20 3d 20 22 75 6e 61 72 is.arity = "unar
1da60 79 22 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 y";.. if
1da70 28 62 61 6e 67 5b 74 68 69 73 2e 72 69 67 68 74 (bang[this.right
1da80 2e 69 64 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b .id] === true) {
1da90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 .. wa
1daa0 72 6e 69 6e 67 28 22 43 6f 6e 66 75 73 69 6e 67 rning("Confusing
1dab0 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22 2c use of '{a}'.",
1dac0 20 74 68 69 73 2c 20 22 21 22 29 3b 0d 0a 20 20 this, "!");..
1dad0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
1dae0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 return this;..
1daf0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 70 72 65 66 });.. pref
1db00 69 78 28 22 74 79 70 65 6f 66 22 2c 20 22 74 79 ix("typeof", "ty
1db10 70 65 6f 66 22 29 3b 0d 0a 20 20 20 20 70 72 65 peof");.. pre
1db20 66 69 78 28 22 6e 65 77 22 2c 20 66 75 6e 63 74 fix("new", funct
1db30 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 ion () {..
1db40 20 20 76 61 72 20 63 20 3d 20 65 78 70 72 65 73 var c = expres
1db50 73 69 6f 6e 28 31 35 35 29 2c 20 69 3b 0d 0a 20 sion(155), i;..
1db60 20 20 20 20 20 20 20 69 66 20 28 63 20 26 26 20 if (c &&
1db70 63 2e 69 64 20 21 3d 3d 20 22 66 75 6e 63 74 69 c.id !== "functi
1db80 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 on") {..
1db90 20 20 20 20 69 66 20 28 63 2e 69 64 65 6e 74 69 if (c.identi
1dba0 66 69 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 fier) {..
1dbb0 20 20 20 20 20 20 20 20 20 63 5b 22 6e 65 77 22 c["new"
1dbc0 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 ] = true;..
1dbd0 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc
1dbe0 68 20 28 63 2e 76 61 6c 75 65 29 20 7b 0d 0a 20 h (c.value) {..
1dbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
1dc00 61 73 65 20 22 4e 75 6d 62 65 72 22 3a 0d 0a 20 ase "Number":..
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
1dc20 61 73 65 20 22 53 74 72 69 6e 67 22 3a 0d 0a 20 ase "String":..
1dc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
1dc40 61 73 65 20 22 42 6f 6f 6c 65 61 6e 22 3a 0d 0a ase "Boolean":..
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dc60 63 61 73 65 20 22 4d 61 74 68 22 3a 0d 0a 20 20 case "Math":..
1dc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
1dc80 73 65 20 22 4a 53 4f 4e 22 3a 0d 0a 20 20 20 20 se "JSON":..
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dca0 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e 6f 74 20 warning("Do not
1dcb0 75 73 65 20 7b 61 7d 20 61 73 20 61 20 63 6f 6e use {a} as a con
1dcc0 73 74 72 75 63 74 6f 72 2e 22 2c 20 70 72 65 76 structor.", prev
1dcd0 74 6f 6b 65 6e 2c 20 63 2e 76 61 6c 75 65 29 3b token, c.value);
1dce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1dcf0 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 break;..
1dd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
1dd10 73 65 20 22 46 75 6e 63 74 69 6f 6e 22 3a 0d 0a se "Function":..
1dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dd30 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e if (!option.
1dd40 65 76 69 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 evil) {..
1dd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dd60 20 77 61 72 6e 69 6e 67 28 22 54 68 65 20 46 75 warning("The Fu
1dd70 6e 63 74 69 6f 6e 20 63 6f 6e 73 74 72 75 63 74 nction construct
1dd80 6f 72 20 69 73 20 65 76 61 6c 2e 22 29 3b 0d 0a or is eval.");..
1dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dda0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
1ddb0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
1ddc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
1ddd0 20 20 20 63 61 73 65 20 22 44 61 74 65 22 3a 0d case "Date":.
1dde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1ddf0 20 63 61 73 65 20 22 52 65 67 45 78 70 22 3a 0d case "RegExp":.
1de00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1de10 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 def
1de30 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 ault:..
1de40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 if (c
1de50 2e 69 64 20 21 3d 3d 20 22 66 75 6e 63 74 69 6f .id !== "functio
1de60 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 n") {..
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
1de80 20 3d 20 63 2e 76 61 6c 75 65 2e 73 75 62 73 74 = c.value.subst
1de90 72 28 30 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 r(0, 1);..
1dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1deb0 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 65 77 if (option.new
1dec0 63 61 70 20 26 26 20 28 69 20 3c 20 22 41 22 20 cap && (i < "A"
1ded0 7c 7c 20 69 20 3e 20 22 5a 22 29 29 20 7b 0d 0a || i > "Z")) {..
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1def0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
1df00 69 6e 67 28 22 41 20 63 6f 6e 73 74 72 75 63 74 ing("A construct
1df10 6f 72 20 6e 61 6d 65 20 73 68 6f 75 6c 64 20 73 or name should s
1df20 74 61 72 74 20 77 69 74 68 20 61 6e 20 75 70 70 tart with an upp
1df30 65 72 63 61 73 65 20 6c 65 74 74 65 72 2e 22 2c ercase letter.",
1df40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1df60 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 token);..
1df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1df80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
1df90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
1dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
1dfc0 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 se {..
1dfd0 20 20 20 20 20 20 69 66 20 28 63 2e 69 64 20 21 if (c.id !
1dfe0 3d 3d 20 22 2e 22 20 26 26 20 63 2e 69 64 20 21 == "." && c.id !
1dff0 3d 3d 20 22 5b 22 20 26 26 20 63 2e 69 64 20 21 == "[" && c.id !
1e000 3d 3d 20 22 28 22 29 20 7b 0d 0a 20 20 20 20 20 == "(") {..
1e010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
1e020 61 72 6e 69 6e 67 28 22 42 61 64 20 63 6f 6e 73 arning("Bad cons
1e030 74 72 75 63 74 6f 72 2e 22 2c 20 74 6f 6b 65 6e tructor.", token
1e040 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
1e050 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
1e060 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 }.. }
1e070 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 else {..
1e080 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e if (!option.
1e090 73 75 70 65 72 6e 65 77 29 0d 0a 20 20 20 20 20 supernew)..
1e0a0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
1e0b0 6e 67 28 22 57 65 69 72 64 20 63 6f 6e 73 74 72 ng("Weird constr
1e0c0 75 63 74 69 6f 6e 2e 20 44 65 6c 65 74 65 20 27 uction. Delete '
1e0d0 6e 65 77 27 2e 22 2c 20 74 68 69 73 29 3b 0d 0a new'.", this);..
1e0e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
1e0f0 20 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 adjacent(toke
1e100 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a n, nexttoken);..
1e110 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 if (next
1e120 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 28 22 token.id !== "("
1e130 20 26 26 20 21 6f 70 74 69 6f 6e 2e 73 75 70 65 && !option.supe
1e140 72 6e 65 77 29 20 7b 0d 0a 20 20 20 20 20 20 20 rnew) {..
1e150 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 4d 69 warning("Mi
1e160 73 73 69 6e 67 20 27 28 29 27 20 69 6e 76 6f 6b ssing '()' invok
1e170 69 6e 67 20 61 20 63 6f 6e 73 74 72 75 63 74 6f ing a constructo
1e180 72 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 r.",..
1e190 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20 74 6f 6b token, tok
1e1a0 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 en.value);..
1e1b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 74 }.. t
1e1c0 68 69 73 2e 66 69 72 73 74 20 3d 20 63 3b 0d 0a his.first = c;..
1e1d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
1e1e0 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 his;.. });..
1e1f0 20 20 20 73 79 6e 74 61 78 5b 22 6e 65 77 22 5d syntax["new"]
1e200 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 0d .exps = true;...
1e210 0a 20 20 20 20 70 72 65 66 69 78 28 22 76 6f 69 . prefix("voi
1e220 64 22 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b d").exps = true;
1e230 0d 0a 0d 0a 20 20 20 20 69 6e 66 69 78 28 22 2e .... infix(".
1e240 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 ", function (lef
1e250 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20 20 20 20 t, that) {..
1e260 20 20 20 20 61 64 6a 61 63 65 6e 74 28 70 72 65 adjacent(pre
1e270 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d vtoken, token);.
1e280 0a 20 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b . nobreak
1e290 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 ();.. var
1e2a0 20 6d 20 3d 20 69 64 65 6e 74 69 66 69 65 72 28 m = identifier(
1e2b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
1e2c0 74 79 70 65 6f 66 20 6d 20 3d 3d 3d 20 22 73 74 typeof m === "st
1e2d0 72 69 6e 67 22 29 20 7b 0d 0a 20 20 20 20 20 20 ring") {..
1e2e0 20 20 20 20 20 20 63 6f 75 6e 74 4d 65 6d 62 65 countMembe
1e2f0 72 28 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d r(m);.. }
1e300 0d 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 6c .. that.l
1e310 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20 20 eft = left;..
1e320 20 20 20 20 20 74 68 61 74 2e 72 69 67 68 74 20 that.right
1e330 3d 20 6d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 = m;.. if
1e340 20 28 6c 65 66 74 20 26 26 20 6c 65 66 74 2e 76 (left && left.v
1e350 61 6c 75 65 20 3d 3d 3d 20 22 61 72 67 75 6d 65 alue === "argume
1e360 6e 74 73 22 20 26 26 20 28 6d 20 3d 3d 3d 20 22 nts" && (m === "
1e370 63 61 6c 6c 65 65 22 20 7c 7c 20 6d 20 3d 3d 3d callee" || m ===
1e380 20 22 63 61 6c 6c 65 72 22 29 29 20 7b 0d 0a 20 "caller")) {..
1e390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o
1e3a0 70 74 69 6f 6e 2e 6e 6f 61 72 67 29 0d 0a 20 20 ption.noarg)..
1e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
1e3c0 72 6e 69 6e 67 28 22 41 76 6f 69 64 20 61 72 67 rning("Avoid arg
1e3d0 75 6d 65 6e 74 73 2e 7b 61 7d 2e 22 2c 20 6c 65 uments.{a}.", le
1e3e0 66 74 2c 20 6d 29 3b 0d 0a 20 20 20 20 20 20 20 ft, m);..
1e3f0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 64 69 else if (di
1e400 72 65 63 74 69 76 65 5b 22 75 73 65 20 73 74 72 rective["use str
1e410 69 63 74 22 5d 29 0d 0a 20 20 20 20 20 20 20 20 ict"])..
1e420 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 53 error("S
1e430 74 72 69 63 74 20 76 69 6f 6c 61 74 69 6f 6e 2e trict violation.
1e440 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 ");.. } e
1e450 6c 73 65 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e lse if (!option.
1e460 65 76 69 6c 20 26 26 20 6c 65 66 74 20 26 26 20 evil && left &&
1e470 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 left.value === "
1e480 64 6f 63 75 6d 65 6e 74 22 20 26 26 0d 0a 20 20 document" &&..
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d (m
1e4a0 20 3d 3d 3d 20 22 77 72 69 74 65 22 20 7c 7c 20 === "write" ||
1e4b0 6d 20 3d 3d 3d 20 22 77 72 69 74 65 6c 6e 22 29 m === "writeln")
1e4c0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1e4d0 20 77 61 72 6e 69 6e 67 28 22 64 6f 63 75 6d 65 warning("docume
1e4e0 6e 74 2e 77 72 69 74 65 20 63 61 6e 20 62 65 20 nt.write can be
1e4f0 61 20 66 6f 72 6d 20 6f 66 20 65 76 61 6c 2e 22 a form of eval."
1e500 2c 20 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 , left);..
1e510 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66 20 }.. if
1e520 28 21 6f 70 74 69 6f 6e 2e 65 76 69 6c 20 26 26 (!option.evil &&
1e530 20 28 6d 20 3d 3d 3d 20 22 65 76 61 6c 22 20 7c (m === "eval" |
1e540 7c 20 6d 20 3d 3d 3d 20 22 65 78 65 63 53 63 72 | m === "execScr
1e550 69 70 74 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 ipt")) {..
1e560 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 65 warning("e
1e570 76 61 6c 20 69 73 20 65 76 69 6c 2e 22 29 3b 0d val is evil.");.
1e580 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
1e590 20 20 20 20 72 65 74 75 72 6e 20 74 68 61 74 3b return that;
1e5a0 0d 0a 20 20 20 20 7d 2c 20 31 36 30 2c 20 74 72 .. }, 160, tr
1e5b0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 66 69 ue);.... infi
1e5c0 78 28 22 28 22 2c 20 66 75 6e 63 74 69 6f 6e 20 x("(", function
1e5d0 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b 0d 0a (left, that) {..
1e5e0 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 76 if (prev
1e5f0 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 7d 22 token.id !== "}"
1e600 20 26 26 20 70 72 65 76 74 6f 6b 65 6e 2e 69 64 && prevtoken.id
1e610 20 21 3d 3d 20 22 29 22 29 20 7b 0d 0a 20 20 20 !== ")") {..
1e620 20 20 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b nobreak
1e630 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 (prevtoken, toke
1e640 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a n);.. }..
1e650 20 20 20 20 20 20 20 20 6e 6f 73 70 61 63 65 28 nospace(
1e660 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
1e670 6f 70 74 69 6f 6e 2e 69 6d 6d 65 64 20 26 26 20 option.immed &&
1e680 21 6c 65 66 74 2e 69 6d 6d 65 64 20 26 26 20 6c !left.immed && l
1e690 65 66 74 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63 eft.id === "func
1e6a0 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 tion") {..
1e6b0 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 57 warning("W
1e6c0 72 61 70 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 rap an immediate
1e6d0 20 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 63 61 function invoca
1e6e0 74 69 6f 6e 20 69 6e 20 70 61 72 65 6e 74 68 65 tion in parenthe
1e6f0 73 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 ses " +..
1e700 20 20 20 20 20 20 20 20 20 22 74 6f 20 61 73 73 "to ass
1e710 69 73 74 20 74 68 65 20 72 65 61 64 65 72 20 69 ist the reader i
1e720 6e 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 20 n understanding
1e730 74 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73 that the express
1e740 69 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 ion " +..
1e750 20 20 20 20 20 20 20 20 20 22 69 73 20 74 68 65 "is the
1e760 20 72 65 73 75 6c 74 20 6f 66 20 61 20 66 75 6e result of a fun
1e770 63 74 69 6f 6e 2c 20 61 6e 64 20 6e 6f 74 20 74 ction, and not t
1e780 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73 65 he function itse
1e790 6c 66 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 lf.");..
1e7a0 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e }.. var n
1e7b0 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 = 0,..
1e7c0 20 20 20 70 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 p = [];..
1e7d0 20 20 20 20 69 66 20 28 6c 65 66 74 29 20 7b 0d if (left) {.
1e7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
1e7f0 28 6c 65 66 74 2e 74 79 70 65 20 3d 3d 3d 20 22 (left.type === "
1e800 28 69 64 65 6e 74 69 66 69 65 72 29 22 29 20 7b (identifier)") {
1e810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1e820 20 20 69 66 20 28 6c 65 66 74 2e 76 61 6c 75 65 if (left.value
1e830 2e 6d 61 74 63 68 28 2f 5e 5b 41 2d 5a 5d 28 5b .match(/^[A-Z]([
1e840 41 2d 5a 30 2d 39 5f 24 5d 2a 5b 61 2d 7a 5d 5b A-Z0-9_$]*[a-z][
1e850 41 2d 5a 61 2d 7a 30 2d 39 5f 24 5d 2a 29 3f 24 A-Za-z0-9_$]*)?$
1e860 2f 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 /)) {..
1e870 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c if (l
1e880 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d 20 22 4e eft.value !== "N
1e890 75 6d 62 65 72 22 20 26 26 20 6c 65 66 74 2e 76 umber" && left.v
1e8a0 61 6c 75 65 20 21 3d 3d 20 22 53 74 72 69 6e 67 alue !== "String
1e8b0 22 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 " &&..
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e8d0 20 20 6c 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d left.value !==
1e8e0 20 22 42 6f 6f 6c 65 61 6e 22 20 26 26 0d 0a 20 "Boolean" &&..
1e8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e900 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e left.
1e910 76 61 6c 75 65 20 21 3d 3d 20 22 44 61 74 65 22 value !== "Date"
1e920 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1e940 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 (left.value ===
1e950 22 4d 61 74 68 22 29 20 7b 0d 0a 20 20 20 20 20 "Math") {..
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e970 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 warning("
1e980 4d 61 74 68 20 69 73 20 6e 6f 74 20 61 20 66 75 Math is not a fu
1e990 6e 63 74 69 6f 6e 2e 22 2c 20 6c 65 66 74 29 3b nction.", left);
1e9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1e9b0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
1e9c0 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 65 77 63 if (option.newc
1e9d0 61 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ap) {..
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e9f0 20 20 20 77 61 72 6e 69 6e 67 28 0d 0a 22 4d 69 warning(.."Mi
1ea00 73 73 69 6e 67 20 27 6e 65 77 27 20 70 72 65 66 ssing 'new' pref
1ea10 69 78 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 ix when invoking
1ea20 20 61 20 63 6f 6e 73 74 72 75 63 74 6f 72 2e 22 a constructor."
1ea30 2c 20 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 , left);..
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ea50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1ea60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
1ea70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1ea80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
1ea90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
1eaa0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 if (nexttoken.i
1eab0 64 20 21 3d 3d 20 22 29 22 29 20 7b 0d 0a 20 20 d !== ")") {..
1eac0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b for (;
1ead0 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ;) {..
1eae0 20 20 20 20 20 20 70 5b 70 2e 6c 65 6e 67 74 68 p[p.length
1eaf0 5d 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31 ] = expression(1
1eb00 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0);..
1eb10 20 20 20 20 20 6e 20 2b 3d 20 31 3b 0d 0a 20 20 n += 1;..
1eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
1eb30 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 (nexttoken.id !
1eb40 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 == ",") {..
1eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
1eb60 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
1eb70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
1eb80 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 comma(
1eb90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
1eba0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }.. }..
1ebb0 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 29 advance(")
1ebc0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 ");.. nos
1ebd0 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20 pace(prevtoken,
1ebe0 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
1ebf0 20 69 66 20 28 74 79 70 65 6f 66 20 6c 65 66 74 if (typeof left
1ec00 20 3d 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b === "object") {
1ec10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1ec20 20 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d (left.value ===
1ec30 20 22 70 61 72 73 65 49 6e 74 22 20 26 26 20 6e "parseInt" && n
1ec40 20 3d 3d 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 === 1) {..
1ec50 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
1ec60 6e 67 28 22 4d 69 73 73 69 6e 67 20 72 61 64 69 ng("Missing radi
1ec70 78 20 70 61 72 61 6d 65 74 65 72 2e 22 2c 20 74 x parameter.", t
1ec80 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 oken);..
1ec90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
1eca0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 65 if (!option.e
1ecb0 76 69 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 vil) {..
1ecc0 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 if (left
1ecd0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 65 76 61 6c .value === "eval
1ece0 22 20 7c 7c 20 6c 65 66 74 2e 76 61 6c 75 65 20 " || left.value
1ecf0 3d 3d 3d 20 22 46 75 6e 63 74 69 6f 6e 22 20 7c === "Function" |
1ed00 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |..
1ed10 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e left.
1ed20 76 61 6c 75 65 20 3d 3d 3d 20 22 65 78 65 63 53 value === "execS
1ed30 63 72 69 70 74 22 29 20 7b 0d 0a 20 20 20 20 20 cript") {..
1ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
1ed50 61 72 6e 69 6e 67 28 22 65 76 61 6c 20 69 73 20 arning("eval is
1ed60 65 76 69 6c 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a evil.", left);..
1ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ed80 7d 20 65 6c 73 65 20 69 66 20 28 70 5b 30 5d 20 } else if (p[0]
1ed90 26 26 20 70 5b 30 5d 2e 69 64 20 3d 3d 3d 20 22 && p[0].id === "
1eda0 28 73 74 72 69 6e 67 29 22 20 26 26 0d 0a 20 20 (string)" &&..
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1edc0 20 20 20 20 20 28 6c 65 66 74 2e 76 61 6c 75 65 (left.value
1edd0 20 3d 3d 3d 20 22 73 65 74 54 69 6d 65 6f 75 74 === "setTimeout
1ede0 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 " ||..
1edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 le
1ee00 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 73 65 ft.value === "se
1ee10 74 49 6e 74 65 72 76 61 6c 22 29 29 20 7b 0d 0a tInterval")) {..
1ee20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ee30 20 20 20 20 77 61 72 6e 69 6e 67 28 0d 0a 20 20 warning(..
1ee40 20 20 22 49 6d 70 6c 69 65 64 20 65 76 61 6c 20 "Implied eval
1ee50 69 73 20 65 76 69 6c 2e 20 50 61 73 73 20 61 20 is evil. Pass a
1ee60 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 65 61 64 function instead
1ee70 20 6f 66 20 61 20 73 74 72 69 6e 67 2e 22 2c 20 of a string.",
1ee80 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 left);..
1ee90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
1eea0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
1eeb0 20 20 20 20 20 20 69 66 20 28 21 6c 65 66 74 2e if (!left.
1eec0 69 64 65 6e 74 69 66 69 65 72 20 26 26 20 6c 65 identifier && le
1eed0 66 74 2e 69 64 20 21 3d 3d 20 22 2e 22 20 26 26 ft.id !== "." &&
1eee0 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 5b 22 left.id !== "["
1eef0 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 &&..
1ef00 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 69 64 left.id
1ef10 20 21 3d 3d 20 22 28 22 20 26 26 20 6c 65 66 74 !== "(" && left
1ef20 2e 69 64 20 21 3d 3d 20 22 26 26 22 20 26 26 20 .id !== "&&" &&
1ef30 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 7c 7c 22 left.id !== "||"
1ef40 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 &&..
1ef50 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 69 64 left.id
1ef60 20 21 3d 3d 20 22 3f 22 29 20 7b 0d 0a 20 20 20 !== "?") {..
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
1ef80 6e 69 6e 67 28 22 42 61 64 20 69 6e 76 6f 63 61 ning("Bad invoca
1ef90 74 69 6f 6e 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a tion.", left);..
1efa0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1efb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
1efc0 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20 6c 65 that.left = le
1efd0 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 ft;.. ret
1efe0 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 7d urn that;.. }
1eff0 2c 20 31 35 35 2c 20 74 72 75 65 29 2e 65 78 70 , 155, true).exp
1f000 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 s = true;....
1f010 20 70 72 65 66 69 78 28 22 28 22 2c 20 66 75 6e prefix("(", fun
1f020 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 ction () {..
1f030 20 20 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a nospace();..
1f040 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 if (next
1f050 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 66 75 token.id === "fu
1f060 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 nction") {..
1f070 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
1f080 6e 2e 69 6d 6d 65 64 20 3d 20 74 72 75 65 3b 0d n.immed = true;.
1f090 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
1f0a0 20 20 20 20 76 61 72 20 76 20 3d 20 65 78 70 72 var v = expr
1f0b0 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20 20 20 20 ession(0);..
1f0c0 20 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c advance(")",
1f0d0 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 this);..
1f0e0 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b nospace(prevtok
1f0f0 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 en, token);..
1f100 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e if (option.
1f110 69 6d 6d 65 64 20 26 26 20 76 2e 69 64 20 3d 3d immed && v.id ==
1f120 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d = "function") {.
1f130 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
1f140 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d (nexttoken.id !=
1f150 3d 20 22 28 22 20 26 26 0d 0a 20 20 20 20 20 20 = "(" &&..
1f160 20 20 20 20 20 20 20 20 28 6e 65 78 74 74 6f 6b (nexttok
1f170 65 6e 2e 69 64 20 21 3d 3d 20 22 2e 22 20 7c 7c en.id !== "." ||
1f180 20 28 70 65 65 6b 28 29 2e 76 61 6c 75 65 20 21 (peek().value !
1f190 3d 3d 20 22 63 61 6c 6c 22 20 26 26 20 70 65 65 == "call" && pee
1f1a0 6b 28 29 2e 76 61 6c 75 65 20 21 3d 3d 20 22 61 k().value !== "a
1f1b0 70 70 6c 79 22 29 29 29 20 7b 0d 0a 20 20 20 20 pply"))) {..
1f1c0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
1f1d0 69 6e 67 28 0d 0a 22 44 6f 20 6e 6f 74 20 77 72 ing(.."Do not wr
1f1e0 61 70 20 66 75 6e 63 74 69 6f 6e 20 6c 69 74 65 ap function lite
1f1f0 72 61 6c 73 20 69 6e 20 70 61 72 65 6e 73 20 75 rals in parens u
1f200 6e 6c 65 73 73 20 74 68 65 79 20 61 72 65 20 74 nless they are t
1f210 6f 20 62 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 o be immediately
1f220 20 69 6e 76 6f 6b 65 64 2e 22 2c 0d 0a 20 20 20 invoked.",..
1f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1f240 20 20 20 20 20 74 68 69 73 29 3b 0d 0a 20 20 20 this);..
1f250 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
1f260 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
1f270 20 72 65 74 75 72 6e 20 76 3b 0d 0a 20 20 20 20 return v;..
1f280 7d 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 66 69 78 });.... infix
1f290 28 22 5b 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ("[", function (
1f2a0 6c 65 66 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20 left, that) {..
1f2b0 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b 28 70 nobreak(p
1f2c0 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 revtoken, token)
1f2d0 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 70 61 ;.. nospa
1f2e0 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 ce();.. v
1f2f0 61 72 20 65 20 3d 20 65 78 70 72 65 73 73 69 6f ar e = expressio
1f300 6e 28 30 29 2c 20 73 3b 0d 0a 20 20 20 20 20 20 n(0), s;..
1f310 20 20 69 66 20 28 65 20 26 26 20 65 2e 74 79 70 if (e && e.typ
1f320 65 20 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 e === "(string)"
1f330 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
1f340 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 65 76 69 if (!option.evi
1f350 6c 20 26 26 20 28 65 2e 76 61 6c 75 65 20 3d 3d l && (e.value ==
1f360 3d 20 22 65 76 61 6c 22 20 7c 7c 20 65 2e 76 61 = "eval" || e.va
1f370 6c 75 65 20 3d 3d 3d 20 22 65 78 65 63 53 63 72 lue === "execScr
1f380 69 70 74 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 ipt")) {..
1f390 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
1f3a0 67 28 22 65 76 61 6c 20 69 73 20 65 76 69 6c 2e g("eval is evil.
1f3b0 22 2c 20 74 68 61 74 29 3b 0d 0a 20 20 20 20 20 ", that);..
1f3c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
1f3d0 20 20 20 20 20 20 63 6f 75 6e 74 4d 65 6d 62 65 countMembe
1f3e0 72 28 65 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 r(e.value);..
1f3f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 if (!op
1f400 74 69 6f 6e 2e 73 75 62 20 26 26 20 69 78 2e 74 tion.sub && ix.t
1f410 65 73 74 28 65 2e 76 61 6c 75 65 29 29 20 7b 0d est(e.value)) {.
1f420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1f430 20 73 20 3d 20 73 79 6e 74 61 78 5b 65 2e 76 61 s = syntax[e.va
1f440 6c 75 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 lue];..
1f450 20 20 20 20 20 20 20 69 66 20 28 21 73 20 7c 7c if (!s ||
1f460 20 21 73 2e 72 65 73 65 72 76 65 64 29 20 7b 0d !s.reserved) {.
1f470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1f480 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 5b 27 warning("['
1f490 7b 61 7d 27 5d 20 69 73 20 62 65 74 74 65 72 20 {a}'] is better
1f4a0 77 72 69 74 74 65 6e 20 69 6e 20 64 6f 74 20 6e written in dot n
1f4b0 6f 74 61 74 69 6f 6e 2e 22 2c 0d 0a 20 20 20 20 otation.",..
1f4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1f4d0 20 20 20 20 20 20 20 20 70 72 65 76 74 6f 6b 65 prevtoke
1f4e0 6e 2c 20 65 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 n, e.value);..
1f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
1f500 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
1f510 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
1f520 20 20 20 61 64 76 61 6e 63 65 28 22 5d 22 2c 20 advance("]",
1f530 74 68 61 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 that);..
1f540 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b 65 nospace(prevtoke
1f550 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 n, token);..
1f560 20 20 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20 that.left =
1f570 6c 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 74 left;.. t
1f580 68 61 74 2e 72 69 67 68 74 20 3d 20 65 3b 0d 0a hat.right = e;..
1f590 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
1f5a0 68 61 74 3b 0d 0a 20 20 20 20 7d 2c 20 31 36 30 hat;.. }, 160
1f5b0 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 , true);....
1f5c0 70 72 65 66 69 78 28 22 5b 22 2c 20 66 75 6e 63 prefix("[", func
1f5d0 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 tion () {..
1f5e0 20 20 20 76 61 72 20 62 20 3d 20 74 6f 6b 65 6e var b = token
1f5f0 2e 6c 69 6e 65 20 21 3d 3d 20 6e 65 78 74 74 6f .line !== nextto
1f600 6b 65 6e 2e 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 ken.line;..
1f610 20 20 20 74 68 69 73 2e 66 69 72 73 74 20 3d 20 this.first =
1f620 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 [];.. if
1f630 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 (b) {..
1f640 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 6f 70 74 indent += opt
1f650 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20 20 ion.indent;..
1f660 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 if (nex
1f670 74 74 6f 6b 65 6e 2e 66 72 6f 6d 20 3d 3d 3d 20 ttoken.from ===
1f680 69 6e 64 65 6e 74 20 2b 20 6f 70 74 69 6f 6e 2e indent + option.
1f690 69 6e 64 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 indent) {..
1f6a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e inden
1f6b0 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 65 t += option.inde
1f6c0 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 nt;..
1f6d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 }.. }..
1f6e0 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 65 while (ne
1f6f0 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 xttoken.id !== "
1f700 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20 (end)") {..
1f710 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 65 while (ne
1f720 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 xttoken.id === "
1f730 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ,") {..
1f740 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 warning("
1f750 45 78 74 72 61 20 63 6f 6d 6d 61 2e 22 29 3b 0d Extra comma.");.
1f760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1f770 20 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a advance(",");..
1f780 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1f790 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
1f7a0 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 exttoken.id ===
1f7b0 22 5d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 "]") {..
1f7c0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1f7e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 if (b
1f7f0 20 26 26 20 74 6f 6b 65 6e 2e 6c 69 6e 65 20 21 && token.line !
1f800 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e == nexttoken.lin
1f810 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 e) {..
1f820 20 20 20 20 20 20 69 6e 64 65 6e 74 61 74 69 6f indentatio
1f830 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 n();..
1f840 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1f850 20 74 68 69 73 2e 66 69 72 73 74 2e 70 75 73 68 this.first.push
1f860 28 65 78 70 72 65 73 73 69 6f 6e 28 31 30 29 29 (expression(10))
1f870 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
1f880 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 f (nexttoken.id
1f890 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 === ",") {..
1f8a0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d comm
1f8b0 61 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 a();..
1f8c0 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f if (nextto
1f8d0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 5d 22 20 26 ken.id === "]" &
1f8e0 26 20 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b & !option.es5) {
1f8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1f900 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 warning("E
1f910 78 74 72 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f xtra comma.", to
1f920 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
1f930 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
1f940 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
1f950 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
1f960 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 } else {..
1f970 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
1f980 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 k;..
1f990 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }.. }..
1f9a0 20 20 20 20 20 20 69 66 20 28 62 29 20 7b 0d 0a if (b) {..
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 inde
1f9c0 6e 74 20 2d 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 nt -= option.ind
1f9d0 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ent;..
1f9e0 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 3b indentation();
1f9f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 .. }..
1fa00 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 5d 22 advance("]"
1fa10 2c 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 , this);..
1fa20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a return this;..
1fa30 20 20 20 20 7d 2c 20 31 36 30 29 3b 0d 0a 0d 0a }, 160);....
1fa40 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 .. function p
1fa50 72 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29 20 7b roperty_name() {
1fa60 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 64 .. var id
1fa70 20 3d 20 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74 = optionalident
1fa80 69 66 69 65 72 28 74 72 75 65 29 3b 0d 0a 20 20 ifier(true);..
1fa90 20 20 20 20 20 20 69 66 20 28 21 69 64 29 20 7b if (!id) {
1faa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1fab0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d (nexttoken.id =
1fac0 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 29 20 7b == "(string)") {
1fad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1fae0 20 20 69 64 20 3d 20 6e 65 78 74 74 6f 6b 65 6e id = nexttoken
1faf0 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 .value;..
1fb00 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
1fb10 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ();..
1fb20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74 } else if (next
1fb30 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 6e token.id === "(n
1fb40 75 6d 62 65 72 29 22 29 20 7b 0d 0a 20 20 20 20 umber)") {..
1fb50 20 20 20 20 20 20 20 20 20 20 20 20 69 64 20 3d id =
1fb60 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 nexttoken.value
1fb70 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 .toString();..
1fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 ad
1fb90 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 vance();..
1fba0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
1fbb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
1fbc0 72 6e 20 69 64 3b 0d 0a 20 20 20 20 7d 0d 0a 0d rn id;.. }...
1fbd0 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 ... function
1fbe0 66 75 6e 63 74 69 6f 6e 70 61 72 61 6d 73 28 29 functionparams()
1fbf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
1fc00 6e 65 78 74 20 20 20 3d 20 6e 65 78 74 74 6f 6b next = nexttok
1fc10 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 en;.. var
1fc20 20 70 61 72 61 6d 73 20 3d 20 5b 5d 3b 0d 0a 20 params = [];..
1fc30 20 20 20 20 20 20 20 76 61 72 20 69 64 65 6e 74 var ident
1fc40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 61 64 76 ;.... adv
1fc50 61 6e 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20 ance("(");..
1fc60 20 20 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a nospace();..
1fc70 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 .. if (ne
1fc80 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 xttoken.id === "
1fc90 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 )") {..
1fca0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 29 3b advance(")");
1fcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
1fcc0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d turn;.. }
1fcd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 .... for
1fce0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 (;;) {..
1fcf0 20 20 20 20 69 64 65 6e 74 20 3d 20 69 64 65 6e ident = iden
1fd00 74 69 66 69 65 72 28 74 72 75 65 29 3b 0d 0a 20 tifier(true);..
1fd10 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d param
1fd20 73 2e 70 75 73 68 28 69 64 65 6e 74 29 3b 0d 0a s.push(ident);..
1fd30 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c addl
1fd40 61 62 65 6c 28 69 64 65 6e 74 2c 20 22 75 6e 75 abel(ident, "unu
1fd50 73 65 64 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 sed", token);..
1fd60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
1fd70 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 exttoken.id ===
1fd80 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ",") {..
1fd90 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29 3b comma();
1fda0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
1fdb0 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 else {..
1fdc0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
1fdd0 22 29 22 2c 20 6e 65 78 74 29 3b 0d 0a 20 20 20 ")", next);..
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 73 nos
1fdf0 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20 pace(prevtoken,
1fe00 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
1fe10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
1fe20 70 61 72 61 6d 73 3b 0d 0a 20 20 20 20 20 20 20 params;..
1fe30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
1fe40 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 }.. }......
1fe50 20 20 66 75 6e 63 74 69 6f 6e 20 64 6f 46 75 6e function doFun
1fe60 63 74 69 6f 6e 28 69 2c 20 73 74 61 74 65 6d 65 ction(i, stateme
1fe70 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 nt) {.. v
1fe80 61 72 20 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 ar f,..
1fe90 20 20 20 6f 6c 64 4f 70 74 69 6f 6e 20 3d 20 6f oldOption = o
1fea0 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 ption,..
1feb0 20 20 20 20 6f 6c 64 53 63 6f 70 65 20 20 3d 20 oldScope =
1fec0 73 63 6f 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 scope;....
1fed0 20 20 6f 70 74 69 6f 6e 20 3d 20 4f 62 6a 65 63 option = Objec
1fee0 74 2e 63 72 65 61 74 65 28 6f 70 74 69 6f 6e 29 t.create(option)
1fef0 3b 0d 0a 20 20 20 20 20 20 20 20 73 63 6f 70 65 ;.. scope
1ff00 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 = Object.create
1ff10 28 73 63 6f 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 (scope);....
1ff20 20 20 20 20 66 75 6e 63 74 20 3d 20 7b 0d 0a 20 funct = {..
1ff30 20 20 20 20 20 20 20 20 20 20 20 22 28 6e 61 6d "(nam
1ff40 65 29 22 20 20 20 20 20 3a 20 69 20 7c 7c 20 22 e)" : i || "
1ff50 5c 22 22 20 2b 20 61 6e 6f 6e 6e 61 6d 65 20 2b \"" + anonname +
1ff60 20 22 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 "\"",..
1ff70 20 20 20 20 22 28 6c 69 6e 65 29 22 20 20 20 20 "(line)"
1ff80 20 3a 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e : nexttoken.lin
1ff90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e,..
1ffa0 22 28 63 68 61 72 61 63 74 65 72 29 22 3a 20 6e "(character)": n
1ffb0 65 78 74 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74 exttoken.charact
1ffc0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 er,..
1ffd0 20 22 28 63 6f 6e 74 65 78 74 29 22 20 20 3a 20 "(context)" :
1ffe0 66 75 6e 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 funct,..
1fff0 20 20 20 20 22 28 62 72 65 61 6b 61 67 65 29 22 "(breakage)"
20000 20 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 : 0,..
20010 20 20 20 22 28 6c 6f 6f 70 61 67 65 29 22 20 20 "(loopage)"
20020 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 : 0,..
20030 20 20 22 28 73 63 6f 70 65 29 22 20 20 20 20 3a "(scope)" :
20040 20 73 63 6f 70 65 2c 0d 0a 20 20 20 20 20 20 20 scope,..
20050 20 20 20 20 20 22 28 73 74 61 74 65 6d 65 6e 74 "(statement
20060 29 22 3a 20 73 74 61 74 65 6d 65 6e 74 2c 0d 0a )": statement,..
20070 20 20 20 20 20 20 20 20 20 20 20 20 22 28 74 6f "(to
20080 6b 65 6e 73 29 22 20 20 20 3a 20 7b 7d 0d 0a 20 kens)" : {}..
20090 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 };..
200a0 20 20 20 66 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 f = funct;..
200b0 20 20 20 20 20 20 20 74 6f 6b 65 6e 2e 66 75 6e token.fun
200c0 63 74 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20 ct = funct;..
200d0 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 2e 70 functions.p
200e0 75 73 68 28 66 75 6e 63 74 29 3b 0d 0a 20 20 20 ush(funct);..
200f0 20 20 20 20 20 69 66 20 28 69 29 20 7b 0d 0a 20 if (i) {..
20100 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c 61 addla
20110 62 65 6c 28 69 2c 20 22 66 75 6e 63 74 69 6f 6e bel(i, "function
20120 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a ");.. }..
20130 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 funct["(
20140 70 61 72 61 6d 73 29 22 5d 20 3d 20 66 75 6e 63 params)"] = func
20150 74 69 6f 6e 70 61 72 61 6d 73 28 29 3b 0d 0a 0d tionparams();...
20160 0a 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 66 . block(f
20170 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 74 72 75 alse, false, tru
20180 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 73 63 6f e);.. sco
20190 70 65 20 3d 20 6f 6c 64 53 63 6f 70 65 3b 0d 0a pe = oldScope;..
201a0 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 20 3d option =
201b0 20 6f 6c 64 4f 70 74 69 6f 6e 3b 0d 0a 20 20 20 oldOption;..
201c0 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c 61 73 funct["(las
201d0 74 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 6c 69 6e t)"] = token.lin
201e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 e;.. func
201f0 74 5b 22 28 6c 61 73 74 63 68 61 72 61 63 74 65 t["(lastcharacte
20200 72 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 63 68 61 r)"] = token.cha
20210 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 racter;..
20220 20 66 75 6e 63 74 20 3d 20 66 75 6e 63 74 5b 22 funct = funct["
20230 28 63 6f 6e 74 65 78 74 29 22 5d 3b 0d 0a 20 20 (context)"];..
20240 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 3b 0d return f;.
20250 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 . }......
20260 28 66 75 6e 63 74 69 6f 6e 20 28 78 29 20 7b 0d (function (x) {.
20270 0a 20 20 20 20 20 20 20 20 78 2e 6e 75 64 20 3d . x.nud =
20280 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a function () {..
20290 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
202a0 62 2c 20 66 2c 20 69 2c 20 70 2c 20 74 3b 0d 0a b, f, i, p, t;..
202b0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
202c0 70 72 6f 70 73 20 3d 20 7b 7d 3b 20 2f 2f 20 41 props = {}; // A
202d0 6c 6c 20 70 72 6f 70 65 72 74 69 65 73 2c 20 69 ll properties, i
202e0 6e 63 6c 75 64 69 6e 67 20 61 63 63 65 73 73 6f ncluding accesso
202f0 72 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 rs....
20300 20 20 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 50 function saveP
20310 72 6f 70 65 72 74 79 28 6e 61 6d 65 2c 20 74 6f roperty(name, to
20320 6b 65 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ken) {..
20330 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 70 if (prop
20340 73 5b 6e 61 6d 65 5d 20 26 26 20 69 73 5f 6f 77 s[name] && is_ow
20350 6e 28 70 72 6f 70 73 2c 20 6e 61 6d 65 29 29 0d n(props, name)).
20360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
20370 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 44 75 warning("Du
20380 70 6c 69 63 61 74 65 20 6d 65 6d 62 65 72 20 27 plicate member '
20390 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 {a}'.", nexttoke
203a0 6e 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 n, i);..
203b0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 else..
203c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
203d0 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 20 3d 20 props[name] =
203e0 7b 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 {};....
203f0 20 20 20 20 20 20 20 70 72 6f 70 73 5b 6e 61 6d props[nam
20400 65 5d 2e 62 61 73 69 63 20 3d 20 74 72 75 65 3b e].basic = true;
20410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
20420 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 62 61 props[name].ba
20430 73 69 63 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e sicToken = token
20440 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
20450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
20460 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 53 65 74 function saveSet
20470 74 65 72 28 6e 61 6d 65 2c 20 74 6f 6b 65 6e 29 ter(name, token)
20480 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
20490 20 20 20 20 69 66 20 28 70 72 6f 70 73 5b 6e 61 if (props[na
204a0 6d 65 5d 20 26 26 20 69 73 5f 6f 77 6e 28 70 72 me] && is_own(pr
204b0 6f 70 73 2c 20 6e 61 6d 65 29 29 20 7b 0d 0a 20 ops, name)) {..
204c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
204d0 20 20 20 69 66 20 28 70 72 6f 70 73 5b 6e 61 6d if (props[nam
204e0 65 5d 2e 62 61 73 69 63 20 7c 7c 20 70 72 6f 70 e].basic || prop
204f0 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 29 0d s[name].setter).
20500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
20510 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
20520 28 22 44 75 70 6c 69 63 61 74 65 20 6d 65 6d 62 ("Duplicate memb
20530 65 72 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 er '{a}'.", next
20540 74 6f 6b 65 6e 2c 20 69 29 3b 0d 0a 20 20 20 20 token, i);..
20550 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
20560 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 se {..
20570 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b props[
20580 6e 61 6d 65 5d 20 3d 20 7b 7d 3b 0d 0a 20 20 20 name] = {};..
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
205a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
205b0 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65 props[name].se
205c0 74 74 65 72 20 3d 20 74 72 75 65 3b 0d 0a 20 20 tter = true;..
205d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 pr
205e0 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 ops[name].setter
205f0 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 3b 0d 0a Token = token;..
20600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d }...
20610 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e . fun
20620 63 74 69 6f 6e 20 73 61 76 65 47 65 74 74 65 72 ction saveGetter
20630 28 6e 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 (name) {..
20640 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 if (pr
20650 6f 70 73 5b 6e 61 6d 65 5d 20 26 26 20 69 73 5f ops[name] && is_
20660 6f 77 6e 28 70 72 6f 70 73 2c 20 6e 61 6d 65 29 own(props, name)
20670 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
20680 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f if (pro
20690 70 73 5b 6e 61 6d 65 5d 2e 62 61 73 69 63 20 7c ps[name].basic |
206a0 7c 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 67 65 | props[name].ge
206b0 74 74 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 tter)..
206c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
206d0 61 72 6e 69 6e 67 28 22 44 75 70 6c 69 63 61 74 arning("Duplicat
206e0 65 20 6d 65 6d 62 65 72 20 27 7b 61 7d 27 2e 22 e member '{a}'."
206f0 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 69 29 3b , nexttoken, i);
20700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
20710 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 } else {..
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20730 70 72 6f 70 73 5b 6e 61 6d 65 5d 20 3d 20 7b 7d props[name] = {}
20740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
20750 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
20760 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b 6e 61 props[na
20770 6d 65 5d 2e 67 65 74 74 65 72 20 3d 20 74 72 75 me].getter = tru
20780 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e;..
20790 20 20 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e props[name].
207a0 67 65 74 74 65 72 54 6f 6b 65 6e 20 3d 20 74 6f getterToken = to
207b0 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ken;..
207c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
207d0 20 20 20 62 20 3d 20 74 6f 6b 65 6e 2e 6c 69 6e b = token.lin
207e0 65 20 21 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e e !== nexttoken.
207f0 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 line;..
20800 20 20 20 69 66 20 28 62 29 20 7b 0d 0a 20 20 20 if (b) {..
20810 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 ind
20820 65 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e ent += option.in
20830 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 dent;..
20840 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 if (nextt
20850 6f 6b 65 6e 2e 66 72 6f 6d 20 3d 3d 3d 20 69 6e oken.from === in
20860 64 65 6e 74 20 2b 20 6f 70 74 69 6f 6e 2e 69 6e dent + option.in
20870 64 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 dent) {..
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 ind
20890 65 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e ent += option.in
208a0 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 dent;..
208b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
208c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
208d0 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d for (;;) {.
208e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
208f0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 if (nexttoken.i
20900 64 20 3d 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20 20 d === "}") {..
20910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20920 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
20930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
20940 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
20950 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 (b) {..
20960 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e inden
20970 74 61 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 tation();..
20980 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
20990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
209a0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 (nexttoken.valu
209b0 65 20 3d 3d 3d 20 22 67 65 74 22 20 26 26 20 70 e === "get" && p
209c0 65 65 6b 28 29 2e 69 64 20 21 3d 3d 20 22 3a 22 eek().id !== ":"
209d0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
209e0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
209f0 28 22 67 65 74 22 29 3b 0d 0a 20 20 20 20 20 20 ("get");..
20a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
20a10 20 28 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b (!option.es5) {
20a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
20a30 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error(
20a40 22 67 65 74 2f 73 65 74 20 61 72 65 20 45 53 35 "get/set are ES5
20a50 20 66 65 61 74 75 72 65 73 2e 22 29 3b 0d 0a 20 features.");..
20a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20a70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
20a80 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 70 72 i = pr
20a90 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29 3b 0d 0a operty_name();..
20aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20ab0 20 20 20 20 69 66 20 28 21 69 29 20 7b 0d 0a 20 if (!i) {..
20ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20ad0 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 4d 69 error("Mi
20ae0 73 73 69 6e 67 20 70 72 6f 70 65 72 74 79 20 6e ssing property n
20af0 61 6d 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 ame.");..
20b00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
20b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20b20 20 20 20 20 73 61 76 65 47 65 74 74 65 72 28 69 saveGetter(i
20b30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
20b40 20 20 20 20 20 20 20 20 74 20 3d 20 6e 65 78 74 t = next
20b50 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 token;..
20b60 20 20 20 20 20 20 20 20 20 20 20 20 61 64 6a 61 adja
20b70 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 cent(token, next
20b80 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 66 20 3d f =
20ba0 20 64 6f 46 75 6e 63 74 69 6f 6e 28 29 3b 0d 0a doFunction();..
20bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20bc0 20 20 20 20 70 20 3d 20 66 5b 22 28 70 61 72 61 p = f["(para
20bd0 6d 73 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20 ms)"];..
20be0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
20bf0 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 p) {..
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
20c10 72 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 rning("Unexpecte
20c20 64 20 70 61 72 61 6d 65 74 65 72 20 27 7b 61 7d d parameter '{a}
20c30 27 20 69 6e 20 67 65 74 20 7b 62 7d 20 66 75 6e ' in get {b} fun
20c40 63 74 69 6f 6e 2e 22 2c 20 74 2c 20 70 5b 30 5d ction.", t, p[0]
20c50 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 , i);..
20c60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
20c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20c80 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e adjacent(token
20c90 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 , nexttoken);..
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
20cb0 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74 74 6f else if (nextto
20cc0 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 73 ken.value === "s
20cd0 65 74 22 20 26 26 20 70 65 65 6b 28 29 2e 69 64 et" && peek().id
20ce0 20 21 3d 3d 20 22 3a 22 29 20 7b 0d 0a 20 20 20 !== ":") {..
20cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20d00 20 61 64 76 61 6e 63 65 28 22 73 65 74 22 29 3b advance("set");
20d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
20d20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f if (!optio
20d30 6e 2e 65 73 35 29 20 7b 0d 0a 20 20 20 20 20 20 n.es5) {..
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20d50 20 20 65 72 72 6f 72 28 22 67 65 74 2f 73 65 74 error("get/set
20d60 20 61 72 65 20 45 53 35 20 66 65 61 74 75 72 65 are ES5 feature
20d70 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 s.");..
20d80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20da0 20 20 69 20 3d 20 70 72 6f 70 65 72 74 79 5f 6e i = property_n
20db0 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 ame();..
20dc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
20dd0 21 69 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 !i) {..
20de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
20df0 72 72 6f 72 28 22 4d 69 73 73 69 6e 67 20 70 72 rror("Missing pr
20e00 6f 70 65 72 74 79 20 6e 61 6d 65 2e 22 29 3b 0d operty name.");.
20e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
20e20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
20e30 20 20 20 20 20 20 20 20 20 20 20 20 73 61 76 65 save
20e40 53 65 74 74 65 72 28 69 2c 20 6e 65 78 74 74 6f Setter(i, nextto
20e50 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
20e60 20 20 20 20 20 20 20 20 20 20 20 74 20 3d 20 6e t = n
20e70 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 exttoken;..
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
20e90 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e djacent(token, n
20ea0 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 exttoken);..
20eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20ec0 66 20 3d 20 64 6f 46 75 6e 63 74 69 6f 6e 28 29 f = doFunction()
20ed0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
20ee0 20 20 20 20 20 20 20 70 20 3d 20 66 5b 22 28 70 p = f["(p
20ef0 61 72 61 6d 73 29 22 5d 3b 0d 0a 20 20 20 20 20 arams)"];..
20f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
20f10 66 20 28 21 70 20 7c 7c 20 70 2e 6c 65 6e 67 74 f (!p || p.lengt
20f20 68 20 21 3d 3d 20 31 29 20 7b 0d 0a 20 20 20 20 h !== 1) {..
20f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20f40 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 70 warning("Exp
20f50 65 63 74 65 64 20 61 20 73 69 6e 67 6c 65 20 70 ected a single p
20f60 61 72 61 6d 65 74 65 72 20 69 6e 20 73 65 74 20 arameter in set
20f70 7b 61 7d 20 66 75 6e 63 74 69 6f 6e 2e 22 2c 20 {a} function.",
20f80 74 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 t, i);..
20f90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
20fb0 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 else {..
20fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d i =
20fd0 20 70 72 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29 property_name()
20fe0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
20ff0 20 20 20 20 20 20 20 73 61 76 65 50 72 6f 70 65 savePrope
21000 72 74 79 28 69 2c 20 6e 65 78 74 74 6f 6b 65 6e rty(i, nexttoken
21010 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
21020 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65 if (type
21030 6f 66 20 69 20 21 3d 3d 20 22 73 74 72 69 6e 67 of i !== "string
21040 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
21050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
21060 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
21070 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
21080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21090 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b 0d 0a advance(":");..
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
210b0 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 nonadjacent(
210c0 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e token, nexttoken
210d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
210e0 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 expressi
210f0 6f 6e 28 31 30 29 3b 0d 0a 20 20 20 20 20 20 20 on(10);..
21100 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 }....
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f co
21120 75 6e 74 4d 65 6d 62 65 72 28 69 29 3b 0d 0a 20 untMember(i);..
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
21140 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 f (nexttoken.id
21150 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 === ",") {..
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21170 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20 20 20 20 20 comma();..
21180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
21190 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d (nexttoken.id =
211a0 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 == ",") {..
211b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
211c0 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 74 72 warning("Extr
211d0 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e a comma.", token
211e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
211f0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
21200 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 f (nexttoken.id
21210 3d 3d 3d 20 22 7d 22 20 26 26 20 21 6f 70 74 69 === "}" && !opti
21220 6f 6e 2e 65 73 35 29 20 7b 0d 0a 20 20 20 20 20 on.es5) {..
21230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21240 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 74 72 warning("Extr
21250 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e a comma.", token
21260 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
21270 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
21280 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
21290 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e {..
212a0 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d break;.
212b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
212c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
212d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 }.. i
212e0 66 20 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 f (b) {..
212f0 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 20 indent
21300 2d 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 -= option.indent
21310 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
21320 20 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 indentation()
21330 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
21340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 .. ad
21350 76 61 6e 63 65 28 22 7d 22 2c 20 74 68 69 73 29 vance("}", this)
21360 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
21370 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 6c 6f // Check for lo
21380 6e 65 6c 79 20 73 65 74 74 65 72 73 20 69 66 20 nely setters if
21390 69 6e 20 74 68 65 20 45 53 35 20 6d 6f 64 65 2e in the ES5 mode.
213a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
213b0 20 28 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b 0d (option.es5) {.
213c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
213d0 20 66 6f 72 20 28 76 61 72 20 6e 61 6d 65 20 69 for (var name i
213e0 6e 20 70 72 6f 70 73 29 20 7b 0d 0a 20 20 20 20 n props) {..
213f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21400 69 66 20 28 69 73 5f 6f 77 6e 28 70 72 6f 70 73 if (is_own(props
21410 2c 20 6e 61 6d 65 29 20 26 26 20 70 72 6f 70 73 , name) && props
21420 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 20 26 26 [name].setter &&
21430 20 21 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 67 65 !props[name].ge
21440 74 74 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 tter) {..
21450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21460 20 77 61 72 6e 69 6e 67 28 22 53 65 74 74 65 72 warning("Setter
21470 20 69 73 20 64 65 66 69 6e 65 64 20 77 69 74 68 is defined with
21480 6f 75 74 20 67 65 74 74 65 72 2e 22 2c 20 70 72 out getter.", pr
21490 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 ops[name].setter
214a0 54 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 Token);..
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
214c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
214d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d }.. }
214e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
214f0 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 turn this;..
21500 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 };..
21510 78 2e 66 75 64 20 3d 20 66 75 6e 63 74 69 6f 6e x.fud = function
21520 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 () {..
21530 20 20 20 65 72 72 6f 72 28 22 45 78 70 65 63 74 error("Expect
21540 65 64 20 74 6f 20 73 65 65 20 61 20 73 74 61 74 ed to see a stat
21550 65 6d 65 6e 74 20 61 6e 64 20 69 6e 73 74 65 61 ement and instea
21560 64 20 73 61 77 20 61 20 62 6c 6f 63 6b 2e 22 2c d saw a block.",
21570 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 token);..
21580 20 20 7d 3b 0d 0a 20 20 20 20 7d 28 64 65 6c 69 };.. }(deli
21590 6d 28 22 7b 22 29 29 29 3b 0d 0a 0d 0a 2f 2f 20 m("{")));....//
215a0 54 68 69 73 20 46 75 6e 63 74 69 6f 6e 20 69 73 This Function is
215b0 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 65 73 6e called when esn
215c0 65 78 74 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 ext option is se
215d0 74 20 74 6f 20 74 72 75 65 0d 0a 2f 2f 20 69 74 t to true..// it
215e0 20 61 64 64 73 20 74 68 65 20 60 63 6f 6e 73 74 adds the `const
215f0 60 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 4a ` statement to J
21600 53 48 49 4e 54 0d 0a 0d 0a 20 20 20 20 75 73 65 SHINT.... use
21610 45 53 4e 65 78 74 53 79 6e 74 61 78 20 3d 20 66 ESNextSyntax = f
21620 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 unction () {..
21630 20 20 20 20 20 20 76 61 72 20 63 6f 6e 73 74 73 var consts
21640 74 61 74 65 6d 65 6e 74 20 3d 20 73 74 6d 74 28 tatement = stmt(
21650 22 63 6f 6e 73 74 22 2c 20 66 75 6e 63 74 69 6f "const", functio
21660 6e 20 28 70 72 65 66 69 78 29 20 7b 0d 0a 20 20 n (prefix) {..
21670 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 64 var id
21680 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 3b 0d 0a , name, value;..
21690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
216a0 69 73 2e 66 69 72 73 74 20 3d 20 5b 5d 3b 0d 0a is.first = [];..
216b0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 for
216c0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 (;;) {..
216d0 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 nonadjac
216e0 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 ent(token, nextt
216f0 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 oken);..
21700 20 20 20 20 20 20 20 20 69 64 20 3d 20 69 64 65 id = ide
21710 6e 74 69 66 69 65 72 28 29 3b 0d 0a 20 20 20 20 ntifier();..
21720 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
21730 66 75 6e 63 74 5b 69 64 5d 20 3d 3d 3d 20 22 63 funct[id] === "c
21740 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 onst") {..
21750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
21760 72 6e 69 6e 67 28 22 63 6f 6e 73 74 20 27 22 20 rning("const '"
21770 2b 20 69 64 20 2b 20 22 27 20 68 61 73 20 61 6c + id + "' has al
21780 72 65 61 64 79 20 62 65 65 6e 20 64 65 63 6c 61 ready been decla
21790 72 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 red");..
217a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
217b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 if (f
217c0 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d unct["(global)"]
217d0 20 26 26 20 70 72 65 64 65 66 69 6e 65 64 5b 69 && predefined[i
217e0 64 5d 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0d d] === false) {.
217f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
21800 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 52 65 warning("Re
21810 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 27 7b definition of '{
21820 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 69 64 a}'.", token, id
21830 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
21840 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
21850 20 20 20 20 20 20 20 61 64 64 6c 61 62 65 6c 28 addlabel(
21860 69 64 2c 20 22 63 6f 6e 73 74 22 29 3b 0d 0a 20 id, "const");..
21870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
21880 66 20 28 70 72 65 66 69 78 29 20 7b 0d 0a 20 20 f (prefix) {..
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
218a0 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
218b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
218c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d nam
218d0 65 20 3d 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 e = token;..
218e0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
218f0 2e 66 69 72 73 74 2e 70 75 73 68 28 74 6f 6b 65 .first.push(toke
21900 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 n);....
21910 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 if (nextt
21920 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 3d 22 29 oken.id !== "=")
21930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
21940 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
21950 22 63 6f 6e 73 74 20 22 20 2b 0d 0a 20 20 20 20 "const " +..
21960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21970 20 20 22 27 7b 61 7d 27 20 69 73 20 69 6e 69 74 "'{a}' is init
21980 69 61 6c 69 7a 65 64 20 74 6f 20 27 75 6e 64 65 ialized to 'unde
21990 66 69 6e 65 64 27 2e 22 2c 20 74 6f 6b 65 6e 2c fined'.", token,
219a0 20 69 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 id);..
219b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
219c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
219d0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d nexttoken.id ===
219e0 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 "=") {..
219f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e non
21a00 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 adjacent(token,
21a10 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 nexttoken);..
21a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21a30 20 61 64 76 61 6e 63 65 28 22 3d 22 29 3b 0d 0a advance("=");..
21a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21a50 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 nonadjacent(
21a60 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e token, nexttoken
21a70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
21a80 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 if (next
21a90 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 75 6e token.id === "un
21aa0 64 65 66 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 defined") {..
21ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21ac0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 49 74 warning("It
21ad0 20 69 73 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 is not necessar
21ae0 79 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 y to initialize
21af0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 " +..
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 "
21b10 27 7b 61 7d 27 20 74 6f 20 27 75 6e 64 65 66 69 '{a}' to 'undefi
21b20 6e 65 64 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 69 ned'.", token, i
21b30 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 d);..
21b40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
21b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21b60 69 66 20 28 70 65 65 6b 28 30 29 2e 69 64 20 3d if (peek(0).id =
21b70 3d 3d 20 22 3d 22 20 26 26 20 6e 65 78 74 74 6f == "=" && nextto
21b80 6b 65 6e 2e 69 64 65 6e 74 69 66 69 65 72 29 20 ken.identifier)
21b90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
21ba0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
21bb0 28 22 43 6f 6e 73 74 61 6e 74 20 7b 61 7d 20 77 ("Constant {a} w
21bc0 61 73 20 6e 6f 74 20 64 65 63 6c 61 72 65 64 20 as not declared
21bd0 63 6f 72 72 65 63 74 6c 79 2e 22 2c 0d 0a 20 20 correctly.",..
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 ne
21c00 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b xttoken, nexttok
21c10 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 en.value);..
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21c30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
21c40 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65 value = e
21c50 78 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20 xpression(0);..
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21c70 20 20 20 6e 61 6d 65 2e 66 69 72 73 74 20 3d 20 name.first =
21c80 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 value;..
21c90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }....
21ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
21cb0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d (nexttoken.id !=
21cc0 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 = ",") {..
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
21ce0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
21cf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
21d00 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29 comma()
21d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
21d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
21d30 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 turn this;..
21d40 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20 });..
21d50 20 63 6f 6e 73 74 73 74 61 74 65 6d 65 6e 74 2e conststatement.
21d60 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 exps = true;..
21d70 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 76 61 72 20 };.... var
21d80 76 61 72 73 74 61 74 65 6d 65 6e 74 20 3d 20 73 varstatement = s
21d90 74 6d 74 28 22 76 61 72 22 2c 20 66 75 6e 63 74 tmt("var", funct
21da0 69 6f 6e 20 28 70 72 65 66 69 78 29 20 7b 0d 0a ion (prefix) {..
21db0 20 20 20 20 20 20 20 20 2f 2f 20 4a 61 76 61 53 // JavaS
21dc0 63 72 69 70 74 20 64 6f 65 73 20 6e 6f 74 20 68 cript does not h
21dd0 61 76 65 20 62 6c 6f 63 6b 20 73 63 6f 70 65 2e ave block scope.
21de0 20 49 74 20 6f 6e 6c 79 20 68 61 73 20 66 75 6e It only has fun
21df0 63 74 69 6f 6e 20 73 63 6f 70 65 2e 20 53 6f 2c ction scope. So,
21e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 64 65 63 .. // dec
21e10 6c 61 72 69 6e 67 20 61 20 76 61 72 69 61 62 6c laring a variabl
21e20 65 20 69 6e 20 61 20 62 6c 6f 63 6b 20 63 61 6e e in a block can
21e30 20 68 61 76 65 20 75 6e 65 78 70 65 63 74 65 64 have unexpected
21e40 20 63 6f 6e 73 65 71 75 65 6e 63 65 73 2e 0d 0a consequences...
21e50 20 20 20 20 20 20 20 20 76 61 72 20 69 64 2c 20 var id,
21e60 6e 61 6d 65 2c 20 76 61 6c 75 65 3b 0d 0a 0d 0a name, value;....
21e70 20 20 20 20 20 20 20 20 69 66 20 28 66 75 6e 63 if (func
21e80 74 5b 22 28 6f 6e 65 76 61 72 29 22 5d 20 26 26 t["(onevar)"] &&
21e90 20 6f 70 74 69 6f 6e 2e 6f 6e 65 76 61 72 29 20 option.onevar)
21ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 {.. w
21eb0 61 72 6e 69 6e 67 28 22 54 6f 6f 20 6d 61 6e 79 arning("Too many
21ec0 20 76 61 72 20 73 74 61 74 65 6d 65 6e 74 73 2e var statements.
21ed0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 ");.. } e
21ee0 6c 73 65 20 69 66 20 28 21 66 75 6e 63 74 5b 22 lse if (!funct["
21ef0 28 67 6c 6f 62 61 6c 29 22 5d 29 20 7b 0d 0a 20 (global)"]) {..
21f00 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 funct
21f10 5b 22 28 6f 6e 65 76 61 72 29 22 5d 20 3d 20 74 ["(onevar)"] = t
21f20 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d rue;.. }.
21f30 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e ... this.
21f40 66 69 72 73 74 20 3d 20 5b 5d 3b 0d 0a 0d 0a 20 first = [];....
21f50 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 for (;;)
21f60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {.. n
21f70 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e onadjacent(token
21f80 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 , nexttoken);..
21f90 20 20 20 20 20 20 20 20 20 20 20 69 64 20 3d 20 id =
21fa0 69 64 65 6e 74 69 66 69 65 72 28 29 3b 0d 0a 0d identifier();...
21fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
21fc0 28 6f 70 74 69 6f 6e 2e 65 73 6e 65 78 74 20 26 (option.esnext &
21fd0 26 20 66 75 6e 63 74 5b 69 64 5d 20 3d 3d 3d 20 & funct[id] ===
21fe0 22 63 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20 "const") {..
21ff0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e warn
22000 69 6e 67 28 22 63 6f 6e 73 74 20 27 22 20 2b 20 ing("const '" +
22010 69 64 20 2b 20 22 27 20 68 61 73 20 61 6c 72 65 id + "' has alre
22020 61 64 79 20 62 65 65 6e 20 64 65 63 6c 61 72 65 ady been declare
22030 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 d");..
22040 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 }....
22050 20 20 20 69 66 20 28 66 75 6e 63 74 5b 22 28 67 if (funct["(g
22060 6c 6f 62 61 6c 29 22 5d 20 26 26 20 70 72 65 64 lobal)"] && pred
22070 65 66 69 6e 65 64 5b 69 64 5d 20 3d 3d 3d 20 66 efined[id] === f
22080 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 alse) {..
22090 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 warning
220a0 28 22 52 65 64 65 66 69 6e 69 74 69 6f 6e 20 6f ("Redefinition o
220b0 66 20 27 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e f '{a}'.", token
220c0 2c 20 69 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 , id);..
220d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
220e0 20 20 20 20 20 61 64 64 6c 61 62 65 6c 28 69 64 addlabel(id
220f0 2c 20 22 75 6e 75 73 65 64 22 2c 20 74 6f 6b 65 , "unused", toke
22100 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 n);....
22110 20 20 20 69 66 20 28 70 72 65 66 69 78 29 20 7b if (prefix) {
22120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
22130 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
22140 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
22150 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 74 6f name = to
22160 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ken;..
22170 20 20 74 68 69 73 2e 66 69 72 73 74 2e 70 75 73 this.first.pus
22180 68 28 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 h(token);....
22190 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 if (nex
221a0 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 3d ttoken.id === "=
221b0 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
221c0 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e nonadjacen
221d0 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b t(token, nexttok
221e0 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 en);..
221f0 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d advance("=
22200 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ");..
22210 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 nonadjacent
22220 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 (token, nexttoke
22230 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 n);..
22240 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b if (nexttok
22250 65 6e 2e 69 64 20 3d 3d 3d 20 22 75 6e 64 65 66 en.id === "undef
22260 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20 20 ined") {..
22270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
22280 72 6e 69 6e 67 28 22 49 74 20 69 73 20 6e 6f 74 rning("It is not
22290 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 69 6e necessary to in
222a0 69 74 69 61 6c 69 7a 65 20 27 7b 61 7d 27 20 74 itialize '{a}' t
222b0 6f 20 27 75 6e 64 65 66 69 6e 65 64 27 2e 22 2c o 'undefined'.",
222c0 20 74 6f 6b 65 6e 2c 20 69 64 29 3b 0d 0a 20 20 token, id);..
222d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
222e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
222f0 20 69 66 20 28 70 65 65 6b 28 30 29 2e 69 64 20 if (peek(0).id
22300 3d 3d 3d 20 22 3d 22 20 26 26 20 6e 65 78 74 74 === "=" && nextt
22310 6f 6b 65 6e 2e 69 64 65 6e 74 69 66 69 65 72 29 oken.identifier)
22320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
22330 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 56 error("V
22340 61 72 69 61 62 6c 65 20 7b 61 7d 20 77 61 73 20 ariable {a} was
22350 6e 6f 74 20 64 65 63 6c 61 72 65 64 20 63 6f 72 not declared cor
22360 72 65 63 74 6c 79 2e 22 2c 0d 0a 20 20 20 20 20 rectly.",..
22370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
22380 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e nexttoken
22390 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 , nexttoken.valu
223a0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e);..
223b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
223c0 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 value =
223d0 65 78 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a expression(0);..
223e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
223f0 6e 61 6d 65 2e 66 69 72 73 74 20 3d 20 76 61 6c name.first = val
22400 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ue;..
22410 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
22420 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 if (nexttoken.id
22430 20 21 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 !== ",") {..
22440 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
22450 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ak;..
22460 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
22470 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20 20 20 20 20 comma();..
22480 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 }.. ret
22490 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d urn this;.. }
224a0 29 3b 0d 0a 20 20 20 20 76 61 72 73 74 61 74 65 );.. varstate
224b0 6d 65 6e 74 2e 65 78 70 73 20 3d 20 74 72 75 65 ment.exps = true
224c0 3b 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 ;.... blockst
224d0 6d 74 28 22 66 75 6e 63 74 69 6f 6e 22 2c 20 66 mt("function", f
224e0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 unction () {..
224f0 20 20 20 20 20 20 69 66 20 28 69 6e 62 6c 6f 63 if (inbloc
22500 6b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 k) {..
22510 20 20 77 61 72 6e 69 6e 67 28 22 46 75 6e 63 74 warning("Funct
22520 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 ion declarations
22530 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 70 should not be p
22540 6c 61 63 65 64 20 69 6e 20 62 6c 6f 63 6b 73 2e laced in blocks.
22550 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 " +..
22560 20 20 20 20 20 20 22 55 73 65 20 61 20 66 75 6e "Use a fun
22570 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e ction expression
22580 20 6f 72 20 6d 6f 76 65 20 74 68 65 20 73 74 61 or move the sta
22590 74 65 6d 65 6e 74 20 74 6f 20 74 68 65 20 74 6f tement to the to
225a0 70 20 6f 66 20 22 20 2b 0d 0a 20 20 20 20 20 20 p of " +..
225b0 20 20 20 20 20 20 20 20 20 20 22 74 68 65 20 6f "the o
225c0 75 74 65 72 20 66 75 6e 63 74 69 6f 6e 2e 22 2c uter function.",
225d0 20 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 token);....
225e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 76 }.. v
225f0 61 72 20 69 20 3d 20 69 64 65 6e 74 69 66 69 65 ar i = identifie
22600 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 r();.. if
22610 20 28 6f 70 74 69 6f 6e 2e 65 73 6e 65 78 74 20 (option.esnext
22620 26 26 20 66 75 6e 63 74 5b 69 5d 20 3d 3d 3d 20 && funct[i] ===
22630 22 63 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20 "const") {..
22640 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
22650 22 63 6f 6e 73 74 20 27 22 20 2b 20 69 20 2b 20 "const '" + i +
22660 22 27 20 68 61 73 20 61 6c 72 65 61 64 79 20 62 "' has already b
22670 65 65 6e 20 64 65 63 6c 61 72 65 64 22 29 3b 0d een declared");.
22680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
22690 20 20 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b adjacent(tok
226a0 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d en, nexttoken);.
226b0 0a 20 20 20 20 20 20 20 20 61 64 64 6c 61 62 65 . addlabe
226c0 6c 28 69 2c 20 22 75 6e 63 74 69 6f 6e 22 2c 20 l(i, "unction",
226d0 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 token);....
226e0 20 20 20 64 6f 46 75 6e 63 74 69 6f 6e 28 69 2c doFunction(i,
226f0 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 true);..
22700 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 if (nexttoken.i
22710 64 20 3d 3d 3d 20 22 28 22 20 26 26 20 6e 65 78 d === "(" && nex
22720 74 74 6f 6b 65 6e 2e 6c 69 6e 65 20 3d 3d 3d 20 ttoken.line ===
22730 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 token.line) {..
22740 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
22750 28 0d 0a 22 46 75 6e 63 74 69 6f 6e 20 64 65 63 (.."Function dec
22760 6c 61 72 61 74 69 6f 6e 73 20 61 72 65 20 6e 6f larations are no
22770 74 20 69 6e 76 6f 63 61 62 6c 65 2e 20 57 72 61 t invocable. Wra
22780 70 20 74 68 65 20 77 68 6f 6c 65 20 66 75 6e 63 p the whole func
22790 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e 20 tion invocation
227a0 69 6e 20 70 61 72 65 6e 73 2e 22 29 3b 0d 0a 20 in parens.");..
227b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
227c0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a return this;..
227d0 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20 20 20 20 70 });.... p
227e0 72 65 66 69 78 28 22 66 75 6e 63 74 69 6f 6e 22 refix("function"
227f0 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d , function () {.
22800 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 20 3d . var i =
22810 20 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74 69 66 optionalidentif
22820 69 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 ier();..
22830 69 66 20 28 69 29 20 7b 0d 0a 20 20 20 20 20 20 if (i) {..
22840 20 20 20 20 20 20 61 64 6a 61 63 65 6e 74 28 74 adjacent(t
22850 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 oken, nexttoken)
22860 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
22870 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e {..
22880 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b nonadjacent(tok
22890 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d en, nexttoken);.
228a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
228b0 20 20 20 20 64 6f 46 75 6e 63 74 69 6f 6e 28 69 doFunction(i
228c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
228d0 21 6f 70 74 69 6f 6e 2e 6c 6f 6f 70 66 75 6e 63 !option.loopfunc
228e0 20 26 26 20 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 && funct["(loop
228f0 61 67 65 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 age)"]) {..
22900 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 warning("
22910 44 6f 6e 27 74 20 6d 61 6b 65 20 66 75 6e 63 74 Don't make funct
22920 69 6f 6e 73 20 77 69 74 68 69 6e 20 61 20 6c 6f ions within a lo
22930 6f 70 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 op.");..
22940 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
22950 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b n this;.. });
22960 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 6d .... blockstm
22970 74 28 22 69 66 22 2c 20 66 75 6e 63 74 69 6f 6e t("if", function
22980 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 () {.. v
22990 61 72 20 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e ar t = nexttoken
229a0 3b 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e ;.. advan
229b0 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20 20 20 ce("(");..
229c0 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 68 nonadjacent(th
229d0 69 73 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 is, t);..
229e0 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20 20 nospace();..
229f0 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28 expression(
22a00 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20);.. if
22a10 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d (nexttoken.id =
22a20 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20 20 == "=") {..
22a30 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 if (!opti
22a40 6f 6e 2e 62 6f 73 73 29 0d 0a 20 20 20 20 20 20 on.boss)..
22a50 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
22a60 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63 6f g("Expected a co
22a70 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65 73 nditional expres
22a80 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61 64 sion and instead
22a90 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d 65 saw an assignme
22aa0 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 nt.");..
22ab0 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d 22 29 advance("=")
22ac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 ;.. e
22ad0 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d 0a xpression(20);..
22ae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
22af0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20 advance(")",
22b00 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 t);.. nos
22b10 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20 pace(prevtoken,
22b20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
22b30 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74 72 75 block(true, tru
22b40 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 e);.. if
22b50 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d (nexttoken.id ==
22b60 3d 20 22 65 6c 73 65 22 29 20 7b 0d 0a 20 20 20 = "else") {..
22b70 20 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 nonadja
22b80 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 cent(token, next
22b90 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
22ba0 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 65 6c advance("el
22bb0 73 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 se");..
22bc0 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e if (nexttoken
22bd0 2e 69 64 20 3d 3d 3d 20 22 69 66 22 20 7c 7c 20 .id === "if" ||
22be0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d nexttoken.id ===
22bf0 20 22 73 77 69 74 63 68 22 29 20 7b 0d 0a 20 20 "switch") {..
22c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 st
22c10 61 74 65 6d 65 6e 74 28 74 72 75 65 29 3b 0d 0a atement(true);..
22c20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
22c30 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 se {..
22c40 20 20 20 20 20 20 62 6c 6f 63 6b 28 74 72 75 65 block(true
22c50 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 , true);..
22c60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
22c70 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
22c80 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d 29 rn this;.. })
22c90 3b 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 ;.... blockst
22ca0 6d 74 28 22 74 72 79 22 2c 20 66 75 6e 63 74 69 mt("try", functi
22cb0 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 on () {..
22cc0 20 76 61 72 20 62 2c 20 65 2c 20 73 3b 0d 0a 0d var b, e, s;...
22cd0 0a 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 66 . block(f
22ce0 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 alse);..
22cf0 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 if (nexttoken.id
22d00 20 3d 3d 3d 20 22 63 61 74 63 68 22 29 20 7b 0d === "catch") {.
22d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 . adv
22d20 61 6e 63 65 28 22 63 61 74 63 68 22 29 3b 0d 0a ance("catch");..
22d30 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e 61 nona
22d40 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e djacent(token, n
22d50 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 exttoken);..
22d60 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
22d70 22 28 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 "(");..
22d80 20 20 20 73 20 3d 20 73 63 6f 70 65 3b 0d 0a 20 s = scope;..
22d90 20 20 20 20 20 20 20 20 20 20 20 73 63 6f 70 65 scope
22da0 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 = Object.create
22db0 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 (s);..
22dc0 20 20 65 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e e = nexttoken.
22dd0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 value;..
22de0 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 if (nexttoke
22df0 6e 2e 74 79 70 65 20 21 3d 3d 20 22 28 69 64 65 n.type !== "(ide
22e00 6e 74 69 66 69 65 72 29 22 29 20 7b 0d 0a 20 20 ntifier)") {..
22e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
22e20 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 rning("Expected
22e30 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e an identifier an
22e40 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b d instead saw '{
22e50 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 a}'.",..
22e60 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 next
22e70 74 6f 6b 65 6e 2c 20 65 29 3b 0d 0a 20 20 20 20 token, e);..
22e80 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
22e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
22ea0 20 20 61 64 64 6c 61 62 65 6c 28 65 2c 20 22 65 addlabel(e, "e
22eb0 78 63 65 70 74 69 6f 6e 22 29 3b 0d 0a 20 20 20 xception");..
22ec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
22ed0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
22ee0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
22ef0 61 64 76 61 6e 63 65 28 22 29 22 29 3b 0d 0a 20 advance(")");..
22f00 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b block
22f10 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 (false);..
22f20 20 20 20 20 20 20 62 20 3d 20 74 72 75 65 3b 0d b = true;.
22f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 6f . sco
22f40 70 65 20 3d 20 73 3b 0d 0a 20 20 20 20 20 20 20 pe = s;..
22f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }.. if (
22f60 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d nexttoken.id ===
22f70 20 22 66 69 6e 61 6c 6c 79 22 29 20 7b 0d 0a 20 "finally") {..
22f80 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e advan
22f90 63 65 28 22 66 69 6e 61 6c 6c 79 22 29 3b 0d 0a ce("finally");..
22fa0 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 bloc
22fb0 6b 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 k(false);..
22fc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a return;..
22fd0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
22fe0 66 20 28 21 62 29 20 7b 0d 0a 20 20 20 20 20 20 f (!b) {..
22ff0 20 20 20 20 20 20 65 72 72 6f 72 28 22 45 78 70 error("Exp
23000 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 ected '{a}' and
23010 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d instead saw '{b}
23020 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 '.",..
23030 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f nextto
23040 6b 65 6e 2c 20 22 63 61 74 63 68 22 2c 20 6e 65 ken, "catch", ne
23050 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d xttoken.value);.
23060 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
23070 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
23080 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20 20 20 .. });....
23090 20 62 6c 6f 63 6b 73 74 6d 74 28 22 77 68 69 6c blockstmt("whil
230a0 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e", function ()
230b0 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 {.. var t
230c0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 = nexttoken;..
230d0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 62 funct["(b
230e0 72 65 61 6b 61 67 65 29 22 5d 20 2b 3d 20 31 3b reakage)"] += 1;
230f0 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b .. funct[
23100 22 28 6c 6f 6f 70 61 67 65 29 22 5d 20 2b 3d 20 "(loopage)"] +=
23110 31 3b 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61 1;.. adva
23120 6e 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20 20 nce("(");..
23130 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 nonadjacent(t
23140 68 69 73 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 his, t);..
23150 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20 nospace();..
23160 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e expression
23170 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 (20);.. i
23180 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 f (nexttoken.id
23190 3d 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20 === "=") {..
231a0 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 if (!opt
231b0 69 6f 6e 2e 62 6f 73 73 29 0d 0a 20 20 20 20 20 ion.boss)..
231c0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
231d0 6e 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63 ng("Expected a c
231e0 6f 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65 onditional expre
231f0 73 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61 ssion and instea
23200 64 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d d saw an assignm
23210 65 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 ent.");..
23220 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d 22 advance("="
23230 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
23240 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d expression(20);.
23250 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
23260 20 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c advance(")",
23270 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f t);.. no
23280 73 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c space(prevtoken,
23290 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 token);..
232a0 20 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74 72 block(true, tr
232b0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 66 75 ue);.. fu
232c0 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29 22 nct["(breakage)"
232d0 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 ] -= 1;..
232e0 20 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65 funct["(loopage
232f0 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 )"] -= 1;..
23300 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d return this;.
23310 0a 20 20 20 20 7d 29 2e 6c 61 62 65 6c 6c 65 64 . }).labelled
23320 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 = true;....
23330 62 6c 6f 63 6b 73 74 6d 74 28 22 77 69 74 68 22 blockstmt("with"
23340 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d , function () {.
23350 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 20 3d . var t =
23360 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 nexttoken;..
23370 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 69 if (directi
23380 76 65 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d ve["use strict"]
23390 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
233a0 20 65 72 72 6f 72 28 22 27 77 69 74 68 27 20 69 error("'with' i
233b0 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e s not allowed in
233c0 20 73 74 72 69 63 74 20 6d 6f 64 65 2e 22 2c 20 strict mode.",
233d0 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 token);..
233e0 20 7d 20 65 6c 73 65 20 69 66 20 28 21 6f 70 74 } else if (!opt
233f0 69 6f 6e 2e 77 69 74 68 73 74 6d 74 29 20 7b 0d ion.withstmt) {.
23400 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 . war
23410 6e 69 6e 67 28 22 44 6f 6e 27 74 20 75 73 65 20 ning("Don't use
23420 27 77 69 74 68 27 2e 22 2c 20 74 6f 6b 65 6e 29 'with'.", token)
23430 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a ;.. }....
23440 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
23450 22 28 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e "(");.. n
23460 6f 6e 61 64 6a 61 63 65 6e 74 28 74 68 69 73 2c onadjacent(this,
23470 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f t);.. no
23480 73 70 61 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 space();..
23490 20 20 65 78 70 72 65 73 73 69 6f 6e 28 30 29 3b expression(0);
234a0 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 .. advanc
234b0 65 28 22 29 22 2c 20 74 29 3b 0d 0a 20 20 20 20 e(")", t);..
234c0 20 20 20 20 6e 6f 73 70 61 63 65 28 70 72 65 76 nospace(prev
234d0 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a token, token);..
234e0 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 74 72 block(tr
234f0 75 65 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 ue, true);....
23500 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
23510 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20 s;.. });....
23520 20 20 20 62 6c 6f 63 6b 73 74 6d 74 28 22 73 77 blockstmt("sw
23530 69 74 63 68 22 2c 20 66 75 6e 63 74 69 6f 6e 20 itch", function
23540 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 () {.. va
23550 72 20 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2c r t = nexttoken,
23560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 20 .. g
23570 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 = false;..
23580 20 20 66 75 6e 63 74 5b 22 28 62 72 65 61 6b 61 funct["(breaka
23590 67 65 29 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 ge)"] += 1;..
235a0 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 28 22 advance("("
235b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 6e 61 );.. nona
235c0 64 6a 61 63 65 6e 74 28 74 68 69 73 2c 20 74 29 djacent(this, t)
235d0 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 70 61 ;.. nospa
235e0 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 ce();.. t
235f0 68 69 73 2e 63 6f 6e 64 69 74 69 6f 6e 20 3d 20 his.condition =
23600 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d expression(20);.
23610 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 . advance
23620 28 22 29 22 2c 20 74 29 3b 0d 0a 20 20 20 20 20 (")", t);..
23630 20 20 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74 nospace(prevt
23640 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 oken, token);..
23650 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 nonadjace
23660 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f nt(token, nextto
23670 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 ken);.. t
23680 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 = nexttoken;..
23690 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 advance("
236a0 7b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f {");.. no
236b0 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c nadjacent(token,
236c0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 nexttoken);..
236d0 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 indent +=
236e0 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a option.indent;..
236f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 73 this.cas
23700 65 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 es = [];..
23710 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20 for (;;) {..
23720 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 switch
23730 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 29 20 (nexttoken.id)
23740 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {.. c
23750 61 73 65 20 22 63 61 73 65 22 3a 0d 0a 20 20 20 ase "case":..
23760 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 swi
23770 74 63 68 20 28 66 75 6e 63 74 5b 22 28 76 65 72 tch (funct["(ver
23780 62 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 b)"]) {..
23790 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 62 case "b
237a0 72 65 61 6b 22 3a 0d 0a 20 20 20 20 20 20 20 20 reak":..
237b0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 63 61 case "ca
237c0 73 65 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 se":..
237d0 20 20 20 20 20 20 63 61 73 65 20 22 63 6f 6e 74 case "cont
237e0 69 6e 75 65 22 3a 0d 0a 20 20 20 20 20 20 20 20 inue":..
237f0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 72 65 case "re
23800 74 75 72 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 turn":..
23810 20 20 20 20 20 20 20 20 63 61 73 65 20 22 73 77 case "sw
23820 69 74 63 68 22 3a 0d 0a 20 20 20 20 20 20 20 20 itch":..
23830 20 20 20 20 20 20 20 20 63 61 73 65 20 22 74 68 case "th
23840 72 6f 77 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 row":..
23850 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
23860 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
23870 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 default:..
23880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23890 20 2f 2f 20 59 6f 75 20 63 61 6e 20 74 65 6c 6c // You can tell
238a0 20 4a 53 48 69 6e 74 20 74 68 61 74 20 79 6f 75 JSHint that you
238b0 20 64 6f 6e 27 74 20 75 73 65 20 62 72 65 61 6b don't use break
238c0 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 6c 79 20 62 intentionally b
238d0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 y..
238e0 20 20 20 20 20 20 20 2f 2f 20 61 64 64 69 6e 67 // adding
238f0 20 61 20 63 6f 6d 6d 65 6e 74 20 2f 2a 20 66 61 a comment /* fa
23900 6c 6c 73 20 74 68 72 6f 75 67 68 20 2a 2f 20 6f lls through */ o
23910 6e 20 61 20 6c 69 6e 65 20 6a 75 73 74 20 62 65 n a line just be
23920 66 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 fore..
23930 20 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 // the
23940 20 6e 65 78 74 20 60 63 61 73 65 60 2e 0d 0a 20 next `case`...
23950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23960 20 20 20 69 66 20 28 21 66 74 2e 74 65 73 74 28 if (!ft.test(
23970 6c 69 6e 65 73 5b 6e 65 78 74 74 6f 6b 65 6e 2e lines[nexttoken.
23980 6c 69 6e 65 20 2d 20 32 5d 29 29 20 7b 0d 0a 20 line - 2])) {..
23990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
239a0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 0d warning(.
239b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
239c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 78 "Ex
239d0 70 65 63 74 65 64 20 61 20 27 62 72 65 61 6b 27 pected a 'break'
239e0 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72 statement befor
239f0 65 20 27 63 61 73 65 27 2e 22 2c 0d 0a 20 20 20 e 'case'.",..
23a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23a10 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b token);
23a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
23a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
23a40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
23a50 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 inde
23a60 6e 74 61 74 69 6f 6e 28 2d 6f 70 74 69 6f 6e 2e ntation(-option.
23a70 69 6e 64 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 indent);..
23a80 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 advanc
23a90 65 28 22 63 61 73 65 22 29 3b 0d 0a 20 20 20 20 e("case");..
23aa0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
23ab0 2e 63 61 73 65 73 2e 70 75 73 68 28 65 78 70 72 .cases.push(expr
23ac0 65 73 73 69 6f 6e 28 32 30 29 29 3b 0d 0a 20 20 ession(20));..
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 20 g
23ae0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 = true;..
23af0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
23b00 28 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 (":");..
23b10 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 funct["(
23b20 76 65 72 62 29 22 5d 20 3d 20 22 63 61 73 65 22 verb)"] = "case"
23b30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
23b40 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
23b50 20 20 20 20 20 20 20 63 61 73 65 20 22 64 65 66 case "def
23b60 61 75 6c 74 22 3a 0d 0a 20 20 20 20 20 20 20 20 ault":..
23b70 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch (
23b80 66 75 6e 63 74 5b 22 28 76 65 72 62 29 22 5d 29 funct["(verb)"])
23b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
23ba0 20 20 20 20 63 61 73 65 20 22 62 72 65 61 6b 22 case "break"
23bb0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
23bc0 20 20 20 63 61 73 65 20 22 63 6f 6e 74 69 6e 75 case "continu
23bd0 65 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e":..
23be0 20 20 20 20 20 63 61 73 65 20 22 72 65 74 75 72 case "retur
23bf0 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 n":..
23c00 20 20 20 20 20 63 61 73 65 20 22 74 68 72 6f 77 case "throw
23c10 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
23c20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23c40 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 default:..
23c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
23c60 20 28 21 66 74 2e 74 65 73 74 28 6c 69 6e 65 73 (!ft.test(lines
23c70 5b 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 20 [nexttoken.line
23c80 2d 20 32 5d 29 29 20 7b 0d 0a 20 20 20 20 20 20 - 2])) {..
23c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23ca0 20 20 77 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 warning(..
23cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23cc0 20 20 20 20 20 20 20 20 22 45 78 70 65 63 74 65 "Expecte
23cd0 64 20 61 20 27 62 72 65 61 6b 27 20 73 74 61 74 d a 'break' stat
23ce0 65 6d 65 6e 74 20 62 65 66 6f 72 65 20 27 64 65 ement before 'de
23cf0 66 61 75 6c 74 27 2e 22 2c 0d 0a 20 20 20 20 20 fault'.",..
23d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23d10 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a token);..
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23d30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
23d40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
23d50 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 indent
23d60 61 74 69 6f 6e 28 2d 6f 70 74 69 6f 6e 2e 69 6e ation(-option.in
23d70 64 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 dent);..
23d80 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
23d90 22 64 65 66 61 75 6c 74 22 29 3b 0d 0a 20 20 20 "default");..
23da0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 20 3d g =
23db0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
23dc0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
23dd0 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ":");..
23de0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 break;..
23df0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
23e00 22 7d 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 "}":..
23e10 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2d 3d 20 indent -=
23e20 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a option.indent;..
23e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23e40 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 3b 0d 0a indentation();..
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23e60 61 64 76 61 6e 63 65 28 22 7d 22 2c 20 74 29 3b advance("}", t);
23e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
23e80 20 20 69 66 20 28 74 68 69 73 2e 63 61 73 65 73 if (this.cases
23e90 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 20 7c 7c .length === 1 ||
23ea0 20 74 68 69 73 2e 63 6f 6e 64 69 74 69 6f 6e 2e this.condition.
23eb0 69 64 20 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c id === "true" ||
23ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
23ed0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 this.c
23ee0 6f 6e 64 69 74 69 6f 6e 2e 69 64 20 3d 3d 3d 20 ondition.id ===
23ef0 22 66 61 6c 73 65 22 29 20 7b 0d 0a 20 20 20 20 "false") {..
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23f10 69 66 20 28 21 6f 70 74 69 6f 6e 2e 6f 6e 65 63 if (!option.onec
23f20 61 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 ase)..
23f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
23f40 72 6e 69 6e 67 28 22 54 68 69 73 20 27 73 77 69 rning("This 'swi
23f50 74 63 68 27 20 73 68 6f 75 6c 64 20 62 65 20 61 tch' should be a
23f60 6e 20 27 69 66 27 2e 22 2c 20 74 68 69 73 29 3b n 'if'.", this);
23f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
23f80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
23f90 20 20 20 20 20 66 75 6e 63 74 5b 22 28 62 72 65 funct["(bre
23fa0 61 6b 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d 0a akage)"] -= 1;..
23fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23fc0 66 75 6e 63 74 5b 22 28 76 65 72 62 29 22 5d 20 funct["(verb)"]
23fd0 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d 0a 20 20 = undefined;..
23fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
23ff0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 turn;..
24000 20 20 20 63 61 73 65 20 22 28 65 6e 64 29 22 3a case "(end)":
24010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
24020 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e 67 error("Missing
24030 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 6f '{a}'.", nextto
24040 6b 65 6e 2c 20 22 7d 22 29 3b 0d 0a 20 20 20 20 ken, "}");..
24050 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
24060 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 rn;..
24070 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 default:..
24080 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 67 if (g
24090 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
240a0 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 switch
240b0 28 74 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20 20 (token.id) {..
240c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
240d0 20 20 63 61 73 65 20 22 2c 22 3a 0d 0a 20 20 20 case ",":..
240e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
240f0 20 20 20 20 20 65 72 72 6f 72 28 22 45 61 63 68 error("Each
24100 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 68 61 value should ha
24110 76 65 20 69 74 73 20 6f 77 6e 20 63 61 73 65 20 ve its own case
24120 6c 61 62 65 6c 2e 22 29 3b 0d 0a 20 20 20 20 20 label.");..
24130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24140 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 return;..
24150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24160 63 61 73 65 20 22 3a 22 3a 0d 0a 20 20 20 20 20 case ":":..
24170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24180 20 20 20 67 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 g = false;..
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
241a0 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 statement
241b0 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 s();..
241c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
241d0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
241e0 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul
241f0 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 t:..
24200 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f erro
24210 72 28 22 4d 69 73 73 69 6e 67 20 27 3a 27 20 6f r("Missing ':' o
24220 6e 20 61 20 63 61 73 65 20 63 6c 61 75 73 65 2e n a case clause.
24230 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 ", token);..
24240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24250 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 return;..
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24270 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
24280 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 } else {..
24290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
242a0 20 20 69 66 20 28 74 6f 6b 65 6e 2e 69 64 20 3d if (token.id =
242b0 3d 3d 20 22 3a 22 29 20 7b 0d 0a 20 20 20 20 20 == ":") {..
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
242d0 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b advance(":");
242e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
242f0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error(
24300 22 28 34 29 55 6e 65 78 70 65 63 74 65 64 20 27 "(4)Unexpected '
24310 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 22 {a}'.", token, "
24320 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 :");..
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 st
24340 61 74 65 6d 65 6e 74 73 28 29 3b 0d 0a 20 20 20 atements();..
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24360 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {..
24370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24380 20 20 20 65 72 72 6f 72 28 22 45 78 70 65 63 74 error("Expect
24390 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73 ed '{a}' and ins
243a0 74 65 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22 tead saw '{b}'."
243b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
243c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e n
243d0 65 78 74 74 6f 6b 65 6e 2c 20 22 63 61 73 65 22 exttoken, "case"
243e0 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 , nexttoken.valu
243f0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e);..
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
24410 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 urn;..
24420 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
24430 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
24440 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
24450 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29 }.. })
24460 2e 6c 61 62 65 6c 6c 65 64 20 3d 20 74 72 75 65 .labelled = true
24470 3b 0d 0a 0d 0a 20 20 20 20 73 74 6d 74 28 22 64 ;.... stmt("d
24480 65 62 75 67 67 65 72 22 2c 20 66 75 6e 63 74 69 ebugger", functi
24490 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 on () {..
244a0 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 64 65 62 if (!option.deb
244b0 75 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ug) {..
244c0 20 20 20 77 61 72 6e 69 6e 67 28 22 41 6c 6c 20 warning("All
244d0 27 64 65 62 75 67 67 65 72 27 20 73 74 61 74 65 'debugger' state
244e0 6d 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 ments should be
244f0 72 65 6d 6f 76 65 64 2e 22 29 3b 0d 0a 20 20 20 removed.");..
24500 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
24510 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 return this;..
24520 20 20 7d 29 2e 65 78 70 73 20 3d 20 74 72 75 65 }).exps = true
24530 3b 0d 0a 0d 0a 20 20 20 20 28 66 75 6e 63 74 69 ;.... (functi
24540 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 on () {..
24550 20 76 61 72 20 78 20 3d 20 73 74 6d 74 28 22 64 var x = stmt("d
24560 6f 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 o", function ()
24570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 {.. f
24580 75 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29 unct["(breakage)
24590 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 "] += 1;..
245a0 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c 6f funct["(lo
245b0 6f 70 61 67 65 29 22 5d 20 2b 3d 20 31 3b 0d 0a opage)"] += 1;..
245c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
245d0 2e 66 69 72 73 74 20 3d 20 62 6c 6f 63 6b 28 74 .first = block(t
245e0 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 rue);..
245f0 20 20 20 61 64 76 61 6e 63 65 28 22 77 68 69 6c advance("whil
24600 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 e");..
24610 20 20 76 61 72 20 74 20 3d 20 6e 65 78 74 74 6f var t = nextto
24620 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ken;..
24630 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f nonadjacent(to
24640 6b 65 6e 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 ken, t);..
24650 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 28 advance("(
24660 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ");..
24670 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20 20 nospace();..
24680 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 express
24690 69 6f 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 ion(20);..
246a0 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f if (nextto
246b0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 3d 22 29 20 ken.id === "=")
246c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
246d0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 62 if (!option.b
246e0 6f 73 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 oss)..
246f0 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
24700 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63 6f g("Expected a co
24710 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65 73 nditional expres
24720 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61 64 sion and instead
24730 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d 65 saw an assignme
24740 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 nt.");..
24750 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 advance(
24760 22 3d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 "=");..
24770 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f expressio
24780 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 n(20);..
24790 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
247a0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20 advance(")",
247b0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t);..
247c0 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b nospace(prevtok
247d0 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 en, token);..
247e0 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 funct["
247f0 28 62 72 65 61 6b 61 67 65 29 22 5d 20 2d 3d 20 (breakage)"] -=
24800 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 1;..
24810 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65 29 funct["(loopage)
24820 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20 "] -= 1;..
24830 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
24840 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d s;.. });.
24850 0a 20 20 20 20 20 20 20 20 78 2e 6c 61 62 65 6c . x.label
24860 6c 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 led = true;..
24870 20 20 20 20 20 78 2e 65 78 70 73 20 3d 20 74 72 x.exps = tr
24880 75 65 3b 0d 0a 20 20 20 20 7d 28 29 29 3b 0d 0a ue;.. }());..
24890 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 6d 74 28 .. blockstmt(
248a0 22 66 6f 72 22 2c 20 66 75 6e 63 74 69 6f 6e 20 "for", function
248b0 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 () {.. va
248c0 72 20 73 2c 20 74 20 3d 20 6e 65 78 74 74 6f 6b r s, t = nexttok
248d0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 66 75 6e en;.. fun
248e0 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29 22 5d ct["(breakage)"]
248f0 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 += 1;..
24900 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65 29 funct["(loopage)
24910 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 "] += 1;..
24920 20 20 61 64 76 61 6e 63 65 28 22 28 22 29 3b 0d advance("(");.
24930 0a 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 . nonadja
24940 63 65 6e 74 28 74 68 69 73 2c 20 74 29 3b 0d 0a cent(this, t);..
24950 20 20 20 20 20 20 20 20 6e 6f 73 70 61 63 65 28 nospace(
24960 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
24970 70 65 65 6b 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 peek(nexttoken.i
24980 64 20 3d 3d 3d 20 22 76 61 72 22 20 3f 20 31 20 d === "var" ? 1
24990 3a 20 30 29 2e 69 64 20 3d 3d 3d 20 22 69 6e 22 : 0).id === "in"
249a0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
249b0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 if (nexttoken.i
249c0 64 20 3d 3d 3d 20 22 76 61 72 22 29 20 7b 0d 0a d === "var") {..
249d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
249e0 61 64 76 61 6e 63 65 28 22 76 61 72 22 29 3b 0d advance("var");.
249f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
24a00 20 76 61 72 73 74 61 74 65 6d 65 6e 74 2e 66 75 varstatement.fu
24a10 64 2e 63 61 6c 6c 28 76 61 72 73 74 61 74 65 6d d.call(varstatem
24a20 65 6e 74 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 ent, true);..
24a30 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
24a40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
24a50 20 20 20 73 77 69 74 63 68 20 28 66 75 6e 63 74 switch (funct
24a60 5b 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 [nexttoken.value
24a70 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]) {..
24a80 20 20 20 20 20 20 63 61 73 65 20 22 75 6e 75 73 case "unus
24a90 65 64 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 ed":..
24aa0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b funct[
24ab0 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 5d nexttoken.value]
24ac0 20 3d 20 22 76 61 72 22 3b 0d 0a 20 20 20 20 20 = "var";..
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
24ae0 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 reak;..
24af0 20 20 20 20 20 20 20 63 61 73 65 20 22 76 61 72 case "var
24b00 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
24b10 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
24b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24b30 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 default:..
24b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
24b50 72 6e 69 6e 67 28 22 42 61 64 20 66 6f 72 20 69 rning("Bad for i
24b60 6e 20 76 61 72 69 61 62 6c 65 20 27 7b 61 7d 27 n variable '{a}'
24b70 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24b90 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74 nexttoken, next
24ba0 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 token.value);..
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
24bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
24bd0 20 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 advance();..
24be0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
24bf0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
24c00 28 22 69 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 ("in");..
24c10 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28 expression(
24c20 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20);..
24c30 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20 74 advance(")", t
24c40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
24c50 73 20 3d 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 s = block(true,
24c60 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 true);..
24c70 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 66 if (option.f
24c80 6f 72 69 6e 20 26 26 20 73 20 26 26 20 28 73 2e orin && s && (s.
24c90 6c 65 6e 67 74 68 20 3e 20 31 20 7c 7c 20 74 79 length > 1 || ty
24ca0 70 65 6f 66 20 73 5b 30 5d 20 21 3d 3d 20 22 6f peof s[0] !== "o
24cb0 62 6a 65 63 74 22 20 7c 7c 0d 0a 20 20 20 20 20 bject" ||..
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
24cd0 5b 30 5d 2e 76 61 6c 75 65 20 21 3d 3d 20 22 69 [0].value !== "i
24ce0 66 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 f")) {..
24cf0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 warning(
24d00 22 54 68 65 20 62 6f 64 79 20 6f 66 20 61 20 66 "The body of a f
24d10 6f 72 20 69 6e 20 73 68 6f 75 6c 64 20 62 65 20 or in should be
24d20 77 72 61 70 70 65 64 20 69 6e 20 61 6e 20 69 66 wrapped in an if
24d30 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 66 69 statement to fi
24d40 6c 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 lter " +..
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24d60 20 20 22 75 6e 77 61 6e 74 65 64 20 70 72 6f 70 "unwanted prop
24d70 65 72 74 69 65 73 20 66 72 6f 6d 20 74 68 65 20 erties from the
24d80 70 72 6f 74 6f 74 79 70 65 2e 22 2c 20 74 68 69 prototype.", thi
24d90 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 s);..
24da0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
24db0 66 75 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65 funct["(breakage
24dc0 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 )"] -= 1;..
24dd0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c funct["(l
24de0 6f 6f 70 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d oopage)"] -= 1;.
24df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
24e00 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 urn this;..
24e10 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 } else {..
24e20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 if (nex
24e30 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 3b ttoken.id !== ";
24e40 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
24e50 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f if (nextto
24e60 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 76 61 72 22 ken.id === "var"
24e70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
24e80 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
24e90 28 22 76 61 72 22 29 3b 0d 0a 20 20 20 20 20 20 ("var");..
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
24eb0 72 73 74 61 74 65 6d 65 6e 74 2e 66 75 64 2e 63 rstatement.fud.c
24ec0 61 6c 6c 28 76 61 72 73 74 61 74 65 6d 65 6e 74 all(varstatement
24ed0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
24ee0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 } else {..
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24f00 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20 for (;;) {..
24f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24f20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e expression
24f30 28 30 2c 20 22 66 6f 72 22 29 3b 0d 0a 20 20 20 (0, "for");..
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24f50 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b if (nexttok
24f60 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22 29 20 7b en.id !== ",") {
24f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
24f90 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 eak;..
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
24fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
24fc0 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29 comma()
24fd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
24fe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
24ff0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
25000 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
25010 20 20 20 20 20 20 20 20 6e 6f 6c 69 6e 65 62 72 nolinebr
25020 65 61 6b 28 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 eak(token);..
25030 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
25040 28 22 3b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 (";");..
25050 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 if (nexttoke
25060 6e 2e 69 64 20 21 3d 3d 20 22 3b 22 29 20 7b 0d n.id !== ";") {.
25070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
25080 20 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b expression(20);
25090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
250a0 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e if (nexttoken.
250b0 69 64 20 3d 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20 id === "=") {..
250c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
250d0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 62 if (!option.b
250e0 6f 73 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 oss)..
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
25100 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 rning("Expected
25110 61 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 65 78 a conditional ex
25120 70 72 65 73 73 69 6f 6e 20 61 6e 64 20 69 6e 73 pression and ins
25130 74 65 61 64 20 73 61 77 20 61 6e 20 61 73 73 69 tead saw an assi
25140 67 6e 6d 65 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 gnment.");..
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25160 61 64 76 61 6e 63 65 28 22 3d 22 29 3b 0d 0a 20 advance("=");..
25170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25180 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28 32 30 expression(20
25190 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
251a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
251b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
251c0 20 20 6e 6f 6c 69 6e 65 62 72 65 61 6b 28 74 6f nolinebreak(to
251d0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
251e0 20 20 20 61 64 76 61 6e 63 65 28 22 3b 22 29 3b advance(";");
251f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
25200 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d (nexttoken.id =
25210 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 == ";") {..
25220 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
25230 28 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27 ("Expected '{a}'
25240 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 and instead saw
25250 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 '{b}'.",..
25260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25270 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 22 29 nexttoken, ")
25280 22 2c 20 22 3b 22 29 3b 0d 0a 20 20 20 20 20 20 ", ";");..
25290 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
252a0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b if (nexttok
252b0 65 6e 2e 69 64 20 21 3d 3d 20 22 29 22 29 20 7b en.id !== ")") {
252c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
252d0 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20 for (;;) {..
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
252f0 20 20 65 78 70 72 65 73 73 69 6f 6e 28 30 2c 20 expression(0,
25300 22 66 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 "for");..
25310 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
25320 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d (nexttoken.id !=
25330 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 = ",") {..
25340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25350 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 break;..
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
25370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
25380 20 20 20 20 20 63 6f 6d 6d 61 28 29 3b 0d 0a 20 comma();..
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
253a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
253b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 . adv
253c0 61 6e 63 65 28 22 29 22 2c 20 74 29 3b 0d 0a 20 ance(")", t);..
253d0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 73 70 61 nospa
253e0 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f ce(prevtoken, to
253f0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
25400 20 20 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74 block(true, t
25410 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 rue);..
25420 20 20 20 66 75 6e 63 74 5b 22 28 62 72 65 61 6b funct["(break
25430 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 age)"] -= 1;..
25440 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b funct[
25450 22 28 6c 6f 6f 70 61 67 65 29 22 5d 20 2d 3d 20 "(loopage)"] -=
25460 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 1;..
25470 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 return this;..
25480 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29 2e }.. }).
25490 6c 61 62 65 6c 6c 65 64 20 3d 20 74 72 75 65 3b labelled = true;
254a0 0d 0a 0d 0a 0d 0a 20 20 20 20 73 74 6d 74 28 22 ...... stmt("
254b0 62 72 65 61 6b 22 2c 20 66 75 6e 63 74 69 6f 6e break", function
254c0 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 () {.. v
254d0 61 72 20 76 20 3d 20 6e 65 78 74 74 6f 6b 65 6e ar v = nexttoken
254e0 2e 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 .value;....
254f0 20 20 20 69 66 20 28 66 75 6e 63 74 5b 22 28 62 if (funct["(b
25500 72 65 61 6b 61 67 65 29 22 5d 20 3d 3d 3d 20 30 reakage)"] === 0
25510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 ).. w
25520 61 72 6e 69 6e 67 28 22 28 35 29 55 6e 65 78 70 arning("(5)Unexp
25530 65 63 74 65 64 20 27 7b 61 7d 27 2e 22 2c 20 6e ected '{a}'.", n
25540 65 78 74 74 6f 6b 65 6e 2c 20 74 68 69 73 2e 76 exttoken, this.v
25550 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 alue);....
25560 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 61 73 if (!option.as
25570 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 i)..
25580 6e 6f 6c 69 6e 65 62 72 65 61 6b 28 74 68 69 73 nolinebreak(this
25590 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 );.... if
255a0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 (nexttoken.id !
255b0 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 == ";") {..
255c0 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e if (token
255d0 2e 6c 69 6e 65 20 3d 3d 3d 20 6e 65 78 74 74 6f .line === nextto
255e0 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 ken.line) {..
255f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
25600 28 66 75 6e 63 74 5b 76 5d 20 21 3d 3d 20 22 6c (funct[v] !== "l
25610 61 62 65 6c 22 29 20 7b 0d 0a 20 20 20 20 20 20 abel") {..
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
25630 72 6e 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 rning("'{a}' is
25640 6e 6f 74 20 61 20 73 74 61 74 65 6d 65 6e 74 20 not a statement
25650 6c 61 62 65 6c 2e 22 2c 20 6e 65 78 74 74 6f 6b label.", nexttok
25660 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20 en, v);..
25670 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
25680 69 66 20 28 73 63 6f 70 65 5b 76 5d 20 21 3d 3d if (scope[v] !==
25690 20 66 75 6e 63 74 29 20 7b 0d 0a 20 20 20 20 20 funct) {..
256a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
256b0 61 72 6e 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 arning("'{a}' is
256c0 20 6f 75 74 20 6f 66 20 73 63 6f 70 65 2e 22 2c out of scope.",
256d0 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 76 29 3b 0d nexttoken, v);.
256e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
256f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
25700 20 20 20 20 74 68 69 73 2e 66 69 72 73 74 20 3d this.first =
25710 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 nexttoken;..
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 adv
25730 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 ance();..
25740 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
25750 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 61 63 68 }.. reach
25760 61 62 6c 65 28 22 62 72 65 61 6b 22 29 3b 0d 0a able("break");..
25770 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
25780 68 69 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70 his;.. }).exp
25790 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20 s = true;......
257a0 20 20 20 73 74 6d 74 28 22 63 6f 6e 74 69 6e 75 stmt("continu
257b0 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e", function ()
257c0 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 {.. var v
257d0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c = nexttoken.val
257e0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 ue;.... i
257f0 66 20 28 66 75 6e 63 74 5b 22 28 62 72 65 61 6b f (funct["(break
25800 61 67 65 29 22 5d 20 3d 3d 3d 20 30 29 0d 0a 20 age)"] === 0)..
25810 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
25820 6e 67 28 22 28 36 29 55 6e 65 78 70 65 63 74 65 ng("(6)Unexpecte
25830 64 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 d '{a}'.", nextt
25840 6f 6b 65 6e 2c 20 74 68 69 73 2e 76 61 6c 75 65 oken, this.value
25850 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 );.... if
25860 20 28 21 6f 70 74 69 6f 6e 2e 61 73 69 29 0d 0a (!option.asi)..
25870 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6c 69 noli
25880 6e 65 62 72 65 61 6b 28 74 68 69 73 29 3b 0d 0a nebreak(this);..
25890 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 .. if (ne
258a0 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 xttoken.id !== "
258b0 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ;") {..
258c0 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 6c 69 6e if (token.lin
258d0 65 20 3d 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e e === nexttoken.
258e0 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 line) {..
258f0 20 20 20 20 20 20 20 20 20 69 66 20 28 66 75 6e if (fun
25900 63 74 5b 76 5d 20 21 3d 3d 20 22 6c 61 62 65 6c ct[v] !== "label
25910 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ") {..
25920 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
25930 67 28 22 27 7b 61 7d 27 20 69 73 20 6e 6f 74 20 g("'{a}' is not
25940 61 20 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65 a statement labe
25950 6c 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 l.", nexttoken,
25960 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 v);..
25970 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
25980 73 63 6f 70 65 5b 76 5d 20 21 3d 3d 20 66 75 6e scope[v] !== fun
25990 63 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ct) {..
259a0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
259b0 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 6f 75 74 ng("'{a}' is out
259c0 20 6f 66 20 73 63 6f 70 65 2e 22 2c 20 6e 65 78 of scope.", nex
259d0 74 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 ttoken, v);..
259e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a }..
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25a00 74 68 69 73 2e 66 69 72 73 74 20 3d 20 6e 65 78 this.first = nex
25a10 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 ttoken;..
25a20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
25a30 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ();..
25a40 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c }.. } el
25a50 73 65 20 69 66 20 28 21 66 75 6e 63 74 5b 22 28 se if (!funct["(
25a60 6c 6f 6f 70 61 67 65 29 22 5d 29 20 7b 0d 0a 20 loopage)"]) {..
25a70 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
25a80 6e 67 28 22 28 37 29 55 6e 65 78 70 65 63 74 65 ng("(7)Unexpecte
25a90 64 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 d '{a}'.", nextt
25aa0 6f 6b 65 6e 2c 20 74 68 69 73 2e 76 61 6c 75 65 oken, this.value
25ab0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 );.. }..
25ac0 20 20 20 20 20 20 20 72 65 61 63 68 61 62 6c 65 reachable
25ad0 28 22 63 6f 6e 74 69 6e 75 65 22 29 3b 0d 0a 20 ("continue");..
25ae0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
25af0 69 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70 73 is;.. }).exps
25b00 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20 20 = true;......
25b10 20 20 73 74 6d 74 28 22 72 65 74 75 72 6e 22 2c stmt("return",
25b20 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a function () {..
25b30 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
25b40 2e 6c 69 6e 65 20 3d 3d 3d 20 6e 65 78 74 74 6f .line === nextto
25b50 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 ken.line) {..
25b60 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 if (nex
25b70 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 ttoken.id === "(
25b80 72 65 67 65 78 70 29 22 29 0d 0a 20 20 20 20 20 regexp)")..
25b90 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 warni
25ba0 6e 67 28 22 57 72 61 70 20 74 68 65 20 2f 72 65 ng("Wrap the /re
25bb0 67 65 78 70 2f 20 6c 69 74 65 72 61 6c 20 69 6e gexp/ literal in
25bc0 20 70 61 72 65 6e 73 20 74 6f 20 64 69 73 61 6d parens to disam
25bd0 62 69 67 75 61 74 65 20 74 68 65 20 73 6c 61 73 biguate the slas
25be0 68 20 6f 70 65 72 61 74 6f 72 2e 22 29 3b 0d 0a h operator.");..
25bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
25c00 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 (nexttoken.id !
25c10 3d 3d 20 22 3b 22 20 26 26 20 21 6e 65 78 74 74 == ";" && !nextt
25c20 6f 6b 65 6e 2e 72 65 61 63 68 29 20 7b 0d 0a 20 oken.reach) {..
25c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e n
25c40 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e onadjacent(token
25c50 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 , nexttoken);..
25c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
25c70 66 20 28 70 65 65 6b 28 29 2e 76 61 6c 75 65 20 f (peek().value
25c80 3d 3d 3d 20 22 3d 22 20 26 26 20 21 6f 70 74 69 === "=" && !opti
25c90 6f 6e 2e 62 6f 73 73 29 20 7b 0d 0a 20 20 20 20 on.boss) {..
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25cb0 77 61 72 6e 69 6e 67 41 74 28 22 44 69 64 20 79 warningAt("Did y
25cc0 6f 75 20 6d 65 61 6e 20 74 6f 20 72 65 74 75 72 ou mean to retur
25cd0 6e 20 61 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 n a conditional
25ce0 69 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 61 73 instead of an as
25cf0 73 69 67 6e 6d 65 6e 74 3f 22 2c 0d 0a 20 20 20 signment?",..
25d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25d10 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token
25d20 2e 6c 69 6e 65 2c 20 74 6f 6b 65 6e 2e 63 68 61 .line, token.cha
25d30 72 61 63 74 65 72 20 2b 20 31 29 3b 0d 0a 20 20 racter + 1);..
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d }.
25d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
25d60 20 74 68 69 73 2e 66 69 72 73 74 20 3d 20 65 78 this.first = ex
25d70 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20 20 pression(0);..
25d80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
25d90 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
25da0 21 6f 70 74 69 6f 6e 2e 61 73 69 29 20 7b 0d 0a !option.asi) {..
25db0 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6c 69 noli
25dc0 6e 65 62 72 65 61 6b 28 74 68 69 73 29 3b 20 2f nebreak(this); /
25dd0 2f 20 61 6c 77 61 79 73 20 77 61 72 6e 20 28 4c / always warn (L
25de0 69 6e 65 20 62 72 65 61 6b 69 6e 67 20 65 72 72 ine breaking err
25df0 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a or).. }..
25e00 20 20 20 20 20 20 20 20 72 65 61 63 68 61 62 6c reachabl
25e10 65 28 22 72 65 74 75 72 6e 22 29 3b 0d 0a 20 20 e("return");..
25e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
25e30 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70 73 20 s;.. }).exps
25e40 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20 20 20 = true;......
25e50 20 73 74 6d 74 28 22 74 68 72 6f 77 22 2c 20 66 stmt("throw", f
25e60 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 unction () {..
25e70 20 20 20 20 20 20 6e 6f 6c 69 6e 65 62 72 65 61 nolinebrea
25e80 6b 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 k(this);..
25e90 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f nonadjacent(to
25ea0 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b ken, nexttoken);
25eb0 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
25ec0 69 72 73 74 20 3d 20 65 78 70 72 65 73 73 69 6f irst = expressio
25ed0 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 n(20);..
25ee0 72 65 61 63 68 61 62 6c 65 28 22 74 68 72 6f 77 reachable("throw
25ef0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 ");.. ret
25f00 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d urn this;.. }
25f10 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a ).exps = true;..
25f20 0d 0a 2f 2f 20 20 53 75 70 65 72 66 6c 75 6f 75 ..// Superfluou
25f30 73 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73 s reserved words
25f40 0d 0a 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 .... reserve(
25f50 22 63 6c 61 73 73 22 29 3b 0d 0a 20 20 20 20 72 "class");.. r
25f60 65 73 65 72 76 65 28 22 63 6f 6e 73 74 22 29 3b eserve("const");
25f70 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 65 .. reserve("e
25f80 6e 75 6d 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 num");.. rese
25f90 72 76 65 28 22 65 78 70 6f 72 74 22 29 3b 0d 0a rve("export");..
25fa0 20 20 20 20 72 65 73 65 72 76 65 28 22 65 78 74 reserve("ext
25fb0 65 6e 64 73 22 29 3b 0d 0a 20 20 20 20 72 65 73 ends");.. res
25fc0 65 72 76 65 28 22 69 6d 70 6f 72 74 22 29 3b 0d erve("import");.
25fd0 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 73 75 . reserve("su
25fe0 70 65 72 22 29 3b 0d 0a 0d 0a 20 20 20 20 72 65 per");.... re
25ff0 73 65 72 76 65 28 22 6c 65 74 22 29 3b 0d 0a 20 serve("let");..
26000 20 20 20 72 65 73 65 72 76 65 28 22 79 69 65 6c reserve("yiel
26010 64 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 d");.. reserv
26020 65 28 22 69 6d 70 6c 65 6d 65 6e 74 73 22 29 3b e("implements");
26030 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 69 .. reserve("i
26040 6e 74 65 72 66 61 63 65 22 29 3b 0d 0a 20 20 20 nterface");..
26050 20 72 65 73 65 72 76 65 28 22 70 61 63 6b 61 67 reserve("packag
26060 65 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 e");.. reserv
26070 65 28 22 70 72 69 76 61 74 65 22 29 3b 0d 0a 20 e("private");..
26080 20 20 20 72 65 73 65 72 76 65 28 22 70 72 6f 74 reserve("prot
26090 65 63 74 65 64 22 29 3b 0d 0a 20 20 20 20 72 65 ected");.. re
260a0 73 65 72 76 65 28 22 70 75 62 6c 69 63 22 29 3b serve("public");
260b0 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 73 .. reserve("s
260c0 74 61 74 69 63 22 29 3b 0d 0a 0d 0a 0d 0a 2f 2f tatic");......//
260d0 20 50 61 72 73 65 20 4a 53 4f 4e 0d 0a 0d 0a 20 Parse JSON....
260e0 20 20 20 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e function json
260f0 56 61 6c 75 65 28 29 20 7b 0d 0a 0d 0a 20 20 20 Value() {....
26100 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6a 73 function js
26110 6f 6e 4f 62 6a 65 63 74 28 29 20 7b 0d 0a 20 20 onObject() {..
26120 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6f 20 var o
26130 3d 20 7b 7d 2c 20 74 20 3d 20 6e 65 78 74 74 6f = {}, t = nextto
26140 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ken;..
26150 20 20 61 64 76 61 6e 63 65 28 22 7b 22 29 3b 0d advance("{");.
26160 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
26170 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d (nexttoken.id !=
26180 3d 20 22 7d 22 29 20 7b 0d 0a 20 20 20 20 20 20 = "}") {..
26190 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b for (;
261a0 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ;) {..
261b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 if (ne
261c0 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 xttoken.id === "
261d0 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20 (end)") {..
261e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
261f0 20 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e error("Missin
26200 67 20 27 7d 27 20 74 6f 20 6d 61 74 63 68 20 27 g '}' to match '
26210 7b 27 20 66 72 6f 6d 20 6c 69 6e 65 20 7b 61 7d {' from line {a}
26220 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .",..
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26240 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 nexttoken,
26250 74 2e 6c 69 6e 65 29 3b 0d 0a 20 20 20 20 20 20 t.line);..
26260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
26270 65 6c 73 65 20 69 66 20 28 6e 65 78 74 74 6f 6b else if (nexttok
26280 65 6e 2e 69 64 20 3d 3d 3d 20 22 7d 22 29 20 7b en.id === "}") {
26290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
262a0 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e warnin
262b0 67 28 22 55 6e 65 78 70 65 63 74 65 64 20 63 6f g("Unexpected co
262c0 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a mma.", token);..
262d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
262e0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
262f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26300 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e } else if (n
26310 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 exttoken.id ===
26320 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ",") {..
26330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26340 65 72 72 6f 72 28 22 55 6e 65 78 70 65 63 74 65 error("Unexpecte
26350 64 20 63 6f 6d 6d 61 2e 22 2c 20 6e 65 78 74 74 d comma.", nextt
26360 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 oken);..
26370 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
26380 73 65 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e se if (nexttoken
26390 2e 69 64 20 21 3d 3d 20 22 28 73 74 72 69 6e 67 .id !== "(string
263a0 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 )") {..
263b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
263c0 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 arning("Expected
263d0 20 61 20 73 74 72 69 6e 67 20 61 6e 64 20 69 6e a string and in
263e0 73 74 65 61 64 20 73 61 77 20 7b 61 7d 2e 22 2c stead saw {a}.",
263f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
26400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26410 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 nexttoken, nex
26420 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a ttoken.value);..
26430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26440 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
26450 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o
26460 5b 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 [nexttoken.value
26470 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20 ] === true) {..
26480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26490 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 warning("
264a0 44 75 70 6c 69 63 61 74 65 20 6b 65 79 20 27 7b Duplicate key '{
264b0 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 a}'.",..
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
264d0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
264e0 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c n, nexttoken.val
264f0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ue);..
26500 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
26510 20 69 66 20 28 28 6e 65 78 74 74 6f 6b 65 6e 2e if ((nexttoken.
26520 76 61 6c 75 65 20 3d 3d 3d 20 22 5f 5f 70 72 6f value === "__pro
26530 74 6f 5f 5f 22 20 26 26 0d 0a 20 20 20 20 20 20 to__" &&..
26540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26550 20 20 21 6f 70 74 69 6f 6e 2e 70 72 6f 74 6f 29 !option.proto)
26560 20 7c 7c 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76 || (nexttoken.v
26570 61 6c 75 65 20 3d 3d 3d 20 22 5f 5f 69 74 65 72 alue === "__iter
26580 61 74 6f 72 5f 5f 22 20 26 26 0d 0a 20 20 20 20 ator__" &&..
26590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
265a0 20 20 20 20 21 6f 70 74 69 6f 6e 2e 69 74 65 72 !option.iter
265b0 61 74 6f 72 29 29 20 7b 0d 0a 20 20 20 20 20 20 ator)) {..
265c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
265d0 20 20 77 61 72 6e 69 6e 67 28 22 54 68 65 20 27 warning("The '
265e0 7b 61 7d 27 20 6b 65 79 20 6d 61 79 20 70 72 6f {a}' key may pro
265f0 64 75 63 65 20 75 6e 65 78 70 65 63 74 65 64 20 duce unexpected
26600 72 65 73 75 6c 74 73 2e 22 2c 0d 0a 20 20 20 20 results.",..
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26620 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
26630 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c n, nexttoken.val
26640 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ue);..
26650 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
26660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
26670 20 20 20 20 20 20 20 20 20 20 20 20 6f 5b 6e 65 o[ne
26680 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 5d 20 3d xttoken.value] =
26690 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
266a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
266b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
266c0 20 20 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 advance();..
266d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
266e0 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b advance(":");
266f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
26700 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75 65 28 jsonValue(
26710 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
26720 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 if (next
26730 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22 token.id !== ","
26740 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
26750 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
26760 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ak;..
26770 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
26780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26790 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20 advance(",");..
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
267b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
267c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 . adv
267d0 61 6e 63 65 28 22 7d 22 29 3b 0d 0a 20 20 20 20 ance("}");..
267e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
267f0 20 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 41 72 function jsonAr
26800 72 61 79 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 ray() {..
26810 20 20 20 20 20 76 61 72 20 74 20 3d 20 6e 65 78 var t = nex
26820 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 ttoken;..
26830 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 5b 22 advance("["
26840 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
26850 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 if (nexttoken.id
26860 20 21 3d 3d 20 22 5d 22 29 20 7b 0d 0a 20 20 20 !== "]") {..
26870 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 for
26880 20 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 (;;) {..
26890 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
268a0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d (nexttoken.id ==
268b0 3d 20 22 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 = "(end)") {..
268c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
268d0 20 20 20 20 20 20 65 72 72 6f 72 28 22 4d 69 73 error("Mis
268e0 73 69 6e 67 20 27 5d 27 20 74 6f 20 6d 61 74 63 sing ']' to matc
268f0 68 20 27 5b 27 20 66 72 6f 6d 20 6c 69 6e 65 20 h '[' from line
26900 7b 61 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 {a}.",..
26910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26920 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 nexttoke
26930 6e 2c 20 74 2e 6c 69 6e 65 29 3b 0d 0a 20 20 20 n, t.line);..
26940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26950 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74 } else if (next
26960 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 5d 22 token.id === "]"
26970 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
26980 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
26990 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 64 ning("Unexpected
269a0 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e 29 comma.", token)
269b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
269c0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
269d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
269e0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
269f0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d (nexttoken.id =
26a00 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 == ",") {..
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26a20 20 20 20 65 72 72 6f 72 28 22 55 6e 65 78 70 65 error("Unexpe
26a30 63 74 65 64 20 63 6f 6d 6d 61 2e 22 2c 20 6e 65 cted comma.", ne
26a40 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 xttoken);..
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
26a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
26a70 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75 65 28 jsonValue(
26a80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
26a90 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 if (next
26aa0 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22 token.id !== ","
26ab0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
26ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
26ad0 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ak;..
26ae0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26b00 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20 advance(",");..
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
26b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
26b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 . adv
26b40 61 6e 63 65 28 22 5d 22 29 3b 0d 0a 20 20 20 20 ance("]");..
26b50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
26b60 20 73 77 69 74 63 68 20 28 6e 65 78 74 74 6f 6b switch (nexttok
26b70 65 6e 2e 69 64 29 20 7b 0d 0a 20 20 20 20 20 20 en.id) {..
26b80 20 20 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20 20 case "{":..
26b90 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 4f 62 6a jsonObj
26ba0 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 ect();..
26bb0 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 break;..
26bc0 20 20 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20 case "[":..
26bd0 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 41 jsonA
26be0 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 rray();..
26bf0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
26c00 20 20 20 20 20 63 61 73 65 20 22 74 72 75 65 22 case "true"
26c10 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 :.. case
26c20 22 66 61 6c 73 65 22 3a 0d 0a 20 20 20 20 20 20 "false":..
26c30 20 20 63 61 73 65 20 22 6e 75 6c 6c 22 3a 0d 0a case "null":..
26c40 20 20 20 20 20 20 20 20 63 61 73 65 20 22 28 6e case "(n
26c50 75 6d 62 65 72 29 22 3a 0d 0a 20 20 20 20 20 20 umber)":..
26c60 20 20 63 61 73 65 20 22 28 73 74 72 69 6e 67 29 case "(string)
26c70 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ":..
26c80 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 advance();..
26c90 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
26ca0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2d 22 case "-"
26cb0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 :.. a
26cc0 64 76 61 6e 63 65 28 22 2d 22 29 3b 0d 0a 20 20 dvance("-");..
26cd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f if (to
26ce0 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20 21 3d ken.character !=
26cf0 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d = nexttoken.from
26d00 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
26d10 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e warning("Un
26d20 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20 61 expected space a
26d30 66 74 65 72 20 27 2d 27 2e 22 2c 20 74 6f 6b 65 fter '-'.", toke
26d40 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 n);..
26d50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
26d60 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 adjacent(token,
26d70 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 nexttoken);..
26d80 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 advance
26d90 28 22 28 6e 75 6d 62 65 72 29 22 29 3b 0d 0a 20 ("(number)");..
26da0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
26db0 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 ;.. defau
26dc0 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 lt:..
26dd0 20 65 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 error("Expected
26de0 20 61 20 4a 53 4f 4e 20 76 61 6c 75 65 2e 22 2c a JSON value.",
26df0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 nexttoken);..
26e00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a }.. }..
26e10 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 61 .... // The a
26e20 63 74 75 61 6c 20 4a 53 48 49 4e 54 20 66 75 6e ctual JSHINT fun
26e30 63 74 69 6f 6e 20 69 74 73 65 6c 66 2e 0d 0a 20 ction itself...
26e40 20 20 20 76 61 72 20 69 74 73 65 6c 66 20 3d 20 var itself =
26e50 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 6f 2c 20 function (s, o,
26e60 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 g) {.. va
26e70 72 20 61 2c 20 69 2c 20 6b 2c 20 78 2c 0d 0a 20 r a, i, k, x,..
26e80 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f optio
26e90 6e 4b 65 79 73 2c 0d 0a 20 20 20 20 20 20 20 20 nKeys,..
26ea0 20 20 20 20 6e 65 77 4f 70 74 69 6f 6e 4f 62 6a newOptionObj
26eb0 20 3d 20 7b 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 = {};....
26ec0 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 20 JSHINT.errors
26ed0 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 4a = [];.. J
26ee0 53 48 49 4e 54 2e 75 6e 64 65 66 73 20 3d 20 5b SHINT.undefs = [
26ef0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 4a 53 48 49 ];.. JSHI
26f00 4e 54 2e 62 6c 61 63 6b 6c 69 73 74 20 3d 20 7b NT.blacklist = {
26f10 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 };.... pr
26f20 65 64 65 66 69 6e 65 64 20 3d 20 4f 62 6a 65 63 edefined = Objec
26f30 74 2e 63 72 65 61 74 65 28 73 74 61 6e 64 61 72 t.create(standar
26f40 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 63 d);.. dec
26f50 6c 61 72 65 64 20 3d 20 4f 62 6a 65 63 74 2e 63 lared = Object.c
26f60 72 65 61 74 65 28 6e 75 6c 6c 29 3b 0d 0a 20 20 reate(null);..
26f70 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 70 72 combine(pr
26f80 65 64 65 66 69 6e 65 64 2c 20 67 20 7c 7c 20 7b edefined, g || {
26f90 7d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 });.... i
26fa0 66 20 28 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 f (o) {..
26fb0 20 20 20 20 20 61 20 3d 20 6f 2e 70 72 65 64 65 a = o.prede
26fc0 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 f;..
26fd0 69 66 20 28 61 29 20 7b 0d 0a 20 20 20 20 20 20 if (a) {..
26fe0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 41 if (!A
26ff0 72 72 61 79 2e 69 73 41 72 72 61 79 28 61 29 20 rray.isArray(a)
27000 26 26 20 74 79 70 65 6f 66 20 61 20 3d 3d 3d 20 && typeof a ===
27010 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a 20 20 20 "object") {..
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27030 20 61 20 3d 20 4f 62 6a 65 63 74 2e 6b 65 79 73 a = Object.keys
27040 28 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 (a);..
27050 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
27060 20 20 20 20 20 20 20 20 20 61 2e 66 6f 72 45 61 a.forEa
27070 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 69 74 65 ch(function (ite
27080 6d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 m) {..
27090 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 6c var sl
270a0 69 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ice;..
270b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74 if (it
270c0 65 6d 5b 30 5d 20 3d 3d 3d 20 22 2d 22 29 20 7b em[0] === "-") {
270d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
270e0 20 20 20 20 20 20 20 20 20 20 73 6c 69 63 65 20 slice
270f0 3d 20 69 74 65 6d 2e 73 6c 69 63 65 28 31 29 3b = item.slice(1);
27100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
27110 20 20 20 20 20 20 20 20 20 20 4a 53 48 49 4e 54 JSHINT
27120 2e 62 6c 61 63 6b 6c 69 73 74 5b 73 6c 69 63 65 .blacklist[slice
27130 5d 20 3d 20 73 6c 69 63 65 3b 0d 0a 20 20 20 20 ] = slice;..
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27150 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 } else {..
27160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27170 20 20 70 72 65 64 65 66 69 6e 65 64 5b 69 74 65 predefined[ite
27180 6d 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 m] = true;..
27190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
271a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
271b0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20 20 });..
271c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
271d0 20 20 20 6f 70 74 69 6f 6e 4b 65 79 73 20 3d 20 optionKeys =
271e0 4f 62 6a 65 63 74 2e 6b 65 79 73 28 6f 29 3b 0d Object.keys(o);.
271f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 . for
27200 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 6f 70 74 (x = 0; x < opt
27210 69 6f 6e 4b 65 79 73 2e 6c 65 6e 67 74 68 3b 20 ionKeys.length;
27220 78 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 x++) {..
27230 20 20 20 20 20 20 20 20 6e 65 77 4f 70 74 69 6f newOptio
27240 6e 4f 62 6a 5b 6f 70 74 69 6f 6e 4b 65 79 73 5b nObj[optionKeys[
27250 78 5d 5d 20 3d 20 6f 5b 6f 70 74 69 6f 6e 4b 65 x]] = o[optionKe
27260 79 73 5b 78 5d 5d 3b 0d 0a 0d 0a 20 20 20 20 20 ys[x]];....
27270 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o
27280 70 74 69 6f 6e 4b 65 79 73 5b 78 5d 20 3d 3d 3d ptionKeys[x] ===
27290 20 22 6e 65 77 63 61 70 22 20 26 26 20 6f 5b 6f "newcap" && o[o
272a0 70 74 69 6f 6e 4b 65 79 73 5b 78 5d 5d 20 3d 3d ptionKeys[x]] ==
272b0 3d 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 = false)..
272c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 ne
272d0 77 4f 70 74 69 6f 6e 4f 62 6a 5b 22 28 65 78 70 wOptionObj["(exp
272e0 6c 69 63 69 74 4e 65 77 63 61 70 29 22 5d 20 3d licitNewcap)"] =
272f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
27300 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d }.. }
27310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69 .... opti
27320 6f 6e 20 3d 20 6e 65 77 4f 70 74 69 6f 6e 4f 62 on = newOptionOb
27330 6a 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f 70 j;.... op
27340 74 69 6f 6e 2e 69 6e 64 65 6e 74 20 3d 20 6f 70 tion.indent = op
27350 74 69 6f 6e 2e 69 6e 64 65 6e 74 20 7c 7c 20 34 tion.indent || 4
27360 3b 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69 6f ;.. optio
27370 6e 2e 6d 61 78 65 72 72 20 3d 20 6f 70 74 69 6f n.maxerr = optio
27380 6e 2e 6d 61 78 65 72 72 20 7c 7c 20 35 30 3b 0d n.maxerr || 50;.
27390 0a 0d 0a 20 20 20 20 20 20 20 20 74 61 62 20 3d ... tab =
273a0 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f "";.. fo
273b0 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6f 70 r (i = 0; i < op
273c0 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 20 69 20 2b tion.indent; i +
273d0 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 = 1) {..
273e0 20 20 20 20 74 61 62 20 2b 3d 20 22 20 22 3b 0d tab += " ";.
273f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
27400 20 20 20 20 69 6e 64 65 6e 74 20 3d 20 31 3b 0d indent = 1;.
27410 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 20 . global
27420 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 28 = Object.create(
27430 70 72 65 64 65 66 69 6e 65 64 29 3b 0d 0a 20 20 predefined);..
27440 20 20 20 20 20 20 73 63 6f 70 65 20 3d 20 67 6c scope = gl
27450 6f 62 61 6c 3b 0d 0a 20 20 20 20 20 20 20 20 66 obal;.. f
27460 75 6e 63 74 20 3d 20 7b 0d 0a 20 20 20 20 20 20 unct = {..
27470 20 20 20 20 20 20 22 28 67 6c 6f 62 61 6c 29 22 "(global)"
27480 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 : true,..
27490 20 20 20 20 20 22 28 6e 61 6d 65 29 22 3a 20 22 "(name)": "
274a0 28 67 6c 6f 62 61 6c 29 22 2c 0d 0a 20 20 20 20 (global)",..
274b0 20 20 20 20 20 20 20 20 22 28 73 63 6f 70 65 29 "(scope)
274c0 22 3a 20 73 63 6f 70 65 2c 0d 0a 20 20 20 20 20 ": scope,..
274d0 20 20 20 20 20 20 20 22 28 62 72 65 61 6b 61 67 "(breakag
274e0 65 29 22 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 e)": 0,..
274f0 20 20 20 20 20 22 28 6c 6f 6f 70 61 67 65 29 22 "(loopage)"
27500 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 : 0,..
27510 20 20 22 28 74 6f 6b 65 6e 73 29 22 3a 20 7b 7d "(tokens)": {}
27520 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 .. };..
27530 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 20 functions
27540 3d 20 5b 66 75 6e 63 74 5d 3b 0d 0a 20 20 20 20 = [funct];..
27550 20 20 20 20 75 72 6c 73 20 3d 20 5b 5d 3b 0d 0a urls = [];..
27560 20 20 20 20 20 20 20 20 73 74 61 63 6b 20 3d 20 stack =
27570 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 6d null;.. m
27580 65 6d 62 65 72 20 3d 20 7b 7d 3b 0d 0a 20 20 20 ember = {};..
27590 20 20 20 20 20 6d 65 6d 62 65 72 73 4f 6e 6c 79 membersOnly
275a0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 = null;..
275b0 20 20 69 6d 70 6c 69 65 64 20 3d 20 7b 7d 3b 0d implied = {};.
275c0 0a 20 20 20 20 20 20 20 20 69 6e 62 6c 6f 63 6b . inblock
275d0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 = false;..
275e0 20 20 20 6c 6f 6f 6b 61 68 65 61 64 20 3d 20 5b lookahead = [
275f0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e ];.. json
27600 6d 6f 64 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 mode = false;..
27610 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 20 warnings
27620 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 6c 69 = 0;.. li
27630 6e 65 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 nes = [];..
27640 20 20 20 75 6e 75 73 65 64 73 20 3d 20 5b 5d 3b unuseds = [];
27650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 .... if (
27660 21 69 73 53 74 72 69 6e 67 28 73 29 20 26 26 20 !isString(s) &&
27670 21 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 73 !Array.isArray(s
27680 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 )) {..
27690 20 20 65 72 72 6f 72 41 74 28 22 49 6e 70 75 74 errorAt("Input
276a0 20 69 73 20 6e 65 69 74 68 65 72 20 61 20 73 74 is neither a st
276b0 72 69 6e 67 20 6e 6f 72 20 61 6e 20 61 72 72 61 ring nor an arra
276c0 79 20 6f 66 20 73 74 72 69 6e 67 73 2e 22 2c 20 y of strings.",
276d0 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0);..
276e0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a return false;..
276f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }....
27700 20 20 20 20 20 69 66 20 28 69 73 53 74 72 69 6e if (isStrin
27710 67 28 73 29 20 26 26 20 2f 5e 5c 73 2a 24 2f 67 g(s) && /^\s*$/g
27720 2e 74 65 73 74 28 73 29 29 20 7b 0d 0a 20 20 20 .test(s)) {..
27730 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 41 74 errorAt
27740 28 22 49 6e 70 75 74 20 69 73 20 61 6e 20 65 6d ("Input is an em
27750 70 74 79 20 73 74 72 69 6e 67 2e 22 2c 20 30 29 pty string.", 0)
27760 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ;.. r
27770 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 eturn false;..
27780 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
27790 20 20 20 69 66 20 28 73 2e 6c 65 6e 67 74 68 20 if (s.length
277a0 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 === 0) {..
277b0 20 20 20 20 20 20 65 72 72 6f 72 41 74 28 22 49 errorAt("I
277c0 6e 70 75 74 20 69 73 20 61 6e 20 65 6d 70 74 79 nput is an empty
277d0 20 61 72 72 61 79 2e 22 2c 20 30 29 3b 0d 0a 20 array.", 0);..
277e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
277f0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 n false;..
27800 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c }.... l
27810 65 78 2e 69 6e 69 74 28 73 29 3b 0d 0a 0d 0a 20 ex.init(s);....
27820 20 20 20 20 20 20 20 70 72 65 72 65 67 20 3d 20 prereg =
27830 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 64 true;.. d
27840 69 72 65 63 74 69 76 65 20 3d 20 7b 7d 3b 0d 0a irective = {};..
27850 0d 0a 20 20 20 20 20 20 20 20 70 72 65 76 74 6f .. prevto
27860 6b 65 6e 20 3d 20 74 6f 6b 65 6e 20 3d 20 6e 65 ken = token = ne
27870 78 74 74 6f 6b 65 6e 20 3d 20 73 79 6e 74 61 78 xttoken = syntax
27880 5b 22 28 62 65 67 69 6e 29 22 5d 3b 0d 0a 0d 0a ["(begin)"];....
27890 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b // Check
278a0 20 6f 70 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20 options..
278b0 20 20 66 6f 72 20 28 76 61 72 20 6e 61 6d 65 20 for (var name
278c0 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 in o) {..
278d0 20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 if (is_own(
278e0 6f 2c 20 6e 61 6d 65 29 29 20 7b 0d 0a 20 20 20 o, name)) {..
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 65 che
27900 63 6b 4f 70 74 69 6f 6e 28 6e 61 6d 65 2c 20 74 ckOption(name, t
27910 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 oken);..
27920 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d }.. }
27930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 61 73 73 75 .... assu
27940 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 me();....
27950 20 2f 2f 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 // combine the
27960 70 61 73 73 65 64 20 67 6c 6f 62 61 6c 73 20 61 passed globals a
27970 66 74 65 72 20 77 65 27 76 65 20 61 73 73 75 6d fter we've assum
27980 65 64 20 61 6c 6c 20 6f 75 72 20 6f 70 74 69 6f ed all our optio
27990 6e 73 0d 0a 20 20 20 20 20 20 20 20 63 6f 6d 62 ns.. comb
279a0 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 2c 20 ine(predefined,
279b0 67 20 7c 7c 20 7b 7d 29 3b 0d 0a 0d 0a 20 20 20 g || {});....
279c0 20 20 20 20 20 2f 2f 72 65 73 65 74 20 76 61 6c //reset val
279d0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 63 6f 6d ues.. com
279e0 6d 61 2e 66 69 72 73 74 20 3d 20 74 72 75 65 3b ma.first = true;
279f0 0d 0a 20 20 20 20 20 20 20 20 71 75 6f 74 6d 61 .. quotma
27a00 72 6b 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d rk = undefined;.
27a10 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b ... try {
27a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 .. ad
27a30 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 vance();..
27a40 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 65 switch (ne
27a50 78 74 74 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20 xttoken.id) {..
27a60 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
27a70 22 7b 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 "{":..
27a80 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20 20 20 case "[":..
27a90 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 opt
27aa0 69 6f 6e 2e 6c 61 78 62 72 65 61 6b 20 3d 20 74 ion.laxbreak = t
27ab0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 rue;..
27ac0 20 20 20 20 20 20 6a 73 6f 6e 6d 6f 64 65 20 3d jsonmode =
27ad0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 true;..
27ae0 20 20 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75 jsonValu
27af0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 e();..
27b00 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 break;..
27b10 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul
27b20 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 t:..
27b30 20 20 20 20 64 69 72 65 63 74 69 76 65 73 28 29 directives()
27b40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
27b50 20 20 20 69 66 20 28 64 69 72 65 63 74 69 76 65 if (directive
27b60 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d 20 26 ["use strict"] &
27b70 26 20 21 6f 70 74 69 6f 6e 2e 67 6c 6f 62 61 6c & !option.global
27b80 73 74 72 69 63 74 29 20 7b 0d 0a 20 20 20 20 20 strict) {..
27b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
27ba0 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68 65 20 arning("Use the
27bb0 66 75 6e 63 74 69 6f 6e 20 66 6f 72 6d 20 6f 66 function form of
27bc0 20 5c 22 75 73 65 20 73 74 72 69 63 74 5c 22 2e \"use strict\".
27bd0 22 2c 20 70 72 65 76 74 6f 6b 65 6e 29 3b 0d 0a ", prevtoken);..
27be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27bf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }....
27c00 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 73 28 statements(
27c10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
27c20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 }.. a
27c30 64 76 61 6e 63 65 28 28 6e 65 78 74 74 6f 6b 65 dvance((nexttoke
27c40 6e 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 n && nexttoken.v
27c50 61 6c 75 65 20 21 3d 3d 20 22 2e 22 29 20 20 3f alue !== ".") ?
27c60 20 22 28 65 6e 64 29 22 20 3a 20 75 6e 64 65 66 "(end)" : undef
27c70 69 6e 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 ined);....
27c80 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b 44 65 var markDe
27c90 66 69 6e 65 64 20 3d 20 66 75 6e 63 74 69 6f 6e fined = function
27ca0 20 28 6e 61 6d 65 2c 20 63 6f 6e 74 65 78 74 29 (name, context)
27cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
27cc0 20 20 20 20 64 6f 20 7b 0d 0a 20 20 20 20 20 20 do {..
27cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
27ce0 20 28 74 79 70 65 6f 66 20 63 6f 6e 74 65 78 74 (typeof context
27cf0 5b 6e 61 6d 65 5d 20 3d 3d 3d 20 22 73 74 72 69 [name] === "stri
27d00 6e 67 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ng") {..
27d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27d20 2f 2f 20 4a 53 48 49 4e 54 20 6d 61 72 6b 73 20 // JSHINT marks
27d30 75 6e 75 73 65 64 20 76 61 72 69 61 62 6c 65 73 unused variables
27d40 20 61 73 20 27 75 6e 75 73 65 64 27 20 61 6e 64 as 'unused' and
27d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
27d60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75 6e 75 // unu
27d70 73 65 64 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 sed function dec
27d80 6c 61 72 61 74 69 6f 6e 20 61 73 20 27 75 6e 63 laration as 'unc
27d90 74 69 6f 6e 27 2e 20 54 68 69 73 0d 0a 20 20 20 tion'. This..
27da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27db0 20 20 20 20 20 2f 2f 20 63 6f 64 65 20 63 68 61 // code cha
27dc0 6e 67 65 73 20 73 75 63 68 20 69 6e 73 74 61 6e nges such instan
27dd0 63 65 73 20 62 61 63 6b 20 27 76 61 72 27 20 61 ces back 'var' a
27de0 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 nd..
27df0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 27 // '
27e00 63 6c 6f 73 75 72 65 27 20 73 6f 20 74 68 61 74 closure' so that
27e10 20 74 68 65 20 63 6f 64 65 20 69 6e 20 4a 53 48 the code in JSH
27e20 49 4e 54 2e 64 61 74 61 28 29 0d 0a 20 20 20 20 INT.data()..
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27e40 20 20 20 20 2f 2f 20 64 6f 65 73 6e 27 74 20 74 // doesn't t
27e50 68 69 6e 6b 20 74 68 65 79 27 72 65 20 75 6e 75 hink they're unu
27e60 73 65 64 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 sed.....
27e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27e80 69 66 20 28 63 6f 6e 74 65 78 74 5b 6e 61 6d 65 if (context[name
27e90 5d 20 3d 3d 3d 20 22 75 6e 75 73 65 64 22 29 0d ] === "unused").
27ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
27eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e con
27ec0 74 65 78 74 5b 6e 61 6d 65 5d 20 3d 20 22 76 61 text[name] = "va
27ed0 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 r";..
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 els
27ef0 65 20 69 66 20 28 63 6f 6e 74 65 78 74 5b 6e 61 e if (context[na
27f00 6d 65 5d 20 3d 3d 3d 20 22 75 6e 63 74 69 6f 6e me] === "unction
27f10 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ")..
27f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27f30 63 6f 6e 74 65 78 74 5b 6e 61 6d 65 5d 20 3d 20 context[name] =
27f40 22 63 6c 6f 73 75 72 65 22 3b 0d 0a 0d 0a 20 20 "closure";....
27f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27f60 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru
27f70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e;..
27f80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }....
27f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27fa0 20 63 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 context = conte
27fb0 78 74 5b 22 28 63 6f 6e 74 65 78 74 29 22 5d 3b xt["(context)"];
27fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
27fd0 20 20 7d 20 77 68 69 6c 65 20 28 63 6f 6e 74 65 } while (conte
27fe0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 xt);....
27ff0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 return f
28000 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 alse;..
28010 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 };....
28020 20 20 20 20 20 76 61 72 20 63 6c 65 61 72 49 6d var clearIm
28030 70 6c 69 65 64 20 3d 20 66 75 6e 63 74 69 6f 6e plied = function
28040 20 28 6e 61 6d 65 2c 20 6c 69 6e 65 29 20 7b 0d (name, line) {.
28050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
28060 20 69 66 20 28 21 69 6d 70 6c 69 65 64 5b 6e 61 if (!implied[na
28070 6d 65 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 me])..
28080 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
28090 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
280a0 20 20 20 20 20 76 61 72 20 6e 65 77 49 6d 70 6c var newImpl
280b0 69 65 64 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 ied = [];..
280c0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for (
280d0 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 69 var i = 0; i < i
280e0 6d 70 6c 69 65 64 5b 6e 61 6d 65 5d 2e 6c 65 6e mplied[name].len
280f0 67 74 68 3b 20 69 20 2b 3d 20 31 29 20 7b 0d 0a gth; i += 1) {..
28100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28110 20 20 20 20 69 66 20 28 69 6d 70 6c 69 65 64 5b if (implied[
28120 6e 61 6d 65 5d 5b 69 5d 20 21 3d 3d 20 6c 69 6e name][i] !== lin
28130 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e)..
28140 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 49 newI
28150 6d 70 6c 69 65 64 2e 70 75 73 68 28 69 6d 70 6c mplied.push(impl
28160 69 65 64 5b 6e 61 6d 65 5d 5b 69 5d 29 3b 0d 0a ied[name][i]);..
28170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28180 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }....
28190 20 20 20 20 20 69 66 20 28 6e 65 77 49 6d 70 6c if (newImpl
281a0 69 65 64 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 ied.length === 0
281b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
281c0 20 20 20 20 20 20 20 64 65 6c 65 74 65 20 69 6d delete im
281d0 70 6c 69 65 64 5b 6e 61 6d 65 5d 3b 0d 0a 20 20 plied[name];..
281e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c el
281f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 se..
28200 20 20 20 20 20 20 20 20 69 6d 70 6c 69 65 64 5b implied[
28210 6e 61 6d 65 5d 20 3d 20 6e 65 77 49 6d 70 6c 69 name] = newImpli
28220 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ed;..
28230 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 };....
28240 20 20 20 76 61 72 20 77 61 72 6e 55 6e 75 73 65 var warnUnuse
28250 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e 61 d = function (na
28260 6d 65 2c 20 74 6f 6b 65 6e 29 20 7b 0d 0a 20 20 me, token) {..
28270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
28280 72 20 6c 69 6e 65 20 3d 20 74 6f 6b 65 6e 2e 6c r line = token.l
28290 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ine;..
282a0 20 20 20 20 20 20 76 61 72 20 63 68 72 20 20 3d var chr =
282b0 20 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 token.character
282c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
282d0 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e if (option.
282e0 75 6e 75 73 65 64 29 0d 0a 20 20 20 20 20 20 20 unused)..
282f0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 war
28300 6e 69 6e 67 41 74 28 22 27 7b 61 7d 27 20 69 73 ningAt("'{a}' is
28310 20 64 65 66 69 6e 65 64 20 62 75 74 20 6e 65 76 defined but nev
28320 65 72 20 75 73 65 64 2e 22 2c 20 6c 69 6e 65 2c er used.", line,
28330 20 63 68 72 2c 20 6e 61 6d 65 29 3b 0d 0a 0d 0a chr, name);....
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28350 75 6e 75 73 65 64 73 2e 70 75 73 68 28 7b 0d 0a unuseds.push({..
28360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28370 20 20 20 20 6e 61 6d 65 3a 20 6e 61 6d 65 2c 0d name: name,.
28380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
28390 20 20 20 20 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c line: line,
283a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
283b0 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 3a character:
283c0 20 63 68 72 0d 0a 20 20 20 20 20 20 20 20 20 20 chr..
283d0 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 });..
283e0 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 };....
283f0 20 20 20 20 20 20 20 20 20 76 61 72 20 63 68 65 var che
28400 63 6b 55 6e 75 73 65 64 20 3d 20 66 75 6e 63 74 ckUnused = funct
28410 69 6f 6e 20 28 66 75 6e 63 2c 20 6b 65 79 29 20 ion (func, key)
28420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
28430 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 66 75 var type = fu
28440 6e 63 5b 6b 65 79 5d 3b 0d 0a 20 20 20 20 20 20 nc[key];..
28450 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f var to
28460 6b 65 6e 20 3d 20 66 75 6e 63 5b 22 28 74 6f 6b ken = func["(tok
28470 65 6e 73 29 22 5d 5b 6b 65 79 5d 3b 0d 0a 0d 0a ens)"][key];....
28480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28490 69 66 20 28 6b 65 79 2e 63 68 61 72 41 74 28 30 if (key.charAt(0
284a0 29 20 3d 3d 3d 20 22 28 22 29 0d 0a 20 20 20 20 ) === "(")..
284b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
284c0 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 return;....
284d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
284e0 79 70 65 20 21 3d 3d 20 22 75 6e 75 73 65 64 22 ype !== "unused"
284f0 20 26 26 20 74 79 70 65 20 21 3d 3d 20 22 75 6e && type !== "un
28500 63 74 69 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 ction")..
28510 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
28520 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 urn;....
28530 20 20 20 20 20 20 20 20 2f 2f 20 50 61 72 61 6d // Param
28540 73 20 61 72 65 20 63 68 65 63 6b 65 64 20 73 65 s are checked se
28550 70 61 72 61 74 65 6c 79 20 66 72 6f 6d 20 6f 74 parately from ot
28560 68 65 72 20 76 61 72 69 61 62 6c 65 73 2e 0d 0a her variables...
28570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28580 69 66 20 28 66 75 6e 63 5b 22 28 70 61 72 61 6d if (func["(param
28590 73 29 22 5d 20 26 26 20 66 75 6e 63 5b 22 28 70 s)"] && func["(p
285a0 61 72 61 6d 73 29 22 5d 2e 69 6e 64 65 78 4f 66 arams)"].indexOf
285b0 28 6b 65 79 29 20 21 3d 3d 20 2d 31 29 0d 0a 20 (key) !== -1)..
285c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
285d0 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 return;....
285e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 wa
285f0 72 6e 55 6e 75 73 65 64 28 6b 65 79 2c 20 74 6f rnUnused(key, to
28600 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ken);..
28610 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 };....
28620 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 71 75 // Check qu
28630 65 75 65 64 20 27 78 20 69 73 20 6e 6f 74 20 64 eued 'x is not d
28640 65 66 69 6e 65 64 27 20 69 6e 73 74 61 6e 63 65 efined' instance
28650 73 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 79 s to see if they
28660 27 72 65 20 73 74 69 6c 6c 20 75 6e 64 65 66 69 're still undefi
28670 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 ned...
28680 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 for (i = 0; i
28690 3c 20 4a 53 48 49 4e 54 2e 75 6e 64 65 66 73 2e < JSHINT.undefs.
286a0 6c 65 6e 67 74 68 3b 20 69 20 2b 3d 20 31 29 20 length; i += 1)
286b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
286c0 20 20 20 6b 20 3d 20 4a 53 48 49 4e 54 2e 75 6e k = JSHINT.un
286d0 64 65 66 73 5b 69 5d 2e 73 6c 69 63 65 28 30 29 defs[i].slice(0)
286e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
286f0 20 20 20 20 20 69 66 20 28 6d 61 72 6b 44 65 66 if (markDef
28700 69 6e 65 64 28 6b 5b 32 5d 2e 76 61 6c 75 65 2c ined(k[2].value,
28710 20 6b 5b 30 5d 29 29 20 7b 0d 0a 20 20 20 20 20 k[0])) {..
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
28730 6c 65 61 72 49 6d 70 6c 69 65 64 28 6b 5b 32 5d learImplied(k[2]
28740 2e 76 61 6c 75 65 2c 20 6b 5b 32 5d 2e 6c 69 6e .value, k[2].lin
28750 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e);..
28760 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 } else {..
28770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28780 20 20 20 77 61 72 6e 69 6e 67 2e 61 70 70 6c 79 warning.apply
28790 28 77 61 72 6e 69 6e 67 2c 20 6b 2e 73 6c 69 63 (warning, k.slic
287a0 65 28 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 e(1));..
287b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
287c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 }....
287d0 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e function
287e0 73 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 s.forEach(functi
287f0 6f 6e 20 28 66 75 6e 63 29 20 7b 0d 0a 20 20 20 on (func) {..
28800 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 for
28810 20 28 76 61 72 20 6b 65 79 20 69 6e 20 66 75 6e (var key in fun
28820 63 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 c) {..
28830 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 if (is
28840 5f 6f 77 6e 28 66 75 6e 63 2c 20 6b 65 79 29 29 _own(func, key))
28850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
28860 20 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 chec
28870 6b 55 6e 75 73 65 64 28 66 75 6e 63 2c 20 6b 65 kUnused(func, ke
28880 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 y);..
28890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
288a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d }...
288b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
288c0 20 69 66 20 28 21 66 75 6e 63 5b 22 28 70 61 72 if (!func["(par
288d0 61 6d 73 29 22 5d 29 0d 0a 20 20 20 20 20 20 20 ams)"])..
288e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
288f0 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 urn;....
28900 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61 var para
28910 6d 73 20 3d 20 66 75 6e 63 5b 22 28 70 61 72 61 ms = func["(para
28920 6d 73 29 22 5d 2e 73 6c 69 63 65 28 29 3b 0d 0a ms)"].slice();..
28930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28940 76 61 72 20 70 61 72 61 6d 20 20 3d 20 70 61 72 var param = par
28950 61 6d 73 2e 70 6f 70 28 29 3b 0d 0a 20 20 20 20 ams.pop();..
28960 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
28970 74 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 type;....
28980 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 while (
28990 70 61 72 61 6d 29 20 7b 0d 0a 20 20 20 20 20 20 param) {..
289a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 ty
289b0 70 65 20 3d 20 66 75 6e 63 5b 70 61 72 61 6d 5d pe = func[param]
289c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
289d0 20 20 20 20 20 20 20 20 20 2f 2f 20 27 75 6e 64 // 'und
289e0 65 66 69 6e 65 64 27 20 69 73 20 61 20 73 70 65 efined' is a spe
289f0 63 69 61 6c 20 63 61 73 65 20 66 6f 72 20 28 66 cial case for (f
28a00 75 6e 63 74 69 6f 6e 20 28 77 69 6e 64 6f 77 2c unction (window,
28a10 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 20 2e 2e undefined) { ..
28a20 2e 20 7d 29 28 29 3b 0d 0a 20 20 20 20 20 20 20 . })();..
28a30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 //
28a40 70 61 74 74 65 72 6e 73 2e 0d 0a 0d 0a 20 20 20 patterns.....
28a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28a60 20 69 66 20 28 70 61 72 61 6d 20 3d 3d 3d 20 22 if (param === "
28a70 75 6e 64 65 66 69 6e 65 64 22 29 0d 0a 20 20 20 undefined")..
28a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28a90 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a return;....
28aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28ab0 20 20 20 20 69 66 20 28 74 79 70 65 20 21 3d 3d if (type !==
28ac0 20 22 75 6e 75 73 65 64 22 20 26 26 20 74 79 70 "unused" && typ
28ad0 65 20 21 3d 3d 20 22 75 6e 63 74 69 6f 6e 22 29 e !== "unction")
28ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
28af0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
28b00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ;....
28b10 20 20 20 20 20 20 20 20 20 77 61 72 6e 55 6e 75 warnUnu
28b20 73 65 64 28 70 61 72 61 6d 2c 20 66 75 6e 63 5b sed(param, func[
28b30 22 28 74 6f 6b 65 6e 73 29 22 5d 5b 70 61 72 61 "(tokens)"][para
28b40 6d 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 m]);..
28b50 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 20 param
28b60 3d 20 70 61 72 61 6d 73 2e 70 6f 70 28 29 3b 0d = params.pop();.
28b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
28b80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
28b90 7d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 });....
28ba0 20 20 20 66 6f 72 20 28 76 61 72 20 6b 65 79 20 for (var key
28bb0 69 6e 20 64 65 63 6c 61 72 65 64 29 20 7b 0d 0a in declared) {..
28bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28bd0 69 66 20 28 69 73 5f 6f 77 6e 28 64 65 63 6c 61 if (is_own(decla
28be0 72 65 64 2c 20 6b 65 79 29 20 26 26 20 21 69 73 red, key) && !is
28bf0 5f 6f 77 6e 28 67 6c 6f 62 61 6c 2c 20 6b 65 79 _own(global, key
28c00 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 )) {..
28c10 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 55 6e warnUn
28c20 75 73 65 64 28 6b 65 79 2c 20 64 65 63 6c 61 72 used(key, declar
28c30 65 64 5b 6b 65 79 5d 29 3b 0d 0a 20 20 20 20 20 ed[key]);..
28c40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
28c50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
28c60 20 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29 } catch (e)
28c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
28c80 69 66 20 28 65 29 20 7b 0d 0a 20 20 20 20 20 20 if (e) {..
28c90 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 74 var nt
28ca0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 20 7c 7c 20 = nexttoken ||
28cb0 7b 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {};..
28cc0 20 20 20 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f JSHINT.erro
28cd0 72 73 2e 70 75 73 68 28 7b 0d 0a 20 20 20 20 20 rs.push({..
28ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
28cf0 61 77 20 20 20 20 20 20 20 3a 20 65 2e 72 61 77 aw : e.raw
28d00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
28d10 20 20 20 20 20 20 20 72 65 61 73 6f 6e 20 20 20 reason
28d20 20 3a 20 65 2e 6d 65 73 73 61 67 65 2c 0d 0a 20 : e.message,..
28d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
28d40 20 20 20 6c 69 6e 65 20 20 20 20 20 20 3a 20 65 line : e
28d50 2e 6c 69 6e 65 20 7c 7c 20 6e 74 2e 6c 69 6e 65 .line || nt.line
28d60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
28d70 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 character
28d80 20 3a 20 65 2e 63 68 61 72 61 63 74 65 72 20 7c : e.character |
28d90 7c 20 6e 74 2e 66 72 6f 6d 0d 0a 20 20 20 20 20 | nt.from..
28da0 20 20 20 20 20 20 20 20 20 20 20 7d 2c 20 6e 75 }, nu
28db0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ll);..
28dc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a }.. }..
28dd0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
28de0 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 2e 6c JSHINT.errors.l
28df0 65 6e 67 74 68 20 3d 3d 3d 20 30 3b 0d 0a 20 20 ength === 0;..
28e00 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 44 };.... // D
28e10 61 74 61 20 73 75 6d 6d 61 72 79 2e 0d 0a 20 20 ata summary...
28e20 20 20 69 74 73 65 6c 66 2e 64 61 74 61 20 3d 20 itself.data =
28e30 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 function () {..
28e40 20 20 20 20 20 20 20 76 61 72 20 64 61 74 61 20 var data
28e50 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 = {..
28e60 20 66 75 6e 63 74 69 6f 6e 73 3a 20 5b 5d 2c 0d functions: [],.
28e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 . opt
28e80 69 6f 6e 73 3a 20 6f 70 74 69 6f 6e 0d 0a 20 20 ions: option..
28e90 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 };..
28ea0 20 20 76 61 72 20 69 6d 70 6c 69 65 64 73 20 3d var implieds =
28eb0 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 [];.. va
28ec0 72 20 6d 65 6d 62 65 72 73 20 3d 20 5b 5d 3b 0d r members = [];.
28ed0 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 75 2c . var fu,
28ee0 20 66 2c 20 69 2c 20 6a 2c 20 6e 2c 20 67 6c 6f f, i, j, n, glo
28ef0 62 61 6c 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 bals;....
28f00 20 69 66 20 28 69 74 73 65 6c 66 2e 65 72 72 6f if (itself.erro
28f10 72 73 2e 6c 65 6e 67 74 68 29 20 7b 0d 0a 20 20 rs.length) {..
28f20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 65 data.e
28f30 72 72 6f 72 73 20 3d 20 69 74 73 65 6c 66 2e 65 rrors = itself.e
28f40 72 72 6f 72 73 3b 0d 0a 20 20 20 20 20 20 20 20 rrors;..
28f50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 }.... if
28f60 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20 20 (jsonmode) {..
28f70 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 6a data.j
28f80 73 6f 6e 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 son = true;..
28f90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
28fa0 20 20 66 6f 72 20 28 6e 20 69 6e 20 69 6d 70 6c for (n in impl
28fb0 69 65 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ied) {..
28fc0 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 69 if (is_own(i
28fd0 6d 70 6c 69 65 64 2c 20 6e 29 29 20 7b 0d 0a 20 mplied, n)) {..
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
28ff0 6d 70 6c 69 65 64 73 2e 70 75 73 68 28 7b 0d 0a mplieds.push({..
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
29010 20 20 20 20 6e 61 6d 65 3a 20 6e 2c 0d 0a 20 20 name: n,..
29020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
29030 20 20 6c 69 6e 65 3a 20 69 6d 70 6c 69 65 64 5b line: implied[
29040 6e 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 n]..
29050 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20 });..
29060 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
29070 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 }.... if
29080 28 69 6d 70 6c 69 65 64 73 2e 6c 65 6e 67 74 68 (implieds.length
29090 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 > 0) {..
290a0 20 20 20 20 20 64 61 74 61 2e 69 6d 70 6c 69 65 data.implie
290b0 64 73 20 3d 20 69 6d 70 6c 69 65 64 73 3b 0d 0a ds = implieds;..
290c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }....
290d0 20 20 20 20 20 69 66 20 28 75 72 6c 73 2e 6c 65 if (urls.le
290e0 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a 20 20 20 ngth > 0) {..
290f0 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 75 72 data.ur
29100 6c 73 20 3d 20 75 72 6c 73 3b 0d 0a 20 20 20 20 ls = urls;..
29110 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 }....
29120 20 67 6c 6f 62 61 6c 73 20 3d 20 4f 62 6a 65 63 globals = Objec
29130 74 2e 6b 65 79 73 28 73 63 6f 70 65 29 3b 0d 0a t.keys(scope);..
29140 20 20 20 20 20 20 20 20 69 66 20 28 67 6c 6f 62 if (glob
29150 61 6c 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 als.length > 0)
29160 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 {.. d
29170 61 74 61 2e 67 6c 6f 62 61 6c 73 20 3d 20 67 6c ata.globals = gl
29180 6f 62 61 6c 73 3b 0d 0a 20 20 20 20 20 20 20 20 obals;..
29190 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 }.... for
291a0 20 28 69 20 3d 20 31 3b 20 69 20 3c 20 66 75 6e (i = 1; i < fun
291b0 63 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 3b 20 69 ctions.length; i
291c0 20 2b 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 += 1) {..
291d0 20 20 20 20 20 20 66 20 3d 20 66 75 6e 63 74 69 f = functi
291e0 6f 6e 73 5b 69 5d 3b 0d 0a 20 20 20 20 20 20 20 ons[i];..
291f0 20 20 20 20 20 66 75 20 3d 20 7b 7d 3b 0d 0a 0d fu = {};...
29200 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 . for
29210 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 66 75 6e (j = 0; j < fun
29220 63 74 69 6f 6e 69 63 69 74 79 2e 6c 65 6e 67 74 ctionicity.lengt
29230 68 3b 20 6a 20 2b 3d 20 31 29 20 7b 0d 0a 20 20 h; j += 1) {..
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 fu
29250 5b 66 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a [functionicity[j
29260 5d 5d 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 ]] = [];..
29270 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
29280 20 20 20 20 20 20 20 66 6f 72 20 28 6a 20 3d 20 for (j =
29290 30 3b 20 6a 20 3c 20 66 75 6e 63 74 69 6f 6e 69 0; j < functioni
292a0 63 69 74 79 2e 6c 65 6e 67 74 68 3b 20 6a 20 2b city.length; j +
292b0 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 = 1) {..
292c0 20 20 20 20 20 20 20 20 69 66 20 28 66 75 5b 66 if (fu[f
292d0 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a 5d 5d unctionicity[j]]
292e0 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b .length === 0) {
292f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
29300 20 20 20 20 20 20 64 65 6c 65 74 65 20 66 75 5b delete fu[
29310 66 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a 5d functionicity[j]
29320 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ];..
29330 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
29340 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
29350 20 20 20 20 66 75 2e 6e 61 6d 65 20 3d 20 66 5b fu.name = f[
29360 22 28 6e 61 6d 65 29 22 5d 3b 0d 0a 20 20 20 20 "(name)"];..
29370 20 20 20 20 20 20 20 20 66 75 2e 70 61 72 61 6d fu.param
29380 20 3d 20 66 5b 22 28 70 61 72 61 6d 73 29 22 5d = f["(params)"]
29390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 ;.. f
293a0 75 2e 6c 69 6e 65 20 3d 20 66 5b 22 28 6c 69 6e u.line = f["(lin
293b0 65 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 e)"];..
293c0 20 20 20 66 75 2e 63 68 61 72 61 63 74 65 72 20 fu.character
293d0 3d 20 66 5b 22 28 63 68 61 72 61 63 74 65 72 29 = f["(character)
293e0 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 "];..
293f0 20 66 75 2e 6c 61 73 74 20 3d 20 66 5b 22 28 6c fu.last = f["(l
29400 61 73 74 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 ast)"];..
29410 20 20 20 20 20 66 75 2e 6c 61 73 74 63 68 61 72 fu.lastchar
29420 61 63 74 65 72 20 3d 20 66 5b 22 28 6c 61 73 74 acter = f["(last
29430 63 68 61 72 61 63 74 65 72 29 22 5d 3b 0d 0a 20 character)"];..
29440 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e data.
29450 66 75 6e 63 74 69 6f 6e 73 2e 70 75 73 68 28 66 functions.push(f
29460 75 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a u);.. }..
29470 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 75 6e .. if (un
29480 75 73 65 64 73 2e 6c 65 6e 67 74 68 20 3e 20 30 useds.length > 0
29490 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
294a0 20 64 61 74 61 2e 75 6e 75 73 65 64 20 3d 20 75 data.unused = u
294b0 6e 75 73 65 64 73 3b 0d 0a 20 20 20 20 20 20 20 nuseds;..
294c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6d 65 }.... me
294d0 6d 62 65 72 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 mbers = [];..
294e0 20 20 20 20 20 66 6f 72 20 28 6e 20 69 6e 20 6d for (n in m
294f0 65 6d 62 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 ember) {..
29500 20 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 if (typeof
29510 20 6d 65 6d 62 65 72 5b 6e 5d 20 3d 3d 3d 20 22 member[n] === "
29520 6e 75 6d 62 65 72 22 29 20 7b 0d 0a 20 20 20 20 number") {..
29530 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 data
29540 2e 6d 65 6d 62 65 72 20 3d 20 6d 65 6d 62 65 72 .member = member
29550 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
29560 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
29570 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
29580 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 }.... r
29590 65 74 75 72 6e 20 64 61 74 61 3b 0d 0a 20 20 20 eturn data;..
295a0 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 74 73 65 6c };.... itsel
295b0 66 2e 6a 73 68 69 6e 74 20 3d 20 69 74 73 65 6c f.jshint = itsel
295c0 66 3b 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e f;.... return
295d0 20 69 74 73 65 6c 66 3b 0d 0a 7d 28 29 29 3b 0d itself;..}());.
295e0 0a 0d 0a 2f 2f 20 4d 61 6b 65 20 4a 53 48 49 4e ...// Make JSHIN
295f0 54 20 61 20 4e 6f 64 65 20 6d 6f 64 75 6c 65 2c T a Node module,
29600 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 69 if possible...i
29610 66 20 28 74 79 70 65 6f 66 20 65 78 70 6f 72 74 f (typeof export
29620 73 20 3d 3d 3d 20 22 6f 62 6a 65 63 74 22 20 26 s === "object" &
29630 26 20 65 78 70 6f 72 74 73 29 20 7b 0d 0a 20 20 & exports) {..
29640 20 20 65 78 70 6f 72 74 73 2e 4a 53 48 49 4e 54 exports.JSHINT
29650 20 3d 20 4a 53 48 49 4e 54 3b 0d 0a 7d 0d 0a = JSHINT;..}..