thirdparty/jslint/jslint.js
author Daniel Hans <Daniel.M.Hans@gmail.com>
Sat, 14 Nov 2009 23:58:20 +0100
changeset 3092 beeb5d111318
parent 2803 ef8303b31490
permissions -rw-r--r--
Changes in tags are saved to the data store. Also, when a task is created, its arbit tags are stored. Issue 696 fixed.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2802
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     1
// jslint.js
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     2
// 2009-08-22
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     3
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     4
/*
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     5
Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     6
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     7
Permission is hereby granted, free of charge, to any person obtaining a copy of
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     8
this software and associated documentation files (the "Software"), to deal in
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
     9
the Software without restriction, including without limitation the rights to
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    10
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    11
of the Software, and to permit persons to whom the Software is furnished to do
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    12
so, subject to the following conditions:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    13
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    14
The above copyright notice and this permission notice shall be included in all
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    15
copies or substantial portions of the Software.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    16
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    17
The Software shall be used for Good, not Evil.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    18
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    19
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    20
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    21
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    22
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    23
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    24
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    25
SOFTWARE.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    26
*/
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    27
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    28
/*
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    29
    JSLINT is a global function. It takes two parameters.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    30
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    31
        var myResult = JSLINT(source, option);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    32
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    33
    The first parameter is either a string or an array of strings. If it is a
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    34
    string, it will be split on '\n' or '\r'. If it is an array of strings, it
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    35
    is assumed that each string represents one line. The source can be a
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    36
    JavaScript text, or HTML text, or a Konfabulator text.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    37
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    38
    The second parameter is an optional object of options which control the
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    39
    operation of JSLINT. Most of the options are booleans: They are all are
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    40
    optional and have a default value of false.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    41
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    42
    If it checks out, JSLINT returns true. Otherwise, it returns false.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    43
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    44
    If false, you can inspect JSLINT.errors to find out the problems.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    45
    JSLINT.errors is an array of objects containing these members:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    46
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    47
    {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    48
        line      : The line (relative to 0) at which the lint was found
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    49
        character : The character (relative to 0) at which the lint was found
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    50
        reason    : The problem
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    51
        evidence  : The text line in which the problem occurred
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    52
        raw       : The raw message before the details were inserted
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    53
        a         : The first detail
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    54
        b         : The second detail
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    55
        c         : The third detail
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    56
        d         : The fourth detail
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    57
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    58
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    59
    If a fatal error was found, a null will be the last element of the
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    60
    JSLINT.errors array.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    61
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    62
    You can request a Function Report, which shows all of the functions
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    63
    and the parameters and vars that they use. This can be used to find
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    64
    implied global variables and other problems. The report is in HTML and
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    65
    can be inserted in an HTML <body>.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    66
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    67
        var myReport = JSLINT.report(limited);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    68
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    69
    If limited is true, then the report will be limited to only errors.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    70
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    71
    You can request a data structure which contains JSLint's results.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    72
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    73
        var myData = JSLINT.data();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    74
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    75
    It returns a structure with this form:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    76
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    77
    {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    78
        errors: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    79
            {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    80
                line: NUMBER,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    81
                character: NUMBER,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    82
                reason: STRING,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    83
                evidence: STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    84
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    85
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    86
        functions: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    87
            name: STRING,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    88
            line: NUMBER,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    89
            last: NUMBER,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    90
            param: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    91
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    92
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    93
            closure: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    94
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    95
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    96
            var: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    97
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    98
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
    99
            exception: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   100
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   101
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   102
            outer: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   103
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   104
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   105
            unused: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   106
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   107
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   108
            global: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   109
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   110
            ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   111
            label: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   112
                STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   113
            ]
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   114
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   115
        globals: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   116
            STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   117
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   118
        member: {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   119
            STRING: NUMBER
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   120
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   121
        unuseds: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   122
            {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   123
                name: STRING,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   124
                line: NUMBER
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   125
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   126
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   127
        implieds: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   128
            {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   129
                name: STRING,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   130
                line: NUMBER
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   131
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   132
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   133
        urls: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   134
            STRING
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   135
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   136
        json: BOOLEAN
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   137
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   138
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   139
    Empty arrays will not be included.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   140
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   141
*/
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   142
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   143
/*jslint
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   144
    evil: true, nomen: false, onevar: false, regexp: false, strict: true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   145
*/
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   146
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   147
/*members "\b", "\t", "\n", "\f", "\r", "\"", "%", "(begin)",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   148
    "(breakage)", "(context)", "(error)", "(global)", "(identifier)",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   149
    "(last)", "(line)", "(loopage)", "(name)", "(onevar)", "(params)",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   150
    "(scope)", "(verb)", "++", "--", "\/", ADSAFE, Array, Boolean, COM,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   151
    Canvas, CustomAnimation, Date, Debug, E, Error, EvalError,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   152
    FadeAnimation, Flash, FormField, Frame, Function, HotKey, Image, JSON,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   153
    LN10, LN2, LOG10E, LOG2E, MAX_VALUE, MIN_VALUE, Math, MenuItem,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   154
    MoveAnimation, NEGATIVE_INFINITY, Number, Object, Option, PI,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   155
    POSITIVE_INFINITY, Point, RangeError, Rectangle, ReferenceError, RegExp,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   156
    ResizeAnimation, RotateAnimation, SQRT1_2, SQRT2, ScrollBar, String,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   157
    Style, SyntaxError, System, Text, TextArea, Timer, TypeError, URIError,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   158
    URL, Web, Window, XMLDOM, XMLHttpRequest, "\\", a, abbr, acronym,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   159
    addEventListener, address, adsafe, alert, aliceblue, animator,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   160
    antiquewhite, appleScript, applet, apply, approved, aqua, aquamarine,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   161
    area, arguments, arity, autocomplete, azure, b, background,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   162
    "background-attachment", "background-color", "background-image",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   163
    "background-position", "background-repeat", base, bdo, beep, beige, big,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   164
    bisque, bitwise, black, blanchedalmond, block, blockquote, blue,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   165
    blueviolet, blur, body, border, "border-bottom", "border-bottom-color",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   166
    "border-bottom-style", "border-bottom-width", "border-collapse",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   167
    "border-color", "border-left", "border-left-color", "border-left-style",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   168
    "border-left-width", "border-right", "border-right-color",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   169
    "border-right-style", "border-right-width", "border-spacing",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   170
    "border-style", "border-top", "border-top-color", "border-top-style",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   171
    "border-top-width", "border-width", bottom, br, brown, browser,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   172
    burlywood, button, bytesToUIString, c, cadetblue, call, callee, caller,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   173
    canvas, cap, caption, "caption-side", cases, center, charAt, charCodeAt,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   174
    character, chartreuse, chocolate, chooseColor, chooseFile, chooseFolder,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   175
    cite, clear, clearInterval, clearTimeout, clip, close, closeWidget,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   176
    closed, closure, cm, code, col, colgroup, color, comment, condition,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   177
    confirm, console, constructor, content, convertPathToHFS,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   178
    convertPathToPlatform, coral, cornflowerblue, cornsilk,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   179
    "counter-increment", "counter-reset", create, crimson, css, cursor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   180
    cyan, d, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   181
    darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   182
    darksalmon, darkseagreen, darkslateblue, darkslategray, darkturquoise,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   183
    darkviolet, data, dd, debug, decodeURI, decodeURIComponent, deeppink,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   184
    deepskyblue, defaultStatus, defineClass, del, deserialize, dfn,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   185
    dimension, dimgray, dir, direction, display, div, dl, document,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   186
    dodgerblue, dt, edition, else, em, embed, empty, "empty-cells",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   187
    encodeURI, encodeURIComponent, entityify, eqeqeq, errors, escape, eval,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   188
    event, evidence, evil, ex, exception, exec, exps, fieldset, filesystem,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   189
    firebrick, first, float, floor, floralwhite, focus, focusWidget, font,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   190
    "font-face", "font-family", "font-size", "font-size-adjust",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   191
    "font-stretch", "font-style", "font-variant", "font-weight",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   192
    forestgreen, forin, form, fragment, frame, frames, frameset, from,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   193
    fromCharCode, fuchsia, fud, funct, function, functions, g, gainsboro,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   194
    gc, getComputedStyle, ghostwhite, global, globals, gold, goldenrod,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   195
    gray, green, greenyellow, h1, h2, h3, h4, h5, h6, hasOwnProperty, head,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   196
    height, help, history, honeydew, hotpink, hr, html, i, iTunes, id,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   197
    identifier, iframe, img, immed, implieds, import, in, include, indent,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   198
    indexOf, indianred, indigo, init, input, ins, isAlpha,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   199
    isApplicationRunning, isDigit, isFinite, isNaN, ivory, join, jslint,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   200
    json, kbd, khaki, konfabulatorVersion, label, labelled, lang, last,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   201
    lavender, lavenderblush, lawngreen, laxbreak, lbp, led, left, legend,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   202
    lemonchiffon, length, "letter-spacing", li, lib, lightblue, lightcoral,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   203
    lightcyan, lightgoldenrodyellow, lightgreen, lightpink, lightsalmon,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   204
    lightseagreen, lightskyblue, lightslategray, lightsteelblue,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   205
    lightyellow, lime, limegreen, line, "line-height", linen, link,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   206
    "list-style", "list-style-image", "list-style-position",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   207
    "list-style-type", load, loadClass, location, log, m, magenta, map,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   208
    margin, "margin-bottom", "margin-left", "margin-right", "margin-top",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   209
    "marker-offset", maroon, match, "max-height", "max-width", maxerr, md5,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   210
    media, mediumaquamarine, mediumblue, mediumorchid, mediumpurple,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   211
    mediumseagreen, mediumslateblue, mediumspringgreen, mediumturquoise,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   212
    mediumvioletred, member, menu, message, meta, midnightblue,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   213
    "min-height", "min-width", mintcream, mistyrose, mm, moccasin, moveBy,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   214
    moveTo, name, navajowhite, navigator, navy, new, newcap, noframes,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   215
    nomen, noscript, nud, object, ol, oldlace, olive, olivedrab, on,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   216
    onbeforeunload, onblur, onerror, onevar, onfocus, onload, onresize,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   217
    onunload, opacity, open, openURL, opener, opera, optgroup, option,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   218
    orange, orangered, orchid, outer, outline, "outline-color",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   219
    "outline-style", "outline-width", overflow, "overflow-x", "overflow-y",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   220
    p, padding, "padding-bottom", "padding-left", "padding-right",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   221
    "padding-top", page, "page-break-after", "page-break-before",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   222
    palegoldenrod, palegreen, paleturquoise, palevioletred, papayawhip,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   223
    param, parent, parseFloat, parseInt, passfail, pc, peachpuff, peru,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   224
    pink, play, plum, plusplus, pop, popupMenu, position, powderblue, pre,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   225
    predef, preferenceGroups, preferences, print, prompt, prototype, pt,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   226
    purple, push, px, q, quit, quotes, random, range, raw, reach, readFile,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   227
    readUrl, reason, red, regexp, reloadWidget, removeEventListener,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   228
    replace, report, reserved, resizeBy, resizeTo, resolvePath,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   229
    resumeUpdates, rhino, right, rosybrown, royalblue, runCommand,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   230
    runCommandInBg, saddlebrown, safe, salmon, samp, sandybrown, saveAs,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   231
    savePreferences, screen, script, scroll, scrollBy, scrollTo, seagreen,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   232
    seal, search, seashell, select, serialize, setInterval, setTimeout,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   233
    shift, showWidgetPreferences, sidebar, sienna, silver, skyblue,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   234
    slateblue, slategray, sleep, slice, small, snow, sort, span, spawn,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   235
    speak, split, springgreen, src, status, steelblue, strict, strong,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   236
    style, styleproperty, sub, substr, sup, supplant, suppressUpdates, sync,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   237
    system, table, "table-layout", tan, tbody, td, teal, tellWidget, test,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   238
    "text-align", "text-decoration", "text-indent", "text-shadow",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   239
    "text-transform", textarea, tfoot, th, thead, thistle, title,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   240
    toLowerCase, toString, toUpperCase, toint32, token, tomato, top, tr, tt,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   241
    turquoise, type, u, ul, undef, unescape, "unicode-bidi", unused,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   242
    unwatch, updateNow, urls, value, valueOf, var, version,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   243
    "vertical-align", violet, visibility, watch, wheat, white,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   244
    "white-space", whitesmoke, widget, width, "word-spacing", "word-wrap",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   245
    yahooCheckLogin, yahooLogin, yahooLogout, yellow, yellowgreen,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   246
    "z-index"
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   247
*/
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   248
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   249
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   250
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   251
// We build the application inside a function so that we produce only a single
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   252
// global variable. The function will be invoked, its return value is the JSLINT
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   253
// application itself.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   254
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   255
"use strict";
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   256
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   257
var JSLINT = (function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   258
    var adsafe_id,      // The widget's ADsafe id.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   259
        adsafe_may,     // The widget may load approved scripts.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   260
        adsafe_went,    // ADSAFE.go has been called.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   261
        anonname,       // The guessed name for anonymous functions.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   262
        approved,       // ADsafe approved urls.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   263
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   264
        atrule = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   265
            media      : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   266
            'font-face': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   267
            page       : true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   268
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   269
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   270
// These are members that should not be permitted in the safe subset.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   271
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   272
        banned = {              // the member names that ADsafe prohibits.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   273
            'arguments'     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   274
            callee          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   275
            caller          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   276
            constructor     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   277
            'eval'          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   278
            prototype       : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   279
            unwatch         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   280
            valueOf         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   281
            watch           : true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   282
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   283
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   284
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   285
// These are the JSLint boolean options.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   286
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   287
        boolOptions = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   288
            adsafe     : true, // if ADsafe should be enforced
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   289
            bitwise    : true, // if bitwise operators should not be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   290
            browser    : true, // if the standard browser globals should be predefined
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   291
            cap        : true, // if upper case HTML should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   292
            css        : true, // if CSS workarounds should be tolerated
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   293
            debug      : true, // if debugger statements should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   294
            eqeqeq     : true, // if === should be required
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   295
            evil       : true, // if eval should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   296
            forin      : true, // if for in statements must filter
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   297
            fragment   : true, // if HTML fragments should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   298
            immed      : true, // if immediate invocations must be wrapped in parens
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   299
            laxbreak   : true, // if line breaks should not be checked
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   300
            newcap     : true, // if constructor names must be capitalized
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   301
            nomen      : true, // if names should be checked
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   302
            on         : true, // if HTML event handlers should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   303
            onevar     : true, // if only one var statement per function should be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   304
            passfail   : true, // if the scan should stop on first error
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   305
            plusplus   : true, // if increment/decrement should not be allowed
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   306
            regexp     : true, // if the . should not be allowed in regexp literals
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   307
            rhino      : true, // if the Rhino environment globals should be predefined
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   308
            undef      : true, // if variables should be declared before used
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   309
            safe       : true, // if use of some browser features should be restricted
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   310
            sidebar    : true, // if the System object should be predefined
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   311
            strict     : true, // require the "use strict"; pragma
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   312
            sub        : true, // if all forms of subscript notation are tolerated
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   313
            white      : true, // if strict whitespace rules apply
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   314
            widget     : true  // if the Yahoo Widgets globals should be predefined
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   315
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   316
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   317
// browser contains a set of global names which are commonly provided by a
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   318
// web browser environment.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   319
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   320
        browser = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   321
            addEventListener: false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   322
            alert           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   323
            blur            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   324
            clearInterval   : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   325
            clearTimeout    : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   326
            close           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   327
            closed          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   328
            confirm         : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   329
            console         : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   330
            Debug           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   331
            defaultStatus   : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   332
            document        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   333
            event           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   334
            focus           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   335
            frames          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   336
            getComputedStyle: false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   337
            history         : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   338
            Image           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   339
            length          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   340
            location        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   341
            moveBy          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   342
            moveTo          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   343
            name            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   344
            navigator       : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   345
            onbeforeunload  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   346
            onblur          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   347
            onerror         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   348
            onfocus         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   349
            onload          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   350
            onresize        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   351
            onunload        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   352
            open            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   353
            opener          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   354
            opera           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   355
            Option          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   356
            parent          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   357
            print           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   358
            prompt          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   359
            removeEventListener: false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   360
            resizeBy        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   361
            resizeTo        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   362
            screen          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   363
            scroll          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   364
            scrollBy        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   365
            scrollTo        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   366
            setInterval     : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   367
            setTimeout      : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   368
            status          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   369
            top             : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   370
            XMLHttpRequest  : false
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   371
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   372
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   373
        cssAttributeData,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   374
        cssAny,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   375
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   376
        cssColorData = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   377
            "aliceblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   378
            "antiquewhite"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   379
            "aqua"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   380
            "aquamarine"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   381
            "azure"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   382
            "beige"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   383
            "bisque"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   384
            "black"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   385
            "blanchedalmond"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   386
            "blue"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   387
            "blueviolet"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   388
            "brown"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   389
            "burlywood"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   390
            "cadetblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   391
            "chartreuse"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   392
            "chocolate"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   393
            "coral"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   394
            "cornflowerblue"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   395
            "cornsilk"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   396
            "crimson"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   397
            "cyan"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   398
            "darkblue"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   399
            "darkcyan"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   400
            "darkgoldenrod"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   401
            "darkgray"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   402
            "darkgreen"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   403
            "darkkhaki"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   404
            "darkmagenta"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   405
            "darkolivegreen"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   406
            "darkorange"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   407
            "darkorchid"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   408
            "darkred"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   409
            "darksalmon"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   410
            "darkseagreen"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   411
            "darkslateblue"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   412
            "darkslategray"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   413
            "darkturquoise"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   414
            "darkviolet"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   415
            "deeppink"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   416
            "deepskyblue"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   417
            "dimgray"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   418
            "dodgerblue"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   419
            "firebrick"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   420
            "floralwhite"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   421
            "forestgreen"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   422
            "fuchsia"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   423
            "gainsboro"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   424
            "ghostwhite"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   425
            "gold"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   426
            "goldenrod"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   427
            "gray"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   428
            "green"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   429
            "greenyellow"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   430
            "honeydew"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   431
            "hotpink"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   432
            "indianred"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   433
            "indigo"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   434
            "ivory"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   435
            "khaki"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   436
            "lavender"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   437
            "lavenderblush"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   438
            "lawngreen"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   439
            "lemonchiffon"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   440
            "lightblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   441
            "lightcoral"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   442
            "lightcyan"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   443
            "lightgoldenrodyellow"  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   444
            "lightgreen"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   445
            "lightpink"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   446
            "lightsalmon"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   447
            "lightseagreen"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   448
            "lightskyblue"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   449
            "lightslategray"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   450
            "lightsteelblue"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   451
            "lightyellow"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   452
            "lime"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   453
            "limegreen"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   454
            "linen"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   455
            "magenta"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   456
            "maroon"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   457
            "mediumaquamarine"      : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   458
            "mediumblue"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   459
            "mediumorchid"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   460
            "mediumpurple"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   461
            "mediumseagreen"        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   462
            "mediumslateblue"       : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   463
            "mediumspringgreen"     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   464
            "mediumturquoise"       : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   465
            "mediumvioletred"       : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   466
            "midnightblue"          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   467
            "mintcream"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   468
            "mistyrose"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   469
            "moccasin"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   470
            "navajowhite"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   471
            "navy"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   472
            "oldlace"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   473
            "olive"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   474
            "olivedrab"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   475
            "orange"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   476
            "orangered"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   477
            "orchid"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   478
            "palegoldenrod"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   479
            "palegreen"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   480
            "paleturquoise"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   481
            "palevioletred"         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   482
            "papayawhip"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   483
            "peachpuff"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   484
            "peru"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   485
            "pink"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   486
            "plum"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   487
            "powderblue"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   488
            "purple"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   489
            "red"                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   490
            "rosybrown"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   491
            "royalblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   492
            "saddlebrown"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   493
            "salmon"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   494
            "sandybrown"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   495
            "seagreen"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   496
            "seashell"              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   497
            "sienna"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   498
            "silver"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   499
            "skyblue"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   500
            "slateblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   501
            "slategray"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   502
            "snow"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   503
            "springgreen"           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   504
            "steelblue"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   505
            "tan"                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   506
            "teal"                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   507
            "thistle"               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   508
            "tomato"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   509
            "turquoise"             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   510
            "violet"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   511
            "wheat"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   512
            "white"                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   513
            "whitesmoke"            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   514
            "yellow"                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   515
            "yellowgreen"           : true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   516
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   517
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   518
        cssBorderStyle,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   519
        cssBreak,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   520
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   521
        cssLengthData = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   522
            '%': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   523
            'cm': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   524
            'em': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   525
            'ex': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   526
            'in': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   527
            'mm': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   528
            'pc': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   529
            'pt': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   530
            'px': true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   531
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   532
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   533
        cssOverflow,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   534
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   535
        escapes = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   536
            '\b': '\\b',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   537
            '\t': '\\t',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   538
            '\n': '\\n',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   539
            '\f': '\\f',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   540
            '\r': '\\r',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   541
            '"' : '\\"',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   542
            '/' : '\\/',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   543
            '\\': '\\\\'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   544
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   545
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   546
        funct,          // The current function
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   547
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   548
        functionicity = [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   549
            'closure', 'exception', 'global', 'label',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   550
            'outer', 'unused', 'var'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   551
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   552
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   553
        functions,      // All of the functions
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   554
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   555
        global,         // The global scope
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   556
        htmltag = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   557
            a:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   558
            abbr:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   559
            acronym:  {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   560
            address:  {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   561
            applet:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   562
            area:     {empty: true, parent: ' map '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   563
            b:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   564
            base:     {empty: true, parent: ' head '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   565
            bdo:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   566
            big:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   567
            blockquote: {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   568
            body:     {parent: ' html noframes '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   569
            br:       {empty: true},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   570
            button:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   571
            canvas:   {parent: ' body p div th td '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   572
            caption:  {parent: ' table '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   573
            center:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   574
            cite:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   575
            code:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   576
            col:      {empty: true, parent: ' table colgroup '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   577
            colgroup: {parent: ' table '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   578
            dd:       {parent: ' dl '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   579
            del:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   580
            dfn:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   581
            dir:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   582
            div:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   583
            dl:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   584
            dt:       {parent: ' dl '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   585
            em:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   586
            embed:    {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   587
            fieldset: {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   588
            font:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   589
            form:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   590
            frame:    {empty: true, parent: ' frameset '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   591
            frameset: {parent: ' html frameset '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   592
            h1:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   593
            h2:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   594
            h3:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   595
            h4:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   596
            h5:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   597
            h6:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   598
            head:     {parent: ' html '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   599
            html:     {parent: '*'},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   600
            hr:       {empty: true},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   601
            i:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   602
            iframe:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   603
            img:      {empty: true},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   604
            input:    {empty: true},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   605
            ins:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   606
            kbd:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   607
            label:    {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   608
            legend:   {parent: ' fieldset '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   609
            li:       {parent: ' dir menu ol ul '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   610
            link:     {empty: true, parent: ' head '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   611
            map:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   612
            menu:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   613
            meta:     {empty: true, parent: ' head noframes noscript '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   614
            noframes: {parent: ' html body '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   615
            noscript: {parent: ' body head noframes '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   616
            object:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   617
            ol:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   618
            optgroup: {parent: ' select '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   619
            option:   {parent: ' optgroup select '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   620
            p:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   621
            param:    {empty: true, parent: ' applet object '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   622
            pre:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   623
            q:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   624
            samp:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   625
            script:   {empty: true, parent: ' body div frame head iframe p pre span '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   626
            select:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   627
            small:    {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   628
            span:     {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   629
            strong:   {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   630
            style:    {parent: ' head ', empty: true},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   631
            sub:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   632
            sup:      {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   633
            table:    {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   634
            tbody:    {parent: ' table '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   635
            td:       {parent: ' tr '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   636
            textarea: {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   637
            tfoot:    {parent: ' table '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   638
            th:       {parent: ' tr '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   639
            thead:    {parent: ' table '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   640
            title:    {parent: ' head '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   641
            tr:       {parent: ' table tbody thead tfoot '},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   642
            tt:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   643
            u:        {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   644
            ul:       {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   645
            'var':    {}
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   646
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   647
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   648
        ids,            // HTML ids
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   649
        implied,        // Implied globals
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   650
        inblock,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   651
        indent,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   652
        jsonmode,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   653
        lines,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   654
        lookahead,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   655
        member,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   656
        membersOnly,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   657
        nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   658
        noreach,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   659
        option,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   660
        predefined,     // Global variables defined by option
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   661
        prereg,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   662
        prevtoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   663
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   664
        rhino = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   665
            defineClass : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   666
            deserialize : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   667
            gc          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   668
            help        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   669
            load        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   670
            loadClass   : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   671
            print       : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   672
            quit        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   673
            readFile    : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   674
            readUrl     : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   675
            runCommand  : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   676
            seal        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   677
            serialize   : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   678
            spawn       : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   679
            sync        : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   680
            toint32     : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   681
            version     : false
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   682
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   683
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   684
        scope,      // The current scope
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   685
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   686
        sidebar = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   687
            System      : false
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   688
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   689
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   690
        src,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   691
        stack,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   692
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   693
// standard contains the global names that are provided by the
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   694
// ECMAScript standard.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   695
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   696
        standard = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   697
            Array               : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   698
            Boolean             : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   699
            Date                : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   700
            decodeURI           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   701
            decodeURIComponent  : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   702
            encodeURI           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   703
            encodeURIComponent  : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   704
            Error               : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   705
            'eval'              : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   706
            EvalError           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   707
            Function            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   708
            hasOwnProperty      : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   709
            isFinite            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   710
            isNaN               : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   711
            JSON                : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   712
            Math                : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   713
            Number              : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   714
            Object              : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   715
            parseInt            : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   716
            parseFloat          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   717
            RangeError          : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   718
            ReferenceError      : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   719
            RegExp              : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   720
            String              : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   721
            SyntaxError         : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   722
            TypeError           : false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   723
            URIError            : false
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   724
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   725
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   726
        standard_member = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   727
            E                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   728
            LN2                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   729
            LN10                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   730
            LOG2E               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   731
            LOG10E              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   732
            PI                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   733
            SQRT1_2             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   734
            SQRT2               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   735
            MAX_VALUE           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   736
            MIN_VALUE           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   737
            NEGATIVE_INFINITY   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   738
            POSITIVE_INFINITY   : true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   739
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   740
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   741
        syntax = {},
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   742
        tab,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   743
        token,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   744
        urls,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   745
        warnings,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   746
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   747
// widget contains the global names which are provided to a Yahoo
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   748
// (fna Konfabulator) widget.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   749
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   750
        widget = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   751
            alert                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   752
            animator                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   753
            appleScript             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   754
            beep                    : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   755
            bytesToUIString         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   756
            Canvas                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   757
            chooseColor             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   758
            chooseFile              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   759
            chooseFolder            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   760
            closeWidget             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   761
            COM                     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   762
            convertPathToHFS        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   763
            convertPathToPlatform   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   764
            CustomAnimation         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   765
            escape                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   766
            FadeAnimation           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   767
            filesystem              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   768
            Flash                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   769
            focusWidget             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   770
            form                    : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   771
            FormField               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   772
            Frame                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   773
            HotKey                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   774
            Image                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   775
            include                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   776
            isApplicationRunning    : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   777
            iTunes                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   778
            konfabulatorVersion     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   779
            log                     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   780
            md5                     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   781
            MenuItem                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   782
            MoveAnimation           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   783
            openURL                 : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   784
            play                    : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   785
            Point                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   786
            popupMenu               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   787
            preferenceGroups        : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   788
            preferences             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   789
            print                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   790
            prompt                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   791
            random                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   792
            Rectangle               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   793
            reloadWidget            : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   794
            ResizeAnimation         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   795
            resolvePath             : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   796
            resumeUpdates           : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   797
            RotateAnimation         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   798
            runCommand              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   799
            runCommandInBg          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   800
            saveAs                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   801
            savePreferences         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   802
            screen                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   803
            ScrollBar               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   804
            showWidgetPreferences   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   805
            sleep                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   806
            speak                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   807
            Style                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   808
            suppressUpdates         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   809
            system                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   810
            tellWidget              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   811
            Text                    : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   812
            TextArea                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   813
            Timer                   : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   814
            unescape                : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   815
            updateNow               : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   816
            URL                     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   817
            Web                     : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   818
            widget                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   819
            Window                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   820
            XMLDOM                  : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   821
            XMLHttpRequest          : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   822
            yahooCheckLogin         : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   823
            yahooLogin              : true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   824
            yahooLogout             : true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   825
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   826
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   827
//  xmode is used to adapt to the exceptions in html parsing.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   828
//  It can have these states:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   829
//      false   .js script file
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   830
//      html
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   831
//      outer
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   832
//      script
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   833
//      style
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   834
//      scriptstring
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   835
//      styleproperty
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   836
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   837
        xmode,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   838
        xquote,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   839
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   840
// unsafe comment or string
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   841
        ax = /@cc|<\/?|script|\]*s\]|<\s*!|&lt/i,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   842
// unsafe characters that are silently deleted by one or more browsers
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   843
        cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   844
// token
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   845
        tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jslint|members?|global)?|=|\/)?|\*[\/=]?|\+[+=]?|-[\-=]?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   846
// html token
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   847
        hx = /^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-]*|[0-9]+|--|.)/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   848
// characters in strings that need escapement
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   849
        nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   850
        nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   851
// outer html token
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   852
        ox = /[>&]|<[\/!]?|--/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   853
// star slash
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   854
        lx = /\*\/|\/\*/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   855
// identifier
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   856
        ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   857
// javascript url
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   858
        jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   859
// url badness
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   860
        ux = /&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   861
// style
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   862
        sx = /^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   863
        ssx = /^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   864
// attributes characters
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   865
        qx = /[^a-zA-Z0-9-_\/ ]/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   866
// query characters for ids
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   867
        dx = /[\[\]\/\\"'*<>.&:(){}+=#]/,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   868
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   869
        rx = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   870
            outer: hx,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   871
            html: hx,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   872
            style: sx,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   873
            styleproperty: ssx
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   874
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   875
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   876
    function F() {}
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   877
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   878
    if (typeof Object.create !== 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   879
        Object.create = function (o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   880
            F.prototype = o;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   881
            return new F();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   882
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   883
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   884
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   885
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   886
    function is_own(object, name) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   887
        return Object.prototype.hasOwnProperty.call(object, name);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   888
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   889
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   890
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   891
    function combine(t, o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   892
        var n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   893
        for (n in o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   894
            if (is_own(o, n)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   895
                t[n] = o[n];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   896
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   897
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   898
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   899
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   900
    String.prototype.entityify = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   901
        return this.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   902
            replace(/&/g, '&amp;').
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   903
            replace(/</g, '&lt;').
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   904
            replace(/>/g, '&gt;');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   905
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   906
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   907
    String.prototype.isAlpha = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   908
        return (this >= 'a' && this <= 'z\uffff') ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   909
            (this >= 'A' && this <= 'Z\uffff');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   910
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   911
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   912
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   913
    String.prototype.isDigit = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   914
        return (this >= '0' && this <= '9');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   915
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   916
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   917
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   918
    String.prototype.supplant = function (o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   919
        return this.replace(/\{([^{}]*)\}/g, function (a, b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   920
            var r = o[b];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   921
            return typeof r === 'string' || typeof r === 'number' ? r : a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   922
        });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   923
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   924
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   925
    String.prototype.name = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   926
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   927
// If the string looks like an identifier, then we can return it as is.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   928
// If the string contains no control characters, no quote characters, and no
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   929
// backslash characters, then we can simply slap some quotes around it.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   930
// Otherwise we must also replace the offending characters with safe
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   931
// sequences.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   932
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   933
        if (ix.test(this)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   934
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   935
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   936
        if (nx.test(this)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   937
            return '"' + this.replace(nxg, function (a) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   938
                var c = escapes[a];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   939
                if (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   940
                    return c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   941
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   942
                return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   943
            }) + '"';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   944
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   945
        return '"' + this + '"';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   946
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   947
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   948
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   949
    function assume() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   950
        if (!option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   951
            if (option.rhino) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   952
                combine(predefined, rhino);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   953
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   954
            if (option.browser || option.sidebar) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   955
                combine(predefined, browser);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   956
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   957
            if (option.sidebar) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   958
                combine(predefined, sidebar);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   959
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   960
            if (option.widget) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   961
                combine(predefined, widget);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   962
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   963
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   964
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   965
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   966
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   967
// Produce an error warning.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   968
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   969
    function quit(m, l, ch) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   970
        throw {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   971
            name: 'JSLintError',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   972
            line: l,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   973
            character: ch,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   974
            message: m + " (" + Math.floor((l / lines.length) * 100) +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   975
                    "% scanned)."
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   976
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   977
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   978
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   979
    function warning(m, t, a, b, c, d) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   980
        var ch, l, w;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   981
        t = t || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   982
        if (t.id === '(end)') {  // `~
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   983
            t = token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   984
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   985
        l = t.line || 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   986
        ch = t.from || 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   987
        w = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   988
            id: '(error)',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   989
            raw: m,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   990
            evidence: lines[l - 1] || '',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   991
            line: l,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   992
            character: ch,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   993
            a: a,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   994
            b: b,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   995
            c: c,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   996
            d: d
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   997
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   998
        w.reason = m.supplant(w);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
   999
        JSLINT.errors.push(w);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1000
        if (option.passfail) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1001
            quit('Stopping. ', l, ch);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1002
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1003
        warnings += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1004
        if (warnings >= option.maxerr) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1005
            quit("Too many errors.", l, ch);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1006
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1007
        return w;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1008
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1009
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1010
    function warningAt(m, l, ch, a, b, c, d) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1011
        return warning(m, {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1012
            line: l,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1013
            from: ch
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1014
        }, a, b, c, d);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1015
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1016
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1017
    function error(m, t, a, b, c, d) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1018
        var w = warning(m, t, a, b, c, d);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1019
        quit("Stopping, unable to continue.", w.line, w.character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1020
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1021
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1022
    function errorAt(m, l, ch, a, b, c, d) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1023
        return error(m, {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1024
            line: l,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1025
            from: ch
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1026
        }, a, b, c, d);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1027
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1028
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1029
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1030
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1031
// lexical analysis
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1032
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1033
    var lex = (function lex() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1034
        var character, from, line, s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1035
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1036
// Private lex methods
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1037
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1038
        function nextLine() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1039
            var at;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1040
            if (line >= lines.length) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1041
                return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1042
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1043
            character = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1044
            s = lines[line].replace(/\t/g, tab);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1045
            line += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1046
            at = s.search(cx);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1047
            if (at >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1048
                warningAt("Unsafe character.", line, at);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1049
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1050
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1051
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1052
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1053
// Produce a token object.  The token inherits from a syntax symbol.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1054
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1055
        function it(type, value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1056
            var i, t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1057
            if (type === '(color)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1058
                t = {type: type};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1059
            } else if (type === '(punctuator)' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1060
                    (type === '(identifier)' && is_own(syntax, value))) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1061
                t = syntax[value] || syntax['(error)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1062
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1063
                t = syntax[type];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1064
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1065
            t = Object.create(t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1066
            if (type === '(string)' || type === '(range)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1067
                if (jx.test(value)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1068
                    warningAt("Script URL.", line, from);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1069
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1070
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1071
            if (type === '(identifier)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1072
                t.identifier = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1073
                if (option.nomen && value.charAt(0) === '_') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1074
                    warningAt("Unexpected '_' in '{a}'.", line, from, value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1075
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1076
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1077
            t.value = value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1078
            t.line = line;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1079
            t.character = character;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1080
            t.from = from;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1081
            i = t.id;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1082
            if (i !== '(endline)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1083
                prereg = i &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1084
                        (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1085
                        i === 'return');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1086
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1087
            return t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1088
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1089
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1090
// Public lex methods
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1091
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1092
        return {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1093
            init: function (source) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1094
                if (typeof source === 'string') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1095
                    lines = source.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1096
                        replace(/\r\n/g, '\n').
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1097
                        replace(/\r/g, '\n').
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1098
                        split('\n');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1099
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1100
                    lines = source;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1101
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1102
                line = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1103
                nextLine();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1104
                from = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1105
            },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1106
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1107
            range: function (begin, end) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1108
                var c, value = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1109
                from = character;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1110
                if (s.charAt(0) !== begin) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1111
                    errorAt("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1112
                            line, character, begin, s.charAt(0));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1113
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1114
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1115
                    s = s.slice(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1116
                    character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1117
                    c = s.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1118
                    switch (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1119
                    case '':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1120
                        errorAt("Missing '{a}'.", line, character, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1121
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1122
                    case end:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1123
                        s = s.slice(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1124
                        character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1125
                        return it('(range)', value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1126
                    case xquote:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1127
                    case '\\':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1128
                        warningAt("Unexpected '{a}'.", line, character, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1129
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1130
                    value += c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1131
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1132
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1133
            },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1134
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1135
// token -- this is called by advance to get the next token.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1136
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1137
            token: function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1138
                var b, c, captures, d, depth, high, i, l, low, q, t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1139
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1140
                function match(x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1141
                    var r = x.exec(s), r1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1142
                    if (r) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1143
                        l = r[0].length;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1144
                        r1 = r[1];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1145
                        c = r1.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1146
                        s = s.substr(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1147
                        from = character + l - r1.length;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1148
                        character += l;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1149
                        return r1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1150
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1151
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1152
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1153
                function string(x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1154
                    var c, j, r = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1155
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1156
                    if (jsonmode && x !== '"') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1157
                        warningAt("Strings must use doublequote.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1158
                                line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1159
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1160
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1161
                    if (xquote === x || (xmode === 'scriptstring' && !xquote)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1162
                        return it('(punctuator)', x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1163
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1164
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1165
                    function esc(n) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1166
                        var i = parseInt(s.substr(j + 1, n), 16);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1167
                        j += n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1168
                        if (i >= 32 && i <= 126 &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1169
                                i !== 34 && i !== 92 && i !== 39) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1170
                            warningAt("Unnecessary escapement.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1171
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1172
                        character += n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1173
                        c = String.fromCharCode(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1174
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1175
                    j = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1176
                    for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1177
                        while (j >= s.length) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1178
                            j = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1179
                            if (xmode !== 'html' || !nextLine()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1180
                                errorAt("Unclosed string.", line, from);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1181
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1182
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1183
                        c = s.charAt(j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1184
                        if (c === x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1185
                            character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1186
                            s = s.substr(j + 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1187
                            return it('(string)', r, x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1188
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1189
                        if (c < ' ') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1190
                            if (c === '\n' || c === '\r') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1191
                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1192
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1193
                            warningAt("Control character in string: {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1194
                                    line, character + j, s.slice(0, j));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1195
                        } else if (c === xquote) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1196
                            warningAt("Bad HTML string", line, character + j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1197
                        } else if (c === '<') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1198
                            if (option.safe && xmode === 'html') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1199
                                warningAt("ADsafe string violation.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1200
                                        line, character + j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1201
                            } else if (s.charAt(j + 1) === '/' && (xmode || option.safe)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1202
                                warningAt("Expected '<\\/' and instead saw '</'.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1203
                            } else if (s.charAt(j + 1) === '!' && (xmode || option.safe)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1204
                                warningAt("Unexpected '<!' in a string.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1205
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1206
                        } else if (c === '\\') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1207
                            if (xmode === 'html') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1208
                                if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1209
                                    warningAt("ADsafe string violation.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1210
                                            line, character + j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1211
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1212
                            } else if (xmode === 'styleproperty') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1213
                                j += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1214
                                character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1215
                                c = s.charAt(j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1216
                                if (c !== x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1217
                                    warningAt("Escapement in style string.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1218
                                            line, character + j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1219
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1220
                            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1221
                                j += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1222
                                character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1223
                                c = s.charAt(j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1224
                                switch (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1225
                                case xquote:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1226
                                    warningAt("Bad HTML string", line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1227
                                        character + j);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1228
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1229
                                case '\\':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1230
                                case '\'':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1231
                                case '"':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1232
                                case '/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1233
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1234
                                case 'b':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1235
                                    c = '\b';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1236
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1237
                                case 'f':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1238
                                    c = '\f';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1239
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1240
                                case 'n':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1241
                                    c = '\n';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1242
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1243
                                case 'r':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1244
                                    c = '\r';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1245
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1246
                                case 't':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1247
                                    c = '\t';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1248
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1249
                                case 'u':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1250
                                    esc(4);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1251
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1252
                                case 'v':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1253
                                    c = '\v';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1254
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1255
                                case 'x':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1256
                                    if (jsonmode) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1257
                                        warningAt("Avoid \\x-.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1258
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1259
                                    esc(2);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1260
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1261
                                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1262
                                    warningAt("Bad escapement.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1263
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1264
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1265
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1266
                        r += c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1267
                        character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1268
                        j += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1269
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1270
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1271
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1272
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1273
                    if (!s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1274
                        return it(nextLine() ? '(endline)' : '(end)', '');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1275
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1276
                    while (xmode === 'outer') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1277
                        i = s.search(ox);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1278
                        if (i === 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1279
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1280
                        } else if (i > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1281
                            character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1282
                            s = s.slice(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1283
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1284
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1285
                            if (!nextLine()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1286
                                return it('(end)', '');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1287
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1288
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1289
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1290
                    t = match(rx[xmode] || tx);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1291
                    if (!t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1292
                        if (xmode === 'html') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1293
                            return it('(error)', s.charAt(0));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1294
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1295
                            t = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1296
                            c = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1297
                            while (s && s < '!') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1298
                                s = s.substr(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1299
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1300
                            if (s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1301
                                errorAt("Unexpected '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1302
                                        line, character, s.substr(0, 1));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1303
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1304
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1305
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1306
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1307
    //      identifier
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1308
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1309
                        if (c.isAlpha() || c === '_' || c === '$') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1310
                            return it('(identifier)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1311
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1312
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1313
    //      number
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1314
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1315
                        if (c.isDigit()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1316
                            if (xmode !== 'style' && !isFinite(Number(t))) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1317
                                warningAt("Bad number '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1318
                                    line, character, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1319
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1320
                            if (xmode !== 'style' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1321
                                     xmode !== 'styleproperty' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1322
                                     s.substr(0, 1).isAlpha()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1323
                                warningAt("Missing space after '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1324
                                        line, character, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1325
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1326
                            if (c === '0') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1327
                                d = t.substr(1, 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1328
                                if (d.isDigit()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1329
                                    if (token.id !== '.' && xmode !== 'styleproperty') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1330
                                        warningAt("Don't use extra leading zeros '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1331
                                            line, character, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1332
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1333
                                } else if (jsonmode && (d === 'x' || d === 'X')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1334
                                    warningAt("Avoid 0x-. '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1335
                                            line, character, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1336
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1337
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1338
                            if (t.substr(t.length - 1) === '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1339
                                warningAt(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1340
        "A trailing decimal point can be confused with a dot '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1341
                                        line, character, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1342
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1343
                            return it('(number)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1344
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1345
                        switch (t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1346
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1347
    //      string
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1348
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1349
                        case '"':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1350
                        case "'":
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1351
                            return string(t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1352
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1353
    //      // comment
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1354
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1355
                        case '//':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1356
                            if (src || (xmode && xmode !== 'script')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1357
                                warningAt("Unexpected comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1358
                            } else if (xmode === 'script' && /<\s*\//i.test(s)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1359
                                warningAt("Unexpected <\/ in comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1360
                            } else if ((option.safe || xmode === 'script') && ax.test(s)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1361
                                warningAt("Dangerous comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1362
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1363
                            s = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1364
                            token.comment = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1365
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1366
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1367
    //      /* comment
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1368
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1369
                        case '/*':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1370
                            if (src || (xmode && xmode !== 'script' && xmode !== 'style' && xmode !== 'styleproperty')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1371
                                warningAt("Unexpected comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1372
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1373
                            if (option.safe && ax.test(s)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1374
                                warningAt("ADsafe comment violation.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1375
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1376
                            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1377
                                i = s.search(lx);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1378
                                if (i >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1379
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1380
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1381
                                if (!nextLine()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1382
                                    errorAt("Unclosed comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1383
                                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1384
                                    if (option.safe && ax.test(s)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1385
                                        warningAt("ADsafe comment violation.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1386
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1387
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1388
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1389
                            character += i + 2;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1390
                            if (s.substr(i, 1) === '/') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1391
                                errorAt("Nested comment.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1392
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1393
                            s = s.substr(i + 2);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1394
                            token.comment = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1395
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1396
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1397
    //      /*members /*jslint /*global
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1398
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1399
                        case '/*members':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1400
                        case '/*member':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1401
                        case '/*jslint':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1402
                        case '/*global':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1403
                        case '*/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1404
                            return {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1405
                                value: t,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1406
                                type: 'special',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1407
                                line: line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1408
                                character: character,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1409
                                from: from
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1410
                            };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1411
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1412
                        case '':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1413
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1414
    //      /
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1415
                        case '/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1416
                            if (prereg) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1417
                                depth = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1418
                                captures = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1419
                                l = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1420
                                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1421
                                    b = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1422
                                    c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1423
                                    l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1424
                                    switch (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1425
                                    case '':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1426
                                        errorAt("Unclosed regular expression.", line, from);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1427
                                        return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1428
                                    case '/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1429
                                        if (depth > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1430
                                            warningAt("Unescaped '{a}'.", line, from + l, '/');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1431
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1432
                                        c = s.substr(0, l - 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1433
                                        q = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1434
                                            g: true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1435
                                            i: true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1436
                                            m: true
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1437
                                        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1438
                                        while (q[s.charAt(l)] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1439
                                            q[s.charAt(l)] = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1440
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1441
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1442
                                        character += l;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1443
                                        s = s.substr(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1444
                                        return it('(regexp)', c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1445
                                    case '\\':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1446
                                        c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1447
                                        if (c < ' ') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1448
                                            warningAt("Unexpected control character in regular expression.", line, from + l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1449
                                        } else if (c === '<') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1450
                                            warningAt("Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1451
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1452
                                        l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1453
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1454
                                    case '(':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1455
                                        depth += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1456
                                        b = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1457
                                        if (s.charAt(l) === '?') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1458
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1459
                                            switch (s.charAt(l)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1460
                                            case ':':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1461
                                            case '=':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1462
                                            case '!':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1463
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1464
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1465
                                            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1466
                                                warningAt("Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1467
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1468
                                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1469
                                            captures += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1470
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1471
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1472
                                    case '|':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1473
                                        b = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1474
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1475
                                    case ')':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1476
                                        if (depth === 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1477
                                            warningAt("Unescaped '{a}'.", line, from + l, ')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1478
                                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1479
                                            depth -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1480
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1481
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1482
                                    case ' ':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1483
                                        q = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1484
                                        while (s.charAt(l) === ' ') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1485
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1486
                                            q += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1487
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1488
                                        if (q > 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1489
                                            warningAt("Spaces are hard to count. Use {{a}}.", line, from + l, q);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1490
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1491
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1492
                                    case '[':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1493
                                        c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1494
                                        if (c === '^') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1495
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1496
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1497
                                        q = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1498
                                        if (c === ']') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1499
                                            warningAt("Empty class.", line, from + l - 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1500
                                            q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1501
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1502
    klass:                              do {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1503
                                            c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1504
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1505
                                            switch (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1506
                                            case '[':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1507
                                            case '^':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1508
                                                warningAt("Unescaped '{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1509
                                                q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1510
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1511
                                            case '-':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1512
                                                if (q) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1513
                                                    q = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1514
                                                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1515
                                                    warningAt("Unescaped '{a}'.", line, from + l, '-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1516
                                                    q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1517
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1518
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1519
                                            case ']':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1520
                                                if (!q) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1521
                                                    warningAt("Unescaped '{a}'.", line, from + l - 1, ']');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1522
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1523
                                                break klass;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1524
                                            case '\\':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1525
                                                c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1526
                                                if (c < ' ') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1527
                                                    warningAt("Unexpected control character in regular expression.", line, from + l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1528
                                                } else if (c === '<') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1529
                                                    warningAt("Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1530
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1531
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1532
                                                q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1533
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1534
                                            case '/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1535
                                                warningAt("Unescaped '{a}'.", line, from + l - 1, '/');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1536
                                                q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1537
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1538
                                            case '<':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1539
                                                if (xmode === 'script') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1540
                                                    c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1541
                                                    if (c === '!' || c === '/') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1542
                                                        warningAt("HTML confusion in regular expression '<{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1543
                                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1544
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1545
                                                q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1546
                                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1547
                                            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1548
                                                q = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1549
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1550
                                        } while (c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1551
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1552
                                    case '.':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1553
                                        if (option.regexp) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1554
                                            warningAt("Unexpected '{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1555
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1556
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1557
                                    case ']':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1558
                                    case '?':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1559
                                    case '{':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1560
                                    case '}':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1561
                                    case '+':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1562
                                    case '*':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1563
                                        warningAt("Unescaped '{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1564
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1565
                                    case '<':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1566
                                        if (xmode === 'script') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1567
                                            c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1568
                                            if (c === '!' || c === '/') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1569
                                                warningAt("HTML confusion in regular expression '<{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1570
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1571
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1572
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1573
                                    if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1574
                                        switch (s.charAt(l)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1575
                                        case '?':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1576
                                        case '+':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1577
                                        case '*':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1578
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1579
                                            if (s.charAt(l) === '?') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1580
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1581
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1582
                                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1583
                                        case '{':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1584
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1585
                                            c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1586
                                            if (c < '0' || c > '9') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1587
                                                warningAt("Expected a number and instead saw '{a}'.", line, from + l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1588
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1589
                                            l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1590
                                            low = +c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1591
                                            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1592
                                                c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1593
                                                if (c < '0' || c > '9') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1594
                                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1595
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1596
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1597
                                                low = +c + (low * 10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1598
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1599
                                            high = low;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1600
                                            if (c === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1601
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1602
                                                high = Infinity;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1603
                                                c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1604
                                                if (c >= '0' && c <= '9') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1605
                                                    l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1606
                                                    high = +c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1607
                                                    for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1608
                                                        c = s.charAt(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1609
                                                        if (c < '0' || c > '9') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1610
                                                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1611
                                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1612
                                                        l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1613
                                                        high = +c + (high * 10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1614
                                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1615
                                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1616
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1617
                                            if (s.charAt(l) !== '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1618
                                                warningAt("Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1619
                                            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1620
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1621
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1622
                                            if (s.charAt(l) === '?') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1623
                                                l += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1624
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1625
                                            if (low > high) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1626
                                                warningAt("'{a}' should not be greater than '{b}'.", line, from + l, low, high);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1627
                                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1628
                                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1629
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1630
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1631
                                c = s.substr(0, l - 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1632
                                character += l;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1633
                                s = s.substr(l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1634
                                return it('(regexp)', c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1635
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1636
                            return it('(punctuator)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1637
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1638
    //      punctuator
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1639
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1640
                        case '<!--':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1641
                            l = line;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1642
                            c = character;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1643
                            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1644
                                i = s.indexOf('--');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1645
                                if (i >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1646
                                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1647
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1648
                                i = s.indexOf('<!');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1649
                                if (i >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1650
                                    errorAt("Nested HTML comment.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1651
                                        line, character + i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1652
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1653
                                if (!nextLine()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1654
                                    errorAt("Unclosed HTML comment.", l, c);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1655
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1656
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1657
                            l = s.indexOf('<!');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1658
                            if (l >= 0 && l < i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1659
                                errorAt("Nested HTML comment.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1660
                                    line, character + l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1661
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1662
                            character += i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1663
                            if (s[i + 2] !== '>') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1664
                                errorAt("Expected -->.", line, character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1665
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1666
                            character += 3;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1667
                            s = s.slice(i + 3);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1668
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1669
                        case '#':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1670
                            if (xmode === 'html' || xmode === 'styleproperty') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1671
                                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1672
                                    c = s.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1673
                                    if ((c < '0' || c > '9') &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1674
                                            (c < 'a' || c > 'f') &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1675
                                            (c < 'A' || c > 'F')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1676
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1677
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1678
                                    character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1679
                                    s = s.substr(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1680
                                    t += c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1681
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1682
                                if (t.length !== 4 && t.length !== 7) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1683
                                    warningAt("Bad hex color '{a}'.", line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1684
                                        from + l, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1685
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1686
                                return it('(color)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1687
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1688
                            return it('(punctuator)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1689
                        default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1690
                            if (xmode === 'outer' && c === '&') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1691
                                character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1692
                                s = s.substr(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1693
                                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1694
                                    c = s.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1695
                                    character += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1696
                                    s = s.substr(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1697
                                    if (c === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1698
                                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1699
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1700
                                    if (!((c >= '0' && c <= '9') ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1701
                                            (c >= 'a' && c <= 'z') ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1702
                                            c === '#')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1703
                                        errorAt("Bad entity", line, from + l,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1704
                                        character);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1705
                                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1706
                                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1707
                                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1708
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1709
                            return it('(punctuator)', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1710
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1711
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1712
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1713
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1714
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1715
    }());
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1716
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1717
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1718
    function addlabel(t, type) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1719
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1720
        if (option.safe && funct['(global)'] && typeof predefined[t] !== 'boolean') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1721
            warning('ADsafe global: ' + t + '.', token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1722
        } else if (t === 'hasOwnProperty') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1723
            warning("'hasOwnProperty' is a really bad name.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1724
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1725
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1726
// Define t in the current function in the current scope.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1727
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1728
        if (is_own(funct, t) && !funct['(global)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1729
            warning(funct[t] === true ?
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1730
                "'{a}' was used before it was defined." :
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1731
                "'{a}' is already defined.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1732
                nexttoken, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1733
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1734
        funct[t] = type;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1735
        if (type === 'label') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1736
            scope[t] = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1737
        } else if (funct['(global)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1738
            global[t] = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1739
            if (is_own(implied, t)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1740
                warning("'{a}' was used before it was defined.", nexttoken, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1741
                delete implied[t];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1742
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1743
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1744
            funct['(scope)'][t] = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1745
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1746
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1747
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1748
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1749
    function doOption() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1750
        var b, obj, filter, o = nexttoken.value, t, v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1751
        switch (o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1752
        case '*/':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1753
            error("Unbegun comment.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1754
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1755
        case '/*members':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1756
        case '/*member':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1757
            o = '/*members';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1758
            if (!membersOnly) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1759
                membersOnly = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1760
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1761
            obj = membersOnly;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1762
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1763
        case '/*jslint':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1764
            if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1765
                warning("ADsafe restriction.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1766
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1767
            obj = option;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1768
            filter = boolOptions;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1769
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1770
        case '/*global':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1771
            if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1772
                warning("ADsafe restriction.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1773
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1774
            obj = predefined;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1775
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1776
        default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1777
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1778
        t = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1779
loop:   for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1780
            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1781
                if (t.type === 'special' && t.value === '*/') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1782
                    break loop;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1783
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1784
                if (t.id !== '(endline)' && t.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1785
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1786
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1787
                t = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1788
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1789
            if (t.type !== '(string)' && t.type !== '(identifier)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1790
                    o !== '/*members') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1791
                error("Bad option.", t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1792
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1793
            v = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1794
            if (v.id === ':') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1795
                v = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1796
                if (obj === membersOnly) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1797
                    error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1798
                            t, '*/', ':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1799
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1800
                if (t.value === 'indent' && o === '/*jslint') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1801
                    b = +v.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1802
                    if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1803
                            Math.floor(b) !== b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1804
                        error("Expected a small integer and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1805
                                v, v.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1806
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1807
                    obj.white = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1808
                    obj.indent = b;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1809
                } else if (t.value === 'maxerr' && o === '/*jslint') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1810
                    b = +v.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1811
                    if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1812
                            Math.floor(b) !== b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1813
                        error("Expected a small integer and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1814
                                v, v.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1815
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1816
                    obj.maxerr = b;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1817
                } else if (v.value === 'true') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1818
                    obj[t.value] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1819
                } else if (v.value === 'false') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1820
                    obj[t.value] = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1821
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1822
                    error("Bad option value.", v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1823
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1824
                t = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1825
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1826
                if (o === '/*jslint') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1827
                    error("Missing option value.", t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1828
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1829
                obj[t.value] = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1830
                t = v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1831
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1832
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1833
        if (filter) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1834
            assume();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1835
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1836
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1837
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1838
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1839
// We need a peek function. If it has an argument, it peeks that much farther
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1840
// ahead. It is used to distinguish
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1841
//     for ( var i in ...
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1842
// from
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1843
//     for ( var i = ...
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1844
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1845
    function peek(p) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1846
        var i = p || 0, j = 0, t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1847
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1848
        while (j <= i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1849
            t = lookahead[j];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1850
            if (!t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1851
                t = lookahead[j] = lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1852
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1853
            j += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1854
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1855
        return t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1856
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1857
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1858
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1859
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1860
// Produce the next token. It looks for programming errors.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1861
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1862
    function advance(id, t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1863
        switch (token.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1864
        case '(number)':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1865
            if (nexttoken.id === '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1866
                warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1867
"A dot following a number can be confused with a decimal point.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1868
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1869
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1870
        case '-':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1871
            if (nexttoken.id === '-' || nexttoken.id === '--') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1872
                warning("Confusing minusses.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1873
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1874
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1875
        case '+':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1876
            if (nexttoken.id === '+' || nexttoken.id === '++') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1877
                warning("Confusing plusses.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1878
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1879
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1880
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1881
        if (token.type === '(string)' || token.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1882
            anonname = token.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1883
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1884
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1885
        if (id && nexttoken.id !== id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1886
            if (t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1887
                if (nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1888
                    warning("Unmatched '{a}'.", t, t.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1889
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1890
                    warning("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1891
                            nexttoken, id, t.id, t.line, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1892
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1893
            } else if (nexttoken.type !== '(identifier)' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1894
                            nexttoken.value !== id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1895
                warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1896
                        nexttoken, id, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1897
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1898
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1899
        prevtoken = token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1900
        token = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1901
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1902
            nexttoken = lookahead.shift() || lex.token();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1903
            if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1904
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1905
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1906
            if (nexttoken.type === 'special') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1907
                doOption();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1908
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1909
                if (nexttoken.id !== '(endline)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1910
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1911
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1912
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1913
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1914
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1915
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1916
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1917
// This is the heart of JSLINT, the Pratt parser. In addition to parsing, it
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1918
// is looking for ad hoc lint patterns. We add to Pratt's model .fud, which is
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1919
// like nud except that it is only used on the first token of a statement.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1920
// Having .fud makes it much easier to define JavaScript. I retained Pratt's
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1921
// nomenclature.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1922
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1923
// .nud     Null denotation
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1924
// .fud     First null denotation
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1925
// .led     Left denotation
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1926
//  lbp     Left binding power
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1927
//  rbp     Right binding power
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1928
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1929
// They are key to the parsing method called Top Down Operator Precedence.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1930
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1931
    function parse(rbp, initial) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1932
        var left, o;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1933
        if (nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1934
            error("Unexpected early end of program.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1935
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1936
        advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1937
        if (option.safe && typeof predefined[token.value] === 'boolean' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1938
                (nexttoken.id !== '(' && nexttoken.id !== '.')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1939
            warning('ADsafe violation.', token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1940
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1941
        if (initial) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1942
            anonname = 'anonymous';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1943
            funct['(verb)'] = token.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1944
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1945
        if (initial === true && token.fud) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1946
            left = token.fud();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1947
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1948
            if (token.nud) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1949
                o = token.exps;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1950
                left = token.nud();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1951
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1952
                if (nexttoken.type === '(number)' && token.id === '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1953
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1954
"A leading decimal point can be confused with a dot: '.{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1955
                            token, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1956
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1957
                    return token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1958
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1959
                    error("Expected an identifier and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1960
                            token, token.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1961
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1962
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1963
            while (rbp < nexttoken.lbp) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1964
                o = nexttoken.exps;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1965
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1966
                if (token.led) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1967
                    left = token.led(left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1968
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1969
                    error("Expected an operator and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1970
                        token, token.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1971
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1972
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1973
            if (initial && !o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1974
                warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1975
"Expected an assignment or function call and instead saw an expression.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1976
                        token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1977
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1978
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1979
        return left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1980
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1981
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1982
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1983
// Functions for conformance of style.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1984
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1985
    function adjacent(left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1986
        left = left || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1987
        right = right || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1988
        if (option.white || xmode === 'styleproperty' || xmode === 'style') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1989
            if (left.character !== right.from && left.line === right.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1990
                warning("Unexpected space after '{a}'.", right, left.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1991
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1992
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1993
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1994
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1995
    function nospace(left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1996
        left = left || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1997
        right = right || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1998
        if (option.white && !left.comment) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  1999
            if (left.line === right.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2000
                adjacent(left, right);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2001
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2002
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2003
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2004
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2005
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2006
    function nonadjacent(left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2007
        if (option.white) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2008
            left = left || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2009
            right = right || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2010
            if (left.character === right.from) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2011
                warning("Missing space after '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2012
                        nexttoken, left.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2013
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2014
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2015
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2016
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2017
    function nobreaknonadjacent(left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2018
        left = left || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2019
        right = right || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2020
        if (!option.laxbreak && left.line !== right.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2021
            warning("Bad line breaking before '{a}'.", right, right.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2022
        } else if (option.white) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2023
            left = left || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2024
            right = right || nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2025
            if (left.character === right.from) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2026
                warning("Missing space after '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2027
                        nexttoken, left.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2028
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2029
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2030
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2031
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2032
    function indentation(bias) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2033
        var i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2034
        if (option.white && nexttoken.id !== '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2035
            i = indent + (bias || 0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2036
            if (nexttoken.from !== i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2037
                warning("Expected '{a}' to have an indentation at {b} instead at {c}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2038
                        nexttoken, nexttoken.value, i, nexttoken.from);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2039
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2040
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2041
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2042
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2043
    function nolinebreak(t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2044
        t = t || token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2045
        if (t.line !== nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2046
            warning("Line breaking error '{a}'.", t, t.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2047
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2048
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2049
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2050
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2051
    function comma() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2052
        if (token.line !== nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2053
            if (!option.laxbreak) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2054
                warning("Bad line breaking before '{a}'.", token, nexttoken.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2055
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2056
        } else if (token.character !== nexttoken.from && option.white) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2057
            warning("Unexpected space after '{a}'.", nexttoken, token.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2058
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2059
        advance(',');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2060
        nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2061
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2062
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2063
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2064
// Functional constructors for making the symbols that will be inherited by
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2065
// tokens.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2066
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2067
    function symbol(s, p) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2068
        var x = syntax[s];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2069
        if (!x || typeof x !== 'object') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2070
            syntax[s] = x = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2071
                id: s,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2072
                lbp: p,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2073
                value: s
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2074
            };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2075
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2076
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2077
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2078
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2079
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2080
    function delim(s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2081
        return symbol(s, 0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2082
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2083
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2084
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2085
    function stmt(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2086
        var x = delim(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2087
        x.identifier = x.reserved = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2088
        x.fud = f;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2089
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2090
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2091
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2092
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2093
    function blockstmt(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2094
        var x = stmt(s, f);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2095
        x.block = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2096
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2097
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2098
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2099
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2100
    function reserveName(x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2101
        var c = x.id.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2102
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2103
            x.identifier = x.reserved = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2104
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2105
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2106
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2107
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2108
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2109
    function prefix(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2110
        var x = symbol(s, 150);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2111
        reserveName(x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2112
        x.nud = (typeof f === 'function') ? f : function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2113
            this.right = parse(150);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2114
            this.arity = 'unary';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2115
            if (this.id === '++' || this.id === '--') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2116
                if (option.plusplus) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2117
                    warning("Unexpected use of '{a}'.", this, this.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2118
                } else if ((!this.right.identifier || this.right.reserved) &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2119
                        this.right.id !== '.' && this.right.id !== '[') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2120
                    warning("Bad operand.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2121
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2122
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2123
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2124
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2125
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2126
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2127
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2128
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2129
    function type(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2130
        var x = delim(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2131
        x.type = s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2132
        x.nud = f;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2133
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2134
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2135
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2136
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2137
    function reserve(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2138
        var x = type(s, f);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2139
        x.identifier = x.reserved = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2140
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2141
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2142
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2143
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2144
    function reservevar(s, v) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2145
        return reserve(s, function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2146
            if (option.safe &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2147
                    (this.id === 'this' || this.id === 'arguments')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2148
                warning("ADsafe violation.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2149
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2150
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2151
        });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2152
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2153
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2154
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2155
    function infix(s, f, p, w) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2156
        var x = symbol(s, p);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2157
        reserveName(x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2158
        x.led = function (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2159
            if (!w) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2160
                nobreaknonadjacent(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2161
                nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2162
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2163
            if (typeof f === 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2164
                return f(left, this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2165
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2166
                this.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2167
                this.right = parse(p);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2168
                return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2169
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2170
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2171
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2172
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2173
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2174
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2175
    function relation(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2176
        var x = symbol(s, 100);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2177
        x.led = function (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2178
            nobreaknonadjacent(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2179
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2180
            var right = parse(100);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2181
            if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2182
                warning("Use the isNaN function to compare with NaN.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2183
            } else if (f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2184
                f.apply(this, [left, right]);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2185
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2186
            this.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2187
            this.right = right;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2188
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2189
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2190
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2191
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2192
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2193
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2194
    function isPoorRelation(node) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2195
        return (node.type === '(number)' && !+node.value) ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2196
               (node.type === '(string)' && !node.value) ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2197
                node.type === 'true' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2198
                node.type === 'false' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2199
                node.type === 'undefined' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2200
                node.type === 'null';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2201
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2202
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2203
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2204
    function assignop(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2205
        symbol(s, 20).exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2206
        return infix(s, function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2207
            var l;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2208
            that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2209
            if (predefined[left.value] === false &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2210
                    scope[left.value]['(global)'] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2211
                warning('Read only.', left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2212
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2213
            if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2214
                l = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2215
                do {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2216
                    if (typeof predefined[l.value] === 'boolean') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2217
                        warning('ADsafe violation.', l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2218
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2219
                    l = l.left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2220
                } while (l);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2221
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2222
            if (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2223
                if (left.id === '.' || left.id === '[') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2224
                    if (left.left.value === 'arguments') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2225
                        warning('Bad assignment.', that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2226
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2227
                    that.right = parse(19);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2228
                    return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2229
                } else if (left.identifier && !left.reserved) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2230
                    if (funct[left.value] === 'exception') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2231
                        warning("Do not assign to the exception parameter.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2232
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2233
                    that.right = parse(19);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2234
                    return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2235
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2236
                if (left === syntax['function']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2237
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2238
"Expected an identifier in an assignment and instead saw a function invocation.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2239
                                token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2240
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2241
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2242
            error("Bad assignment.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2243
        }, 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2244
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2245
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2246
    function bitwise(s, f, p) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2247
        var x = symbol(s, p);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2248
        reserveName(x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2249
        x.led = (typeof f === 'function') ? f : function (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2250
            if (option.bitwise) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2251
                warning("Unexpected use of '{a}'.", this, this.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2252
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2253
            this.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2254
            this.right = parse(p);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2255
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2256
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2257
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2258
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2259
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2260
    function bitwiseassignop(s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2261
        symbol(s, 20).exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2262
        return infix(s, function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2263
            if (option.bitwise) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2264
                warning("Unexpected use of '{a}'.", that, that.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2265
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2266
            nonadjacent(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2267
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2268
            if (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2269
                if (left.id === '.' || left.id === '[' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2270
                        (left.identifier && !left.reserved)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2271
                    parse(19);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2272
                    return left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2273
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2274
                if (left === syntax['function']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2275
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2276
"Expected an identifier in an assignment, and instead saw a function invocation.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2277
                                token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2278
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2279
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2280
            error("Bad assignment.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2281
        }, 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2282
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2283
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2284
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2285
    function suffix(s, f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2286
        var x = symbol(s, 150);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2287
        x.led = function (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2288
            if (option.plusplus) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2289
                warning("Unexpected use of '{a}'.", this, this.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2290
            } else if ((!left.identifier || left.reserved) && left.id !== '.' && left.id !== '[') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2291
                warning("Bad operand.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2292
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2293
            this.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2294
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2295
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2296
        return x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2297
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2298
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2299
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2300
    function optionalidentifier() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2301
        if (nexttoken.reserved) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2302
            warning("Expected an identifier and instead saw '{a}' (a reserved word).",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2303
                    nexttoken, nexttoken.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2304
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2305
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2306
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2307
            return token.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2308
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2309
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2310
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2311
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2312
    function identifier() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2313
        var i = optionalidentifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2314
        if (i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2315
            return i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2316
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2317
        if (token.id === 'function' && nexttoken.id === '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2318
            warning("Missing name in function statement.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2319
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2320
            error("Expected an identifier and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2321
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2322
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2323
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2324
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2325
    function reachable(s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2326
        var i = 0, t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2327
        if (nexttoken.id !== ';' || noreach) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2328
            return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2329
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2330
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2331
            t = peek(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2332
            if (t.reach) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2333
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2334
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2335
            if (t.id !== '(endline)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2336
                if (t.id === 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2337
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2338
"Inner functions should be listed at the top of the outer function.", t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2339
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2340
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2341
                warning("Unreachable '{a}' after '{b}'.", t, t.value, s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2342
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2343
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2344
            i += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2345
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2346
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2347
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2348
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2349
    function statement(noindent) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2350
        var i = indent, r, s = scope, t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2351
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2352
// We don't like the empty statement.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2353
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2354
        if (t.id === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2355
            warning("Unnecessary semicolon.", t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2356
            advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2357
            return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2358
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2359
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2360
// Is this a labelled statement?
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2361
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2362
        if (t.identifier && !t.reserved && peek().id === ':') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2363
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2364
            advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2365
            scope = Object.create(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2366
            addlabel(t.value, 'label');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2367
            if (!nexttoken.labelled) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2368
                warning("Label '{a}' on {b} statement.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2369
                        nexttoken, t.value, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2370
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2371
            if (jx.test(t.value + ':')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2372
                warning("Label '{a}' looks like a javascript url.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2373
                        t, t.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2374
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2375
            nexttoken.label = t.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2376
            t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2377
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2378
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2379
// Parse the statement.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2380
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2381
        if (!noindent) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2382
            indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2383
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2384
        r = parse(0, true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2385
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2386
// Look for the final semicolon.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2387
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2388
        if (!t.block) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2389
            if (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2390
                warningAt("Missing semicolon.", token.line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2391
                        token.from + token.value.length);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2392
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2393
                adjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2394
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2395
                nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2396
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2397
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2398
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2399
// Restore the indentation.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2400
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2401
        indent = i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2402
        scope = s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2403
        return r;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2404
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2405
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2406
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2407
    function use_strict() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2408
        if (nexttoken.value === 'use strict') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2409
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2410
            advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2411
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2412
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2413
            return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2414
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2415
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2416
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2417
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2418
    function statements(begin) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2419
        var a = [], f, p;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2420
        if (begin && !use_strict() && option.strict) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2421
            warning('Missing "use strict" statement.', nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2422
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2423
        if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2424
            switch (begin) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2425
            case 'script':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2426
                if (!adsafe_may) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2427
                    if (nexttoken.value !== 'ADSAFE' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2428
                            peek(0).id !== '.' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2429
                            (peek(1).value !== 'id' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2430
                            peek(1).value !== 'go')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2431
                        error('ADsafe violation: Missing ADSAFE.id or ADSAFE.go.',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2432
                            nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2433
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2434
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2435
                if (nexttoken.value === 'ADSAFE' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2436
                        peek(0).id === '.' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2437
                        peek(1).value === 'id') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2438
                    if (adsafe_may) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2439
                        error('ADsafe violation.', nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2440
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2441
                    advance('ADSAFE');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2442
                    advance('.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2443
                    advance('id');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2444
                    advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2445
                    if (nexttoken.value !== adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2446
                        error('ADsafe violation: id does not match.', nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2447
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2448
                    advance('(string)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2449
                    advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2450
                    advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2451
                    adsafe_may = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2452
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2453
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2454
            case 'lib':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2455
                if (nexttoken.value === 'ADSAFE') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2456
                    advance('ADSAFE');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2457
                    advance('.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2458
                    advance('lib');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2459
                    advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2460
                    advance('(string)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2461
                    comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2462
                    f = parse(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2463
                    if (f.id !== 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2464
                        error('The second argument to lib must be a function.', f);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2465
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2466
                    p = f.funct['(params)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2467
                    p = p && p.join(', ');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2468
                    if (p && p !== 'lib') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2469
                        error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2470
                            f, '(lib)', '(' + p + ')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2471
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2472
                    advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2473
                    advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2474
                    return a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2475
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2476
                    error("ADsafe lib violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2477
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2478
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2479
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2480
        while (!nexttoken.reach && nexttoken.id !== '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2481
            if (nexttoken.id === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2482
                warning("Unnecessary semicolon.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2483
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2484
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2485
                a.push(statement());
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2486
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2487
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2488
        return a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2489
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2490
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2491
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2492
    function block(f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2493
        var a, b = inblock, s = scope, t;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2494
        inblock = f;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2495
        if (f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2496
            scope = Object.create(scope);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2497
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2498
        nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2499
        t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2500
        if (nexttoken.id === '{') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2501
            advance('{');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2502
            if (nexttoken.id !== '}' || token.line !== nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2503
                indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2504
                if (!f && nexttoken.from === indent + option.indent) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2505
                    indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2506
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2507
                if (!f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2508
                    use_strict();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2509
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2510
                a = statements();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2511
                indent -= option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2512
                indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2513
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2514
            advance('}', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2515
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2516
            warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2517
                    nexttoken, '{', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2518
            noreach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2519
            a = [statement()];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2520
            noreach = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2521
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2522
        funct['(verb)'] = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2523
        scope = s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2524
        inblock = b;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2525
        return a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2526
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2527
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2528
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2529
// An identity function, used by string and number tokens.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2530
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2531
    function idValue() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2532
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2533
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2534
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2535
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2536
    function countMember(m) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2537
        if (membersOnly && typeof membersOnly[m] !== 'boolean') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2538
            warning("Unexpected /*member '{a}'.", token, m);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2539
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2540
        if (typeof member[m] === 'number') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2541
            member[m] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2542
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2543
            member[m] = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2544
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2545
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2546
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2547
    function note_implied(token) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2548
        var name = token.value, line = token.line, a = implied[name];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2549
        if (typeof a === 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2550
            a = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2551
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2552
        if (!a) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2553
            a = [line];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2554
            implied[name] = a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2555
        } else if (a[a.length - 1] !== line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2556
            a.push(line);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2557
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2558
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2559
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2560
// CSS parsing.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2561
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2562
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2563
    function cssName() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2564
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2565
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2566
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2567
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2568
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2569
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2570
    function cssNumber() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2571
        if (nexttoken.id === '-') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2572
            advance('-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2573
            adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2574
            nolinebreak();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2575
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2576
        if (nexttoken.type === '(number)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2577
            advance('(number)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2578
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2579
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2580
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2581
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2582
    function cssString() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2583
        if (nexttoken.type === '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2584
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2585
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2586
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2587
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2588
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2589
    function cssColor() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2590
        var i, number;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2591
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2592
            if (nexttoken.value === 'rgb') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2593
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2594
                advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2595
                for (i = 0; i < 3; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2596
                    number = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2597
                    if (nexttoken.type !== '(number)' || number < 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2598
                        warning("Expected a positive number and instead saw '{a}'",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2599
                            nexttoken, number);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2600
                        advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2601
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2602
                        advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2603
                        if (nexttoken.id === '%') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2604
                            advance('%');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2605
                            if (number > 100) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2606
                                warning("Expected a percentage and instead saw '{a}'",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2607
                                    token, number);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2608
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2609
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2610
                            if (number > 255) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2611
                                warning("Expected a small number and instead saw '{a}'",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2612
                                    token, number);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2613
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2614
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2615
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2616
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2617
                advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2618
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2619
            } else if (cssColorData[nexttoken.value] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2620
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2621
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2622
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2623
        } else if (nexttoken.type === '(color)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2624
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2625
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2626
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2627
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2628
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2629
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2630
    function cssLength() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2631
        if (nexttoken.id === '-') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2632
            advance('-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2633
            adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2634
            nolinebreak();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2635
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2636
        if (nexttoken.type === '(number)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2637
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2638
            if (nexttoken.type !== '(string)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2639
                    cssLengthData[nexttoken.value] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2640
                adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2641
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2642
            } else if (+token.value !== 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2643
                warning("Expected a linear unit and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2644
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2645
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2646
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2647
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2648
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2649
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2650
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2651
    function cssLineHeight() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2652
        if (nexttoken.id === '-') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2653
            advance('-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2654
            adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2655
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2656
        if (nexttoken.type === '(number)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2657
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2658
            if (nexttoken.type !== '(string)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2659
                    cssLengthData[nexttoken.value] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2660
                adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2661
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2662
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2663
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2664
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2665
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2666
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2667
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2668
    function cssWidth() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2669
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2670
            switch (nexttoken.value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2671
            case 'thin':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2672
            case 'medium':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2673
            case 'thick':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2674
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2675
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2676
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2677
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2678
            return cssLength();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2679
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2680
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2681
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2682
    function cssMargin() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2683
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2684
            if (nexttoken.value === 'auto') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2685
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2686
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2687
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2688
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2689
            return cssLength();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2690
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2691
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2692
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2693
    function cssAttr() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2694
        if (nexttoken.identifier && nexttoken.value === 'attr') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2695
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2696
            advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2697
            if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2698
                warning("Expected a name and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2699
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2700
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2701
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2702
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2703
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2704
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2705
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2706
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2707
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2708
    function cssCommaList() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2709
        while (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2710
            if (!cssName() && !cssString()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2711
                warning("Expected a name and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2712
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2713
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2714
            if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2715
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2716
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2717
            comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2718
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2719
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2720
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2721
    function cssCounter() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2722
        if (nexttoken.identifier && nexttoken.value === 'counter') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2723
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2724
            advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2725
            if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2726
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2727
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2728
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2729
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2730
                if (nexttoken.type !== '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2731
                    warning("Expected a string and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2732
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2733
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2734
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2735
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2736
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2737
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2738
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2739
        if (nexttoken.identifier && nexttoken.value === 'counters') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2740
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2741
            advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2742
            if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2743
                warning("Expected a name and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2744
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2745
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2746
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2747
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2748
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2749
                if (nexttoken.type !== '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2750
                    warning("Expected a string and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2751
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2752
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2753
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2754
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2755
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2756
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2757
                if (nexttoken.type !== '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2758
                    warning("Expected a string and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2759
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2760
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2761
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2762
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2763
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2764
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2765
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2766
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2767
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2768
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2769
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2770
    function cssShape() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2771
        var i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2772
        if (nexttoken.identifier && nexttoken.value === 'rect') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2773
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2774
            advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2775
            for (i = 0; i < 4; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2776
                if (!cssLength()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2777
                    warning("Expected a number and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2778
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2779
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2780
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2781
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2782
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2783
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2784
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2785
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2786
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2787
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2788
    function cssUrl() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2789
        var c, url;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2790
        if (nexttoken.identifier && nexttoken.value === 'url') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2791
            nexttoken = lex.range('(', ')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2792
            url = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2793
            c = url.charAt(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2794
            if (c === '"' || c === '\'') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2795
                if (url.slice(-1) !== c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2796
                    warning("Bad url string.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2797
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2798
                    url = url.slice(1, -1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2799
                    if (url.indexOf(c) >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2800
                        warning("Bad url string.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2801
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2802
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2803
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2804
            if (!url) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2805
                warning("Missing url.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2806
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2807
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2808
            if (option.safe && ux.test(url)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2809
                error("ADsafe URL violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2810
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2811
            urls.push(url);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2812
            return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2813
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2814
        return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2815
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2816
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2817
    cssAny = [cssUrl, function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2818
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2819
            if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2820
                switch (nexttoken.value.toLowerCase()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2821
                case 'url':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2822
                    cssUrl();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2823
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2824
                case 'expression':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2825
                    warning("Unexpected expression '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2826
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2827
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2828
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2829
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2830
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2831
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2832
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2833
                if (nexttoken.id === ';' || nexttoken.id === '!'  ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2834
                        nexttoken.id === '(end)' || nexttoken.id === '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2835
                    return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2836
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2837
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2838
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2839
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2840
    }];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2841
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2842
    cssBorderStyle = [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2843
        'none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'ridge',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2844
        'inset', 'outset'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2845
    ];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2846
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2847
    cssBreak = [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2848
        'auto', 'always', 'avoid', 'left', 'right'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2849
    ];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2850
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2851
    cssOverflow = [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2852
        'auto', 'hidden', 'scroll', 'visible'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2853
    ];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2854
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2855
    cssAttributeData = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2856
        background: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2857
            true, 'background-attachment', 'background-color',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2858
            'background-image', 'background-position', 'background-repeat'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2859
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2860
        'background-attachment': ['scroll', 'fixed'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2861
        'background-color': ['transparent', cssColor],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2862
        'background-image': ['none', cssUrl],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2863
        'background-position': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2864
            2, [cssLength, 'top', 'bottom', 'left', 'right', 'center']
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2865
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2866
        'background-repeat': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2867
            'repeat', 'repeat-x', 'repeat-y', 'no-repeat'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2868
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2869
        'border': [true, 'border-color', 'border-style', 'border-width'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2870
        'border-bottom': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2871
            true, 'border-bottom-color', 'border-bottom-style',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2872
            'border-bottom-width'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2873
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2874
        'border-bottom-color': cssColor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2875
        'border-bottom-style': cssBorderStyle,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2876
        'border-bottom-width': cssWidth,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2877
        'border-collapse': ['collapse', 'separate'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2878
        'border-color': ['transparent', 4, cssColor],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2879
        'border-left': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2880
            true, 'border-left-color', 'border-left-style', 'border-left-width'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2881
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2882
        'border-left-color': cssColor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2883
        'border-left-style': cssBorderStyle,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2884
        'border-left-width': cssWidth,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2885
        'border-right': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2886
            true, 'border-right-color', 'border-right-style',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2887
            'border-right-width'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2888
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2889
        'border-right-color': cssColor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2890
        'border-right-style': cssBorderStyle,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2891
        'border-right-width': cssWidth,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2892
        'border-spacing': [2, cssLength],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2893
        'border-style': [4, cssBorderStyle],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2894
        'border-top': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2895
            true, 'border-top-color', 'border-top-style', 'border-top-width'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2896
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2897
        'border-top-color': cssColor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2898
        'border-top-style': cssBorderStyle,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2899
        'border-top-width': cssWidth,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2900
        'border-width': [4, cssWidth],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2901
        bottom: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2902
        'caption-side' : ['bottom', 'left', 'right', 'top'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2903
        clear: ['both', 'left', 'none', 'right'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2904
        clip: [cssShape, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2905
        color: cssColor,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2906
        content: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2907
            'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2908
            cssString, cssUrl, cssCounter, cssAttr
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2909
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2910
        'counter-increment': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2911
            cssName, 'none'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2912
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2913
        'counter-reset': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2914
            cssName, 'none'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2915
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2916
        cursor: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2917
            cssUrl, 'auto', 'crosshair', 'default', 'e-resize', 'help', 'move',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2918
            'n-resize', 'ne-resize', 'nw-resize', 'pointer', 's-resize',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2919
            'se-resize', 'sw-resize', 'w-resize', 'text', 'wait'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2920
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2921
        direction: ['ltr', 'rtl'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2922
        display: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2923
            'block', 'compact', 'inline', 'inline-block', 'inline-table',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2924
            'list-item', 'marker', 'none', 'run-in', 'table', 'table-caption',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2925
            'table-cell', 'table-column', 'table-column-group',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2926
            'table-footer-group', 'table-header-group', 'table-row',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2927
            'table-row-group'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2928
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2929
        'empty-cells': ['show', 'hide'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2930
        'float': ['left', 'none', 'right'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2931
        font: [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2932
            'caption', 'icon', 'menu', 'message-box', 'small-caption',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2933
            'status-bar', true, 'font-size', 'font-style', 'font-weight',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2934
            'font-family'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2935
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2936
        'font-family': cssCommaList,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2937
        'font-size': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2938
            'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2939
            'xx-large', 'larger', 'smaller', cssLength
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2940
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2941
        'font-size-adjust': ['none', cssNumber],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2942
        'font-stretch': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2943
            'normal', 'wider', 'narrower', 'ultra-condensed',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2944
            'extra-condensed', 'condensed', 'semi-condensed',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2945
            'semi-expanded', 'expanded', 'extra-expanded'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2946
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2947
        'font-style': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2948
            'normal', 'italic', 'oblique'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2949
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2950
        'font-variant': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2951
            'normal', 'small-caps'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2952
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2953
        'font-weight': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2954
            'normal', 'bold', 'bolder', 'lighter', cssNumber
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2955
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2956
        height: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2957
        left: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2958
        'letter-spacing': ['normal', cssLength],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2959
        'line-height': ['normal', cssLineHeight],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2960
        'list-style': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2961
            true, 'list-style-image', 'list-style-position', 'list-style-type'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2962
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2963
        'list-style-image': ['none', cssUrl],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2964
        'list-style-position': ['inside', 'outside'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2965
        'list-style-type': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2966
            'circle', 'disc', 'square', 'decimal', 'decimal-leading-zero',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2967
            'lower-roman', 'upper-roman', 'lower-greek', 'lower-alpha',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2968
            'lower-latin', 'upper-alpha', 'upper-latin', 'hebrew', 'katakana',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2969
            'hiragana-iroha', 'katakana-oroha', 'none'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2970
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2971
        margin: [4, cssMargin],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2972
        'margin-bottom': cssMargin,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2973
        'margin-left': cssMargin,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2974
        'margin-right': cssMargin,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2975
        'margin-top': cssMargin,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2976
        'marker-offset': [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2977
        'max-height': [cssLength, 'none'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2978
        'max-width': [cssLength, 'none'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2979
        'min-height': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2980
        'min-width': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2981
        opacity: cssNumber,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2982
        outline: [true, 'outline-color', 'outline-style', 'outline-width'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2983
        'outline-color': ['invert', cssColor],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2984
        'outline-style': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2985
            'dashed', 'dotted', 'double', 'groove', 'inset', 'none',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2986
            'outset', 'ridge', 'solid'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2987
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2988
        'outline-width': cssWidth,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2989
        overflow: cssOverflow,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2990
        'overflow-x': cssOverflow,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2991
        'overflow-y': cssOverflow,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2992
        padding: [4, cssLength],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2993
        'padding-bottom': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2994
        'padding-left': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2995
        'padding-right': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2996
        'padding-top': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2997
        'page-break-after': cssBreak,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2998
        'page-break-before': cssBreak,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  2999
        position: ['absolute', 'fixed', 'relative', 'static'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3000
        quotes: [8, cssString],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3001
        right: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3002
        'table-layout': ['auto', 'fixed'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3003
        'text-align': ['center', 'justify', 'left', 'right'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3004
        'text-decoration': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3005
            'none', 'underline', 'overline', 'line-through', 'blink'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3006
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3007
        'text-indent': cssLength,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3008
        'text-shadow': ['none', 4, [cssColor, cssLength]],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3009
        'text-transform': ['capitalize', 'uppercase', 'lowercase', 'none'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3010
        top: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3011
        'unicode-bidi': ['normal', 'embed', 'bidi-override'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3012
        'vertical-align': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3013
            'baseline', 'bottom', 'sub', 'super', 'top', 'text-top', 'middle',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3014
            'text-bottom', cssLength
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3015
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3016
        visibility: ['visible', 'hidden', 'collapse'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3017
        'white-space': [
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3018
            'normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'inherit'
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3019
        ],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3020
        width: [cssLength, 'auto'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3021
        'word-spacing': ['normal', cssLength],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3022
        'word-wrap': ['break-word', 'normal'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3023
        'z-index': ['auto', cssNumber]
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3024
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3025
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3026
    function styleAttribute() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3027
        var v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3028
        while (nexttoken.id === '*' || nexttoken.id === '#' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3029
                nexttoken.value === '_') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3030
            if (!option.css) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3031
                warning("Unexpected '{a}'.", nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3032
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3033
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3034
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3035
        if (nexttoken.id === '-') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3036
            if (!option.css) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3037
                warning("Unexpected '{a}'.", nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3038
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3039
            advance('-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3040
            if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3041
                warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3042
"Expected a non-standard style attribute and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3043
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3044
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3045
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3046
            return cssAny;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3047
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3048
            if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3049
                warning("Excepted a style attribute, and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3050
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3051
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3052
                if (is_own(cssAttributeData, nexttoken.value)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3053
                    v = cssAttributeData[nexttoken.value];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3054
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3055
                    v = cssAny;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3056
                    if (!option.css) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3057
                        warning("Unrecognized style attribute '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3058
                                nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3059
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3060
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3061
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3062
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3063
            return v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3064
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3065
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3066
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3067
    function styleValue(v) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3068
        var i = 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3069
            n,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3070
            once,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3071
            match,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3072
            round,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3073
            start = 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3074
            vi;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3075
        switch (typeof v) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3076
        case 'function':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3077
            return v();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3078
        case 'string':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3079
            if (nexttoken.identifier && nexttoken.value === v) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3080
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3081
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3082
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3083
            return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3084
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3085
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3086
            if (i >= v.length) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3087
                return false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3088
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3089
            vi = v[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3090
            i += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3091
            if (vi === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3092
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3093
            } else if (typeof vi === 'number') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3094
                n = vi;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3095
                vi = v[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3096
                i += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3097
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3098
                n = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3099
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3100
            match = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3101
            while (n > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3102
                if (styleValue(vi)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3103
                    match = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3104
                    n -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3105
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3106
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3107
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3108
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3109
            if (match) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3110
                return true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3111
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3112
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3113
        start = i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3114
        once = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3115
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3116
            round = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3117
            for (i = start; i < v.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3118
                if (!once[i]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3119
                    if (styleValue(cssAttributeData[v[i]])) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3120
                        match = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3121
                        round = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3122
                        once[i] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3123
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3124
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3125
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3126
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3127
            if (!round) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3128
                return match;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3129
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3130
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3131
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3132
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3133
    function styleChild() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3134
        if (nexttoken.id === '(number)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3135
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3136
            if (nexttoken.value === 'n' && nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3137
                adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3138
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3139
                if (nexttoken.id === '+') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3140
                    adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3141
                    advance('+');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3142
                    adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3143
                    advance('(number)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3144
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3145
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3146
            return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3147
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3148
            switch (nexttoken.value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3149
            case 'odd':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3150
            case 'even':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3151
                if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3152
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3153
                    return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3154
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3155
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3156
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3157
        warning("Unexpected token '{a}'.", nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3158
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3159
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3160
    function substyle() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3161
        var v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3162
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3163
            if (nexttoken.id === '}' || nexttoken.id === '(end)' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3164
                    xquote && nexttoken.id === xquote) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3165
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3166
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3167
            while (nexttoken.id === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3168
                warning("Misplaced ';'.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3169
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3170
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3171
            v = styleAttribute();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3172
            advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3173
            if (nexttoken.identifier && nexttoken.value === 'inherit') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3174
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3175
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3176
                if (!styleValue(v)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3177
                    warning("Unexpected token '{a}'.", nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3178
                        nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3179
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3180
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3181
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3182
            if (nexttoken.id === '!') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3183
                advance('!');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3184
                adjacent();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3185
                if (nexttoken.identifier && nexttoken.value === 'important') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3186
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3187
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3188
                    warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3189
                        nexttoken, 'important', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3190
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3191
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3192
            if (nexttoken.id === '}' || nexttoken.id === xquote) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3193
                warning("Missing '{a}'.", nexttoken, ';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3194
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3195
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3196
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3197
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3198
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3199
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3200
    function styleSelector() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3201
        if (nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3202
            if (!is_own(htmltag, nexttoken.value)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3203
                warning("Expected a tagName, and instead saw {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3204
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3205
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3206
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3207
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3208
            switch (nexttoken.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3209
            case '>':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3210
            case '+':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3211
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3212
                styleSelector();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3213
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3214
            case ':':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3215
                advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3216
                switch (nexttoken.value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3217
                case 'active':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3218
                case 'after':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3219
                case 'before':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3220
                case 'checked':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3221
                case 'disabled':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3222
                case 'empty':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3223
                case 'enabled':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3224
                case 'first-child':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3225
                case 'first-letter':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3226
                case 'first-line':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3227
                case 'first-of-type':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3228
                case 'focus ':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3229
                case 'hover':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3230
                case 'last-of-type':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3231
                case 'link':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3232
                case 'only-of-type':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3233
                case 'root':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3234
                case 'target':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3235
                case 'visited':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3236
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3237
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3238
                case 'lang':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3239
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3240
                    advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3241
                    if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3242
                        warning("Expected a lang code, and instead saw :{a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3243
                            nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3244
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3245
                    advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3246
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3247
                case 'nth-child':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3248
                case 'nth-last-child':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3249
                case 'nth-last-of-type':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3250
                case 'nth-of-type':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3251
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3252
                    advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3253
                    styleChild();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3254
                    advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3255
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3256
                case 'not':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3257
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3258
                    advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3259
                    if (nexttoken.id === ':' && peek(0).value === 'not') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3260
                        warning("Nested not.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3261
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3262
                    styleSelector();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3263
                    advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3264
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3265
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3266
                    warning("Expected a pseudo, and instead saw :{a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3267
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3268
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3269
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3270
            case '#':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3271
                advance('#');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3272
                if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3273
                    warning("Expected an id, and instead saw #{a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3274
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3275
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3276
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3277
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3278
            case '*':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3279
                advance('*');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3280
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3281
            case '.':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3282
                advance('.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3283
                if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3284
                    warning("Expected a class, and instead saw #.{a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3285
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3286
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3287
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3288
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3289
            case '[':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3290
                advance('[');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3291
                if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3292
                    warning("Expected an attribute, and instead saw [{a}].",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3293
                        nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3294
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3295
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3296
                if (nexttoken.id === '=' || nexttoken.value === '~=' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3297
                        nexttoken.value === '$=' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3298
                        nexttoken.value === '|=' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3299
                        nexttoken.id === '*=' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3300
                        nexttoken.id === '^=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3301
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3302
                    if (nexttoken.type !== '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3303
                        warning("Expected a string, and instead saw {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3304
                            nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3305
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3306
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3307
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3308
                advance(']');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3309
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3310
            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3311
                error("Expected a CSS selector, and instead saw {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3312
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3313
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3314
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3315
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3316
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3317
    function stylePattern() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3318
        var name;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3319
        if (nexttoken.id === '{') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3320
            warning("Expected a style pattern, and instead saw '{a}'.", nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3321
                nexttoken.id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3322
        } else if (nexttoken.id === '@') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3323
            advance('@');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3324
            name = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3325
            if (nexttoken.identifier && atrule[name] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3326
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3327
                return name;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3328
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3329
            warning("Expected an at-rule, and instead saw @{a}.", nexttoken, name);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3330
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3331
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3332
            styleSelector();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3333
            if (nexttoken.id === '</' || nexttoken.id === '{' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3334
                    nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3335
                return '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3336
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3337
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3338
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3339
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3340
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3341
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3342
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3343
    function styles() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3344
        var i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3345
        while (nexttoken.id === '@') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3346
            i = peek();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3347
            if (i.identifier && i.value === 'import') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3348
                advance('@');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3349
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3350
                if (!cssUrl()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3351
                    warning("Expected '{a}' and instead saw '{b}'.", nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3352
                        'url', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3353
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3354
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3355
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3356
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3357
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3358
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3359
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3360
        while (nexttoken.id !== '</' && nexttoken.id !== '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3361
            stylePattern();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3362
            xmode = 'styleproperty';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3363
            if (nexttoken.id === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3364
                advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3365
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3366
                advance('{');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3367
                substyle();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3368
                xmode = 'style';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3369
                advance('}');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3370
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3371
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3372
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3373
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3374
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3375
// HTML parsing.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3376
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3377
    function doBegin(n) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3378
        if (n !== 'html' && !option.fragment) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3379
            if (n === 'div' && option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3380
                error("ADSAFE: Use the fragment option.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3381
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3382
                error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3383
                    token, 'html', n);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3384
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3385
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3386
        if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3387
            if (n === 'html') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3388
                error(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3389
"Currently, ADsafe does not operate on whole HTML documents. It operates on <div> fragments and .js files.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3390
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3391
            if (option.fragment) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3392
                if (n !== 'div') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3393
                    error("ADsafe violation: Wrap the widget in a div.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3394
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3395
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3396
                error("Use the fragment option.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3397
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3398
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3399
        option.browser = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3400
        assume();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3401
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3402
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3403
    function doAttribute(n, a, v) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3404
        var u, x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3405
        if (a === 'id') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3406
            u = typeof v === 'string' ? v.toUpperCase() : '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3407
            if (ids[u] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3408
                warning("Duplicate id='{a}'.", nexttoken, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3409
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3410
            if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3411
                if (adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3412
                    if (v.slice(0, adsafe_id.length) !== adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3413
                        warning("ADsafe violation: An id must have a '{a}' prefix",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3414
                                nexttoken, adsafe_id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3415
                    } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3416
                        warning("ADSAFE violation: bad id.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3417
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3418
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3419
                    adsafe_id = v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3420
                    if (!/^[A-Z]+_$/.test(v)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3421
                        warning("ADSAFE violation: bad id.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3422
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3423
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3424
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3425
            x = v.search(dx);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3426
            if (x >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3427
                warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3428
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3429
            ids[u] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3430
        } else if (a === 'class' || a === 'type' || a === 'name') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3431
            x = v.search(qx);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3432
            if (x >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3433
                warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3434
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3435
            ids[u] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3436
        } else if (a === 'href' || a === 'background' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3437
                a === 'content' || a === 'data' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3438
                a.indexOf('src') >= 0 || a.indexOf('url') >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3439
            if (option.safe && ux.test(v)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3440
                error("ADsafe URL violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3441
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3442
            urls.push(v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3443
        } else if (a === 'for') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3444
            if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3445
                if (adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3446
                    if (v.slice(0, adsafe_id.length) !== adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3447
                        warning("ADsafe violation: An id must have a '{a}' prefix",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3448
                                nexttoken, adsafe_id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3449
                    } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3450
                        warning("ADSAFE violation: bad id.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3451
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3452
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3453
                    warning("ADSAFE violation: bad id.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3454
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3455
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3456
        } else if (a === 'name') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3457
            if (option.adsafe && v.indexOf('_') >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3458
                warning("ADsafe name violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3459
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3460
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3461
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3462
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3463
    function doTag(n, a) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3464
        var i, t = htmltag[n], x;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3465
        src = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3466
        if (!t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3467
            error("Unrecognized tag '<{a}>'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3468
                    nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3469
                    n === n.toLowerCase() ? n :
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3470
                        n + ' (capitalization error)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3471
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3472
        if (stack.length > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3473
            if (n === 'html') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3474
                error("Too many <html> tags.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3475
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3476
            x = t.parent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3477
            if (x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3478
                if (x.indexOf(' ' + stack[stack.length - 1].name + ' ') < 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3479
                    error("A '<{a}>' must be within '<{b}>'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3480
                            token, n, x);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3481
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3482
            } else if (!option.adsafe && !option.fragment) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3483
                i = stack.length;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3484
                do {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3485
                    if (i <= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3486
                        error("A '<{a}>' must be within '<{b}>'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3487
                                token, n, 'body');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3488
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3489
                    i -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3490
                } while (stack[i].name !== 'body');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3491
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3492
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3493
        switch (n) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3494
        case 'div':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3495
            if (option.adsafe && stack.length === 1 && !adsafe_id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3496
                warning("ADSAFE violation: missing ID_.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3497
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3498
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3499
        case 'script':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3500
            xmode = 'script';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3501
            advance('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3502
            indent = nexttoken.from;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3503
            if (a.lang) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3504
                warning("lang is deprecated.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3505
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3506
            if (option.adsafe && stack.length !== 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3507
                warning("ADsafe script placement violation.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3508
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3509
            if (a.src) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3510
                if (option.adsafe && (!adsafe_may || !approved[a.src])) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3511
                    warning("ADsafe unapproved script source.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3512
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3513
                if (a.type) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3514
                    warning("type is unnecessary.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3515
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3516
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3517
                if (adsafe_went) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3518
                    error("ADsafe script violation.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3519
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3520
                statements('script');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3521
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3522
            xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3523
            advance('</');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3524
            if (!nexttoken.identifier && nexttoken.value !== 'script') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3525
                warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3526
                        nexttoken, 'script', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3527
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3528
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3529
            xmode = 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3530
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3531
        case 'style':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3532
            xmode = 'style';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3533
            advance('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3534
            styles();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3535
            xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3536
            advance('</');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3537
            if (!nexttoken.identifier && nexttoken.value !== 'style') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3538
                warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3539
                        nexttoken, 'style', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3540
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3541
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3542
            xmode = 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3543
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3544
        case 'input':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3545
            switch (a.type) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3546
            case 'radio':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3547
            case 'checkbox':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3548
            case 'button':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3549
            case 'reset':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3550
            case 'submit':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3551
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3552
            case 'text':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3553
            case 'file':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3554
            case 'password':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3555
            case 'file':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3556
            case 'hidden':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3557
            case 'image':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3558
                if (option.adsafe && a.autocomplete !== 'off') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3559
                    warning("ADsafe autocomplete violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3560
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3561
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3562
            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3563
                warning("Bad input type.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3564
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3565
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3566
        case 'applet':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3567
        case 'body':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3568
        case 'embed':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3569
        case 'frame':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3570
        case 'frameset':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3571
        case 'head':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3572
        case 'iframe':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3573
        case 'noembed':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3574
        case 'noframes':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3575
        case 'object':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3576
        case 'param':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3577
            if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3578
                warning("ADsafe violation: Disallowed tag: " + n);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3579
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3580
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3581
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3582
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3583
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3584
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3585
    function closetag(n) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3586
        return '</' + n + '>';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3587
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3588
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3589
    function html() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3590
        var a, attributes, e, n, q, t, v, w = option.white, wmode;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3591
        xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3592
        xquote = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3593
        stack = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3594
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3595
            switch (nexttoken.value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3596
            case '<':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3597
                xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3598
                advance('<');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3599
                attributes = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3600
                t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3601
                if (!t.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3602
                    warning("Bad identifier {a}.", t, t.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3603
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3604
                n = t.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3605
                if (option.cap) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3606
                    n = n.toLowerCase();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3607
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3608
                t.name = n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3609
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3610
                if (!stack) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3611
                    stack = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3612
                    doBegin(n);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3613
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3614
                v = htmltag[n];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3615
                if (typeof v !== 'object') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3616
                    error("Unrecognized tag '<{a}>'.", t, n);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3617
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3618
                e = v.empty;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3619
                t.type = n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3620
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3621
                    if (nexttoken.id === '/') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3622
                        advance('/');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3623
                        if (nexttoken.id !== '>') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3624
                            warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3625
                                    nexttoken, '>', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3626
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3627
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3628
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3629
                    if (nexttoken.id && nexttoken.id.substr(0, 1) === '>') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3630
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3631
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3632
                    if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3633
                        if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3634
                            error("Missing '>'.", nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3635
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3636
                        warning("Bad identifier.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3637
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3638
                    option.white = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3639
                    nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3640
                    a = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3641
                    option.white = w;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3642
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3643
                    if (!option.cap && a !== a.toLowerCase()) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3644
                        warning("Attribute '{a}' not all lower case.", nexttoken, a);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3645
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3646
                    a = a.toLowerCase();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3647
                    xquote = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3648
                    if (is_own(attributes, a)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3649
                        warning("Attribute '{a}' repeated.", nexttoken, a);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3650
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3651
                    if (a.slice(0, 2) === 'on') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3652
                        if (!option.on) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3653
                            warning("Avoid HTML event handlers.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3654
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3655
                        xmode = 'scriptstring';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3656
                        advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3657
                        q = nexttoken.id;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3658
                        if (q !== '"' && q !== "'") {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3659
                            error("Missing quote.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3660
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3661
                        xquote = q;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3662
                        wmode = option.white;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3663
                        option.white = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3664
                        advance(q);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3665
                        statements('on');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3666
                        option.white = wmode;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3667
                        if (nexttoken.id !== q) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3668
                            error("Missing close quote on script attribute.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3669
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3670
                        xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3671
                        xquote = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3672
                        advance(q);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3673
                        v = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3674
                    } else if (a === 'style') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3675
                        xmode = 'scriptstring';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3676
                        advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3677
                        q = nexttoken.id;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3678
                        if (q !== '"' && q !== "'") {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3679
                            error("Missing quote.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3680
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3681
                        xmode = 'styleproperty';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3682
                        xquote = q;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3683
                        advance(q);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3684
                        substyle();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3685
                        xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3686
                        xquote = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3687
                        advance(q);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3688
                        v = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3689
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3690
                        if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3691
                            advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3692
                            v = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3693
                            if (!nexttoken.identifier &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3694
                                    nexttoken.id !== '"' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3695
                                    nexttoken.id !== '\'' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3696
                                    nexttoken.type !== '(string)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3697
                                    nexttoken.type !== '(number)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3698
                                    nexttoken.type !== '(color)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3699
                                warning("Expected an attribute value and instead saw '{a}'.", token, a);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3700
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3701
                            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3702
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3703
                            v = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3704
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3705
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3706
                    attributes[a] = v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3707
                    doAttribute(n, a, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3708
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3709
                doTag(n, attributes);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3710
                if (!e) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3711
                    stack.push(t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3712
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3713
                xmode = 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3714
                advance('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3715
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3716
            case '</':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3717
                xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3718
                advance('</');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3719
                if (!nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3720
                    warning("Bad identifier.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3721
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3722
                n = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3723
                if (option.cap) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3724
                    n = n.toLowerCase();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3725
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3726
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3727
                if (!stack) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3728
                    error("Unexpected '{a}'.", nexttoken, closetag(n));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3729
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3730
                t = stack.pop();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3731
                if (!t) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3732
                    error("Unexpected '{a}'.", nexttoken, closetag(n));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3733
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3734
                if (t.name !== n) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3735
                    error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3736
                            nexttoken, closetag(t.name), closetag(n));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3737
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3738
                if (nexttoken.id !== '>') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3739
                    error("Missing '{a}'.", nexttoken, '>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3740
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3741
                xmode = 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3742
                advance('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3743
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3744
            case '<!':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3745
                if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3746
                    warning("ADsafe HTML violation.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3747
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3748
                xmode = 'html';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3749
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3750
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3751
                    if (nexttoken.id === '>' || nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3752
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3753
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3754
                    if (nexttoken.value.indexOf('--') >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3755
                        warning("Unexpected --.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3756
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3757
                    if (nexttoken.value.indexOf('<') >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3758
                        warning("Unexpected <.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3759
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3760
                    if (nexttoken.value.indexOf('>') >= 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3761
                        warning("Unexpected >.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3762
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3763
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3764
                xmode = 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3765
                advance('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3766
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3767
            case '(end)':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3768
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3769
            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3770
                if (nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3771
                    error("Missing '{a}'.", nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3772
                            '</' + stack[stack.length - 1].value + '>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3773
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3774
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3775
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3776
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3777
            if (stack && stack.length === 0 && (option.adsafe ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3778
                    !option.fragment || nexttoken.id === '(end)')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3779
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3780
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3781
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3782
        if (nexttoken.id !== '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3783
            error("Unexpected material after the end.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3784
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3785
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3786
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3787
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3788
// Build the syntax table by declaring the syntactic elements of the language.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3789
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3790
    type('(number)', idValue);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3791
    type('(string)', idValue);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3792
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3793
    syntax['(identifier)'] = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3794
        type: '(identifier)',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3795
        lbp: 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3796
        identifier: true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3797
        nud: function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3798
            var v = this.value,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3799
                s = scope[v],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3800
                f;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3801
            if (typeof s === 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3802
                s = undefined;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3803
            } else if (typeof s === 'boolean') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3804
                f = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3805
                funct = functions[0];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3806
                addlabel(v, 'var');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3807
                s = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3808
                funct = f;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3809
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3810
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3811
// The name is in scope and defined in the current function.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3812
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3813
            if (funct === s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3814
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3815
//      Change 'unused' to 'var', and reject labels.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3816
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3817
                switch (funct[v]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3818
                case 'unused':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3819
                    funct[v] = 'var';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3820
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3821
                case 'label':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3822
                    warning("'{a}' is a statement label.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3823
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3824
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3825
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3826
// The name is not defined in the function.  If we are in the global scope,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3827
// then we have an undefined variable.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3828
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3829
            } else if (funct['(global)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3830
                if (option.undef && predefined[v] !== 'boolean') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3831
                    warning("'{a}' is not defined.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3832
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3833
                note_implied(token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3834
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3835
// If the name is already defined in the current
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3836
// function, but not as outer, then there is a scope error.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3837
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3838
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3839
                switch (funct[v]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3840
                case 'closure':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3841
                case 'function':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3842
                case 'var':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3843
                case 'unused':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3844
                    warning("'{a}' used out of scope.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3845
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3846
                case 'label':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3847
                    warning("'{a}' is a statement label.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3848
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3849
                case 'outer':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3850
                case 'global':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3851
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3852
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3853
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3854
// If the name is defined in an outer function, make an outer entry, and if
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3855
// it was unused, make it var.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3856
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3857
                    if (s === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3858
                        funct[v] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3859
                    } else if (typeof s !== 'object') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3860
                        if (option.undef) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3861
                            warning("'{a}' is not defined.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3862
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3863
                            funct[v] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3864
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3865
                        note_implied(token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3866
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3867
                        switch (s[v]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3868
                        case 'function':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3869
                        case 'var':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3870
                        case 'unused':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3871
                            s[v] = 'closure';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3872
                            funct[v] = s['(global)'] ? 'global' : 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3873
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3874
                        case 'closure':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3875
                        case 'parameter':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3876
                            funct[v] = s['(global)'] ? 'global' : 'outer';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3877
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3878
                        case 'label':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3879
                            warning("'{a}' is a statement label.", token, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3880
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3881
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3882
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3883
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3884
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3885
        },
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3886
        led: function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3887
            error("Expected an operator and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3888
                    nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3889
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3890
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3891
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3892
    type('(regexp)', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3893
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3894
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3895
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3896
    delim('(endline)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3897
    delim('(begin)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3898
    delim('(end)').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3899
    delim('</').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3900
    delim('<!');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3901
    delim('<!--');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3902
    delim('-->');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3903
    delim('(error)').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3904
    delim('}').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3905
    delim(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3906
    delim(']');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3907
    delim('"').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3908
    delim("'").reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3909
    delim(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3910
    delim(':').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3911
    delim(',');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3912
    delim('#');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3913
    delim('@');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3914
    reserve('else');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3915
    reserve('case').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3916
    reserve('catch');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3917
    reserve('default').reach = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3918
    reserve('finally');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3919
    reservevar('arguments');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3920
    reservevar('eval');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3921
    reservevar('false');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3922
    reservevar('Infinity');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3923
    reservevar('NaN');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3924
    reservevar('null');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3925
    reservevar('this');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3926
    reservevar('true');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3927
    reservevar('undefined');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3928
    assignop('=', 'assign', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3929
    assignop('+=', 'assignadd', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3930
    assignop('-=', 'assignsub', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3931
    assignop('*=', 'assignmult', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3932
    assignop('/=', 'assigndiv', 20).nud = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3933
        error("A regular expression literal can be confused with '/='.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3934
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3935
    assignop('%=', 'assignmod', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3936
    bitwiseassignop('&=', 'assignbitand', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3937
    bitwiseassignop('|=', 'assignbitor', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3938
    bitwiseassignop('^=', 'assignbitxor', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3939
    bitwiseassignop('<<=', 'assignshiftleft', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3940
    bitwiseassignop('>>=', 'assignshiftright', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3941
    bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3942
    infix('?', function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3943
        that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3944
        that.right = parse(10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3945
        advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3946
        that['else'] = parse(10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3947
        return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3948
    }, 30);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3949
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3950
    infix('||', 'or', 40);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3951
    infix('&&', 'and', 50);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3952
    bitwise('|', 'bitor', 70);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3953
    bitwise('^', 'bitxor', 80);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3954
    bitwise('&', 'bitand', 90);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3955
    relation('==', function (left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3956
        if (option.eqeqeq) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3957
            warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3958
                    this, '===', '==');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3959
        } else if (isPoorRelation(left)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3960
            warning("Use '{a}' to compare with '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3961
                this, '===', left.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3962
        } else if (isPoorRelation(right)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3963
            warning("Use '{a}' to compare with '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3964
                this, '===', right.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3965
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3966
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3967
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3968
    relation('===');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3969
    relation('!=', function (left, right) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3970
        if (option.eqeqeq) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3971
            warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3972
                    this, '!==', '!=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3973
        } else if (isPoorRelation(left)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3974
            warning("Use '{a}' to compare with '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3975
                    this, '!==', left.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3976
        } else if (isPoorRelation(right)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3977
            warning("Use '{a}' to compare with '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3978
                    this, '!==', right.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3979
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3980
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3981
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3982
    relation('!==');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3983
    relation('<');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3984
    relation('>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3985
    relation('<=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3986
    relation('>=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3987
    bitwise('<<', 'shiftleft', 120);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3988
    bitwise('>>', 'shiftright', 120);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3989
    bitwise('>>>', 'shiftrightunsigned', 120);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3990
    infix('in', 'in', 120);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3991
    infix('instanceof', 'instanceof', 120);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3992
    infix('+', function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3993
        var right = parse(130);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3994
        if (left && right && left.id === '(string)' && right.id === '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3995
            left.value += right.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3996
            left.character = right.character;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3997
            if (jx.test(left.value)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3998
                warning("JavaScript URL.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  3999
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4000
            return left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4001
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4002
        that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4003
        that.right = right;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4004
        return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4005
    }, 130);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4006
    prefix('+', 'num');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4007
    infix('-', 'sub', 130);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4008
    prefix('-', 'neg');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4009
    infix('*', 'mult', 140);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4010
    infix('/', 'div', 140);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4011
    infix('%', 'mod', 140);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4012
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4013
    suffix('++', 'postinc');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4014
    prefix('++', 'preinc');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4015
    syntax['++'].exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4016
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4017
    suffix('--', 'postdec');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4018
    prefix('--', 'predec');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4019
    syntax['--'].exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4020
    prefix('delete', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4021
        var p = parse(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4022
        if (!p || (p.id !== '.' && p.id !== '[')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4023
            warning("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4024
                    nexttoken, '.', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4025
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4026
    }).exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4027
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4028
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4029
    prefix('~', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4030
        if (option.bitwise) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4031
            warning("Unexpected '{a}'.", this, '~');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4032
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4033
        parse(150);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4034
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4035
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4036
    prefix('!', 'not');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4037
    prefix('typeof', 'typeof');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4038
    prefix('new', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4039
        var c = parse(155), i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4040
        if (c && c.id !== 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4041
            if (c.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4042
                c['new'] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4043
                switch (c.value) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4044
                case 'Object':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4045
                    warning("Use the object literal notation {}.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4046
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4047
                case 'Array':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4048
                    if (nexttoken.id !== '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4049
                        warning("Use the array literal notation [].", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4050
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4051
                        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4052
                        if (nexttoken.id === ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4053
                            warning("Use the array literal notation [].", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4054
                        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4055
                            i = parse(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4056
                            c.dimension = i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4057
                            if ((i.id === '(number)' && /[.+\-Ee]/.test(i.value)) ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4058
                                    (i.id === '-' && !i.right) ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4059
                                    i.id === '(string)' || i.id === '[' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4060
                                    i.id === '{' || i.id === 'true' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4061
                                    i.id === 'false' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4062
                                    i.id === 'null' || i.id === 'undefined' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4063
                                    i.id === 'Infinity') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4064
                                warning("Use the array literal notation [].", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4065
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4066
                            if (nexttoken.id !== ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4067
                                error("Use the array literal notation [].", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4068
                            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4069
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4070
                        advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4071
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4072
                    this.first = c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4073
                    return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4074
                case 'Number':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4075
                case 'String':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4076
                case 'Boolean':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4077
                case 'Math':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4078
                case 'JSON':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4079
                    warning("Do not use {a} as a constructor.", token, c.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4080
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4081
                case 'Function':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4082
                    if (!option.evil) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4083
                        warning("The Function constructor is eval.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4084
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4085
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4086
                case 'Date':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4087
                case 'RegExp':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4088
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4089
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4090
                    if (c.id !== 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4091
                        i = c.value.substr(0, 1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4092
                        if (option.newcap && (i < 'A' || i > 'Z')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4093
                            warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4094
                    "A constructor name should start with an uppercase letter.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4095
                                token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4096
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4097
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4098
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4099
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4100
                if (c.id !== '.' && c.id !== '[' && c.id !== '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4101
                    warning("Bad constructor.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4102
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4103
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4104
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4105
            warning("Weird construction. Delete 'new'.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4106
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4107
        adjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4108
        if (nexttoken.id !== '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4109
            warning("Missing '()' invoking a constructor.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4110
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4111
        this.first = c;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4112
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4113
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4114
    syntax['new'].exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4115
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4116
    infix('.', function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4117
        adjacent(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4118
        var m = identifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4119
        if (typeof m === 'string') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4120
            countMember(m);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4121
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4122
        that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4123
        that.right = m;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4124
        if (!option.evil && left && left.value === 'document' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4125
                (m === 'write' || m === 'writeln')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4126
            warning("document.write can be a form of eval.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4127
        } else if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4128
            if (left && left.value === 'ADSAFE') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4129
                if (m === 'id' || m === 'lib') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4130
                    warning("ADsafe violation.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4131
                } else if (m === 'go') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4132
                    if (xmode !== 'script') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4133
                        warning("ADsafe violation.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4134
                    } else if (adsafe_went || nexttoken.id !== '(' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4135
                            peek(0).id !== '(string)' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4136
                            peek(0).value !== adsafe_id ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4137
                            peek(1).id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4138
                        error("ADsafe violation: go.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4139
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4140
                    adsafe_went = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4141
                    adsafe_may = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4142
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4143
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4144
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4145
        if (!option.evil && (m === 'eval' || m === 'execScript')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4146
            warning('eval is evil.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4147
        } else if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4148
            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4149
                if (banned[m] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4150
                    warning("ADsafe restricted word '{a}'.", token, m);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4151
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4152
                if (typeof predefined[left.value] !== 'boolean' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4153
                        nexttoken.id === '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4154
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4155
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4156
                if (standard_member[m] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4157
                    if (nexttoken.id === '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4158
                        warning("ADsafe violation.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4159
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4160
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4161
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4162
                if (nexttoken.id !== '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4163
                    warning("ADsafe violation.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4164
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4165
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4166
                advance('.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4167
                token.left = that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4168
                token.right = m;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4169
                that = token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4170
                m = identifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4171
                if (typeof m === 'string') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4172
                    countMember(m);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4173
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4174
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4175
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4176
        return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4177
    }, 160, true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4178
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4179
    infix('(', function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4180
        adjacent(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4181
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4182
        var n = 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4183
            p = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4184
        if (left) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4185
            if (left.type === '(identifier)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4186
                if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4187
                    if (left.value !== 'Number' && left.value !== 'String' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4188
                            left.value !== 'Boolean' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4189
                            left.value !== 'Date') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4190
                        if (left.value === 'Math') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4191
                            warning("Math is not a function.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4192
                        } else if (option.newcap) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4193
                            warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4194
"Missing 'new' prefix when invoking a constructor.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4195
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4196
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4197
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4198
            } else if (left.id === '.') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4199
                if (option.safe && left.left.value === 'Math' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4200
                        left.right === 'random') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4201
                    warning("ADsafe violation.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4202
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4203
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4204
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4205
        if (nexttoken.id !== ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4206
            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4207
                p[p.length] = parse(10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4208
                n += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4209
                if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4210
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4211
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4212
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4213
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4214
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4215
        advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4216
        if (option.immed && left.id === 'function' && nexttoken.id !== ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4217
            warning("Wrap the entire immediate function invocation in parens.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4218
                that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4219
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4220
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4221
        if (typeof left === 'object') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4222
            if (left.value === 'parseInt' && n === 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4223
                warning("Missing radix parameter.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4224
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4225
            if (!option.evil) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4226
                if (left.value === 'eval' || left.value === 'Function' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4227
                        left.value === 'execScript') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4228
                    warning("eval is evil.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4229
                } else if (p[0] && p[0].id === '(string)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4230
                       (left.value === 'setTimeout' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4231
                        left.value === 'setInterval')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4232
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4233
    "Implied eval is evil. Pass a function instead of a string.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4234
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4235
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4236
            if (!left.identifier && left.id !== '.' && left.id !== '[' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4237
                    left.id !== '(' && left.id !== '&&' && left.id !== '||' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4238
                    left.id !== '?') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4239
                warning("Bad invocation.", left);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4240
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4241
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4242
        that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4243
        return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4244
    }, 155, true).exps = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4245
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4246
    prefix('(', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4247
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4248
        var v = parse(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4249
        advance(')', this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4250
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4251
        if (option.immed && v.id === 'function') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4252
            if (nexttoken.id === '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4253
                warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4254
"Move the invocation into the parens that contain the function.", nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4255
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4256
                warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4257
"Do not wrap function literals in parens unless they are to be immediately invoked.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4258
                        this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4259
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4260
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4261
        return v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4262
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4263
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4264
    infix('[', function (left, that) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4265
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4266
        var e = parse(0), s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4267
        if (e && e.type === '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4268
            if (option.safe && banned[e.value] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4269
                warning("ADsafe restricted word '{a}'.", that, e.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4270
            } else if (!option.evil &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4271
                    (e.value === 'eval' || e.value === 'execScript')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4272
                warning("eval is evil.", that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4273
            } else if (option.safe &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4274
                    (e.value.charAt(0) === '_' || e.value.charAt(0) === '-')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4275
                warning("ADsafe restricted subscript '{a}'.", that, e.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4276
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4277
            countMember(e.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4278
            if (!option.sub && ix.test(e.value)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4279
                s = syntax[e.value];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4280
                if (!s || !s.reserved) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4281
                    warning("['{a}'] is better written in dot notation.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4282
                            e, e.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4283
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4284
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4285
        } else if (!e || e.type !== '(number)' || e.value < 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4286
            if (option.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4287
                warning('ADsafe subscripting.');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4288
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4289
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4290
        advance(']', that);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4291
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4292
        that.left = left;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4293
        that.right = e;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4294
        return that;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4295
    }, 160, true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4296
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4297
    prefix('[', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4298
        this.first = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4299
        if (nexttoken.id === ']') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4300
            advance(']');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4301
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4302
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4303
        var b = token.line !== nexttoken.line;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4304
        if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4305
            indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4306
            if (nexttoken.from === indent + option.indent) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4307
                indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4308
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4309
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4310
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4311
            if (b && token.line !== nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4312
                indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4313
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4314
            parse(10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4315
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4316
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4317
                if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4318
                    warning("Extra comma.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4319
                } else if (nexttoken.id === ']') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4320
                    warning("Extra comma.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4321
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4322
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4323
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4324
                if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4325
                    indent -= option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4326
                    indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4327
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4328
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4329
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4330
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4331
        advance(']', this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4332
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4333
    }, 160);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4334
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4335
    (function (x) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4336
        x.nud = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4337
            var b, i, s, seen = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4338
            b = token.line !== nexttoken.line;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4339
            if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4340
                indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4341
                if (nexttoken.from === indent + option.indent) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4342
                    indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4343
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4344
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4345
            for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4346
                if (nexttoken.id === '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4347
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4348
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4349
                if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4350
                    indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4351
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4352
                i = optionalidentifier(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4353
                if (!i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4354
                    if (nexttoken.id === '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4355
                        i = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4356
                        if (ix.test(i)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4357
                            s = syntax[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4358
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4359
                        advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4360
                    } else if (nexttoken.id === '(number)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4361
                        i = nexttoken.value.toString();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4362
                        advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4363
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4364
                        error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4365
                                nexttoken, '}', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4366
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4367
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4368
                if (seen[i] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4369
                    warning("Duplicate member '{a}'.", nexttoken, i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4370
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4371
                seen[i] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4372
                countMember(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4373
                advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4374
                nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4375
                parse(10);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4376
                if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4377
                    comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4378
                    if (nexttoken.id === ',' || nexttoken.id === '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4379
                        warning("Extra comma.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4380
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4381
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4382
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4383
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4384
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4385
            if (b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4386
                indent -= option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4387
                indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4388
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4389
            advance('}', this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4390
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4391
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4392
        x.fud = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4393
            error("Expected to see a statement and instead saw a block.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4394
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4395
    }(delim('{')));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4396
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4397
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4398
    function varstatement(prefix) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4399
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4400
// JavaScript does not have block scope. It only has function scope. So,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4401
// declaring a variable in a block can have unexpected consequences.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4402
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4403
        var id, name, value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4404
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4405
        if (funct['(onevar)'] && option.onevar) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4406
            warning("Too many var statements.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4407
        } else if (!funct['(global)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4408
            funct['(onevar)'] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4409
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4410
        this.first = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4411
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4412
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4413
            id = identifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4414
            if (funct['(global)'] && predefined[id] === false) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4415
                warning("Redefinition of '{a}'.", token, id);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4416
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4417
            addlabel(id, 'unused');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4418
            if (prefix) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4419
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4420
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4421
            name = token;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4422
            this.first.push(token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4423
            if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4424
                nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4425
                advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4426
                nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4427
                if (peek(0).id === '=' && nexttoken.identifier) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4428
                    error("Variable {a} was not declared correctly.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4429
                            nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4430
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4431
                value = parse(0);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4432
                name.first = value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4433
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4434
            if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4435
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4436
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4437
            comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4438
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4439
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4440
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4441
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4442
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4443
    stmt('var', varstatement);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4444
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4445
    stmt('new', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4446
        warning("'new' should not be used as a statement.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4447
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4448
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4449
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4450
    function functionparams() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4451
        var i, t = nexttoken, p = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4452
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4453
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4454
        if (nexttoken.id === ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4455
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4456
            nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4457
            return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4458
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4459
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4460
            i = identifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4461
            p.push(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4462
            addlabel(i, 'parameter');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4463
            if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4464
                comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4465
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4466
                advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4467
                nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4468
                return p;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4469
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4470
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4471
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4472
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4473
    function doFunction(i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4474
        var s = scope;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4475
        scope = Object.create(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4476
        funct = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4477
            '(name)'    : i || '"' + anonname + '"',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4478
            '(line)'    : nexttoken.line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4479
            '(context)' : funct,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4480
            '(breakage)': 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4481
            '(loopage)' : 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4482
            '(scope)'   : scope
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4483
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4484
        token.funct = funct;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4485
        functions.push(funct);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4486
        if (i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4487
            addlabel(i, 'function');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4488
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4489
        funct['(params)'] = functionparams();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4490
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4491
        block(false);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4492
        scope = s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4493
        funct['(last)'] = token.line;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4494
        funct = funct['(context)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4495
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4496
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4497
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4498
    blockstmt('function', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4499
        if (inblock) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4500
            warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4501
"Function statements cannot be placed in blocks. Use a function expression or move the statement to the top of the outer function.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4502
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4503
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4504
        var i = identifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4505
        adjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4506
        addlabel(i, 'unused');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4507
        doFunction(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4508
        if (nexttoken.id === '(' && nexttoken.line === token.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4509
            error(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4510
"Function statements are not invocable. Wrap the whole function invocation in parens.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4511
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4512
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4513
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4514
    prefix('function', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4515
        var i = optionalidentifier();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4516
        if (i) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4517
            adjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4518
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4519
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4520
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4521
        doFunction(i);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4522
        if (funct['(loopage)'] && nexttoken.id !== '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4523
            warning("Be careful when making functions within a loop. Consider putting the function in a closure.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4524
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4525
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4526
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4527
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4528
    blockstmt('if', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4529
        var t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4530
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4531
        nonadjacent(this, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4532
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4533
        parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4534
        if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4535
            warning("Expected a conditional expression and instead saw an assignment.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4536
            advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4537
            parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4538
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4539
        advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4540
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4541
        block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4542
        if (nexttoken.id === 'else') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4543
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4544
            advance('else');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4545
            if (nexttoken.id === 'if' || nexttoken.id === 'switch') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4546
                statement(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4547
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4548
                block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4549
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4550
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4551
        return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4552
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4553
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4554
    blockstmt('try', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4555
        var b, e, s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4556
        if (option.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4557
            warning("ADsafe try violation.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4558
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4559
        block(false);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4560
        if (nexttoken.id === 'catch') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4561
            advance('catch');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4562
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4563
            advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4564
            s = scope;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4565
            scope = Object.create(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4566
            e = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4567
            if (nexttoken.type !== '(identifier)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4568
                warning("Expected an identifier and instead saw '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4569
                    nexttoken, e);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4570
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4571
                addlabel(e, 'exception');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4572
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4573
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4574
            advance(')');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4575
            block(false);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4576
            b = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4577
            scope = s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4578
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4579
        if (nexttoken.id === 'finally') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4580
            advance('finally');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4581
            block(false);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4582
            return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4583
        } else if (!b) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4584
            error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4585
                    nexttoken, 'catch', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4586
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4587
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4588
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4589
    blockstmt('while', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4590
        var t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4591
        funct['(breakage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4592
        funct['(loopage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4593
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4594
        nonadjacent(this, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4595
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4596
        parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4597
        if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4598
            warning("Expected a conditional expression and instead saw an assignment.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4599
            advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4600
            parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4601
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4602
        advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4603
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4604
        block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4605
        funct['(breakage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4606
        funct['(loopage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4607
    }).labelled = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4608
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4609
    reserve('with');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4610
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4611
    blockstmt('switch', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4612
        var t = nexttoken,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4613
            g = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4614
        funct['(breakage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4615
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4616
        nonadjacent(this, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4617
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4618
        this.condition = parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4619
        advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4620
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4621
        nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4622
        t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4623
        advance('{');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4624
        nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4625
        indent += option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4626
        this.cases = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4627
        for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4628
            switch (nexttoken.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4629
            case 'case':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4630
                switch (funct['(verb)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4631
                case 'break':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4632
                case 'case':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4633
                case 'continue':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4634
                case 'return':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4635
                case 'switch':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4636
                case 'throw':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4637
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4638
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4639
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4640
                        "Expected a 'break' statement before 'case'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4641
                        token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4642
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4643
                indentation(-option.indent);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4644
                advance('case');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4645
                this.cases.push(parse(20));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4646
                g = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4647
                advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4648
                funct['(verb)'] = 'case';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4649
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4650
            case 'default':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4651
                switch (funct['(verb)']) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4652
                case 'break':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4653
                case 'continue':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4654
                case 'return':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4655
                case 'throw':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4656
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4657
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4658
                    warning(
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4659
                        "Expected a 'break' statement before 'default'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4660
                        token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4661
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4662
                indentation(-option.indent);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4663
                advance('default');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4664
                g = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4665
                advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4666
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4667
            case '}':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4668
                indent -= option.indent;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4669
                indentation();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4670
                advance('}', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4671
                if (this.cases.length === 1 || this.condition.id === 'true' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4672
                        this.condition.id === 'false') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4673
                    warning("This 'switch' should be an 'if'.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4674
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4675
                funct['(breakage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4676
                funct['(verb)'] = undefined;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4677
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4678
            case '(end)':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4679
                error("Missing '{a}'.", nexttoken, '}');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4680
                return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4681
            default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4682
                if (g) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4683
                    switch (token.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4684
                    case ',':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4685
                        error("Each value should have its own case label.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4686
                        return;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4687
                    case ':':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4688
                        statements();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4689
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4690
                    default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4691
                        error("Missing ':' on a case clause.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4692
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4693
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4694
                    error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4695
                        nexttoken, 'case', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4696
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4697
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4698
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4699
    }).labelled = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4700
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4701
    stmt('debugger', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4702
        if (!option.debug) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4703
            warning("All 'debugger' statements should be removed.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4704
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4705
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4706
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4707
    stmt('do', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4708
        funct['(breakage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4709
        funct['(loopage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4710
        block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4711
        advance('while');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4712
        var t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4713
        nonadjacent(token, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4714
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4715
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4716
        parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4717
        if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4718
            warning("Expected a conditional expression and instead saw an assignment.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4719
            advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4720
            parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4721
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4722
        advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4723
        nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4724
        funct['(breakage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4725
        funct['(loopage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4726
    }).labelled = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4727
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4728
    blockstmt('for', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4729
        var s, t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4730
        funct['(breakage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4731
        funct['(loopage)'] += 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4732
        advance('(');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4733
        nonadjacent(this, t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4734
        nospace();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4735
        if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4736
            if (nexttoken.id === 'var') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4737
                advance('var');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4738
                varstatement(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4739
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4740
                switch (funct[nexttoken.value]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4741
                case 'unused':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4742
                    funct[nexttoken.value] = 'var';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4743
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4744
                case 'var':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4745
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4746
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4747
                    warning("Bad for in variable '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4748
                            nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4749
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4750
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4751
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4752
            advance('in');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4753
            parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4754
            advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4755
            s = block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4756
            if (!option.forin && (s.length > 1 || typeof s[0] !== 'object' ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4757
                    s[0].value !== 'if')) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4758
                warning("The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4759
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4760
            funct['(breakage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4761
            funct['(loopage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4762
            return this;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4763
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4764
            if (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4765
                if (nexttoken.id === 'var') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4766
                    advance('var');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4767
                    varstatement();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4768
                } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4769
                    for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4770
                        parse(0, 'for');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4771
                        if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4772
                            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4773
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4774
                        comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4775
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4776
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4777
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4778
            nolinebreak(token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4779
            advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4780
            if (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4781
                parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4782
                if (nexttoken.id === '=') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4783
                    warning("Expected a conditional expression and instead saw an assignment.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4784
                    advance('=');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4785
                    parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4786
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4787
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4788
            nolinebreak(token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4789
            advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4790
            if (nexttoken.id === ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4791
                error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4792
                        nexttoken, ')', ';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4793
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4794
            if (nexttoken.id !== ')') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4795
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4796
                    parse(0, 'for');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4797
                    if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4798
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4799
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4800
                    comma();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4801
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4802
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4803
            advance(')', t);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4804
            nospace(prevtoken, token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4805
            block(true);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4806
            funct['(breakage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4807
            funct['(loopage)'] -= 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4808
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4809
    }).labelled = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4810
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4811
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4812
    stmt('break', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4813
        var v = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4814
        if (funct['(breakage)'] === 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4815
            warning("Unexpected '{a}'.", nexttoken, this.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4816
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4817
        nolinebreak(this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4818
        if (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4819
            if (token.line === nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4820
                if (funct[v] !== 'label') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4821
                    warning("'{a}' is not a statement label.", nexttoken, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4822
                } else if (scope[v] !== funct) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4823
                    warning("'{a}' is out of scope.", nexttoken, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4824
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4825
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4826
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4827
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4828
        reachable('break');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4829
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4830
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4831
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4832
    stmt('continue', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4833
        var v = nexttoken.value;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4834
        if (funct['(breakage)'] === 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4835
            warning("Unexpected '{a}'.", nexttoken, this.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4836
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4837
        nolinebreak(this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4838
        if (nexttoken.id !== ';') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4839
            if (token.line === nexttoken.line) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4840
                if (funct[v] !== 'label') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4841
                    warning("'{a}' is not a statement label.", nexttoken, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4842
                } else if (scope[v] !== funct) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4843
                    warning("'{a}' is out of scope.", nexttoken, v);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4844
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4845
                advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4846
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4847
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4848
        reachable('continue');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4849
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4850
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4851
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4852
    stmt('return', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4853
        nolinebreak(this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4854
        if (nexttoken.id === '(regexp)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4855
            warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4856
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4857
        if (nexttoken.id !== ';' && !nexttoken.reach) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4858
            nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4859
            parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4860
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4861
        reachable('return');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4862
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4863
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4864
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4865
    stmt('throw', function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4866
        nolinebreak(this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4867
        nonadjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4868
        parse(20);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4869
        reachable('throw');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4870
    });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4871
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4872
    reserve('void');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4873
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4874
//  Superfluous reserved words
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4875
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4876
    reserve('class');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4877
    reserve('const');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4878
    reserve('enum');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4879
    reserve('export');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4880
    reserve('extends');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4881
    reserve('import');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4882
    reserve('super');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4883
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4884
    reserve('let');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4885
    reserve('yield');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4886
    reserve('implements');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4887
    reserve('interface');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4888
    reserve('package');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4889
    reserve('private');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4890
    reserve('protected');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4891
    reserve('public');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4892
    reserve('static');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4893
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4894
    function jsonValue() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4895
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4896
        function jsonObject() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4897
            var o = {}, t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4898
            advance('{');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4899
            if (nexttoken.id !== '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4900
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4901
                    if (nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4902
                        error("Missing '}' to match '{' from line {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4903
                                nexttoken, t.line);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4904
                    } else if (nexttoken.id === '}') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4905
                        warning("Unexpected comma.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4906
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4907
                    } else if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4908
                        error("Unexpected comma.", nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4909
                    } else if (nexttoken.id !== '(string)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4910
                        warning("Expected a string and instead saw {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4911
                                nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4912
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4913
                    if (o[nexttoken.value] === true) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4914
                        warning("Duplicate key '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4915
                                nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4916
                    } else if (nexttoken.value === '__proto__') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4917
                        warning("Stupid key '{a}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4918
                                nexttoken, nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4919
                    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4920
                        o[nexttoken.value] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4921
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4922
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4923
                    advance(':');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4924
                    jsonValue();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4925
                    if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4926
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4927
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4928
                    advance(',');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4929
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4930
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4931
            advance('}');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4932
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4933
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4934
        function jsonArray() {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4935
            var t = nexttoken;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4936
            advance('[');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4937
            if (nexttoken.id !== ']') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4938
                for (;;) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4939
                    if (nexttoken.id === '(end)') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4940
                        error("Missing ']' to match '[' from line {a}.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4941
                                nexttoken, t.line);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4942
                    } else if (nexttoken.id === ']') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4943
                        warning("Unexpected comma.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4944
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4945
                    } else if (nexttoken.id === ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4946
                        error("Unexpected comma.", nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4947
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4948
                    jsonValue();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4949
                    if (nexttoken.id !== ',') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4950
                        break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4951
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4952
                    advance(',');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4953
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4954
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4955
            advance(']');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4956
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4957
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4958
        switch (nexttoken.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4959
        case '{':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4960
            jsonObject();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4961
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4962
        case '[':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4963
            jsonArray();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4964
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4965
        case 'true':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4966
        case 'false':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4967
        case 'null':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4968
        case '(number)':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4969
        case '(string)':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4970
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4971
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4972
        case '-':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4973
            advance('-');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4974
            if (token.character !== nexttoken.from) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4975
                warning("Unexpected space after '-'.", token);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4976
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4977
            adjacent(token, nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4978
            advance('(number)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4979
            break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4980
        default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4981
            error("Expected a JSON value.", nexttoken);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4982
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4983
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4984
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4985
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4986
// The actual JSLINT function itself.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4987
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4988
    var itself = function (s, o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4989
        var a, i;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4990
        JSLINT.errors = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4991
        predefined = Object.create(standard);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4992
        if (o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4993
            a = o.predef;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4994
            if (a instanceof Array) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4995
                for (i = 0; i < a.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4996
                    predefined[a[i]] = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4997
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4998
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  4999
            if (o.adsafe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5000
                o.safe = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5001
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5002
            if (o.safe) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5003
                o.browser = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5004
                o.css     = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5005
                o.debug   = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5006
                o.eqeqeq  = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5007
                o.evil    = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5008
                o.forin   = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5009
                o.nomen   = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5010
                o.on      = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5011
                o.rhino   = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5012
                o.safe    = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5013
                o.sidebar = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5014
                o.strict  = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5015
                o.sub     = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5016
                o.undef   = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5017
                o.widget  = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5018
                predefined.Date = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5019
                predefined['eval'] = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5020
                predefined.Function = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5021
                predefined.Object = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5022
                predefined.ADSAFE = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5023
                predefined.lib = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5024
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5025
            option = o;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5026
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5027
            option = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5028
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5029
        option.indent = option.indent || 4;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5030
        option.maxerr = option.maxerr || 50;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5031
        adsafe_id = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5032
        adsafe_may = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5033
        adsafe_went = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5034
        approved = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5035
        if (option.approved) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5036
            for (i = 0; i < option.approved.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5037
                approved[option.approved[i]] = option.approved[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5038
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5039
        } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5040
            approved.test = 'test';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5041
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5042
        tab = '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5043
        for (i = 0; i < option.indent; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5044
            tab += ' ';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5045
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5046
        indent = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5047
        global = Object.create(predefined);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5048
        scope = global;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5049
        funct = {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5050
            '(global)': true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5051
            '(name)': '(global)',
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5052
            '(scope)': scope,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5053
            '(breakage)': 0,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5054
            '(loopage)': 0
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5055
        };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5056
        functions = [funct];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5057
        ids = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5058
        urls = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5059
        src = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5060
        xmode = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5061
        stack = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5062
        member = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5063
        membersOnly = null;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5064
        implied = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5065
        inblock = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5066
        lookahead = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5067
        jsonmode = false;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5068
        warnings = 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5069
        lex.init(s);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5070
        prereg = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5071
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5072
        prevtoken = token = nexttoken = syntax['(begin)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5073
        assume();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5074
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5075
        try {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5076
            advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5077
            if (nexttoken.value.charAt(0) === '<') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5078
                html();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5079
                if (option.adsafe && !adsafe_went) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5080
                    warning("ADsafe violation: Missing ADSAFE.go.", this);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5081
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5082
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5083
                switch (nexttoken.id) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5084
                case '{':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5085
                case '[':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5086
                    option.laxbreak = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5087
                    jsonmode = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5088
                    jsonValue();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5089
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5090
                case '@':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5091
                case '*':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5092
                case '#':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5093
                case '.':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5094
                case ':':
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5095
                    xmode = 'style';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5096
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5097
                    if (token.id !== '@' || !nexttoken.identifier ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5098
                            nexttoken.value !== 'charset' || token.line !== 1 ||
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5099
                            token.from !== 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5100
                        error('A css file should begin with @charset "UTF-8";');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5101
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5102
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5103
                    if (nexttoken.type !== '(string)' &&
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5104
                            nexttoken.value !== 'UTF-8') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5105
                        error('A css file should begin with @charset "UTF-8";');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5106
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5107
                    advance();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5108
                    advance(';');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5109
                    styles();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5110
                    break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5111
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5112
                default:
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5113
                    if (option.adsafe && option.fragment) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5114
                        error("Expected '{a}' and instead saw '{b}'.",
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5115
                            nexttoken, '<div>', nexttoken.value);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5116
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5117
                    statements('lib');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5118
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5119
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5120
            advance('(end)');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5121
        } catch (e) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5122
            if (e) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5123
                JSLINT.errors.push({
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5124
                    reason    : e.message,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5125
                    line      : e.line || nexttoken.line,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5126
                    character : e.character || nexttoken.from
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5127
                }, null);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5128
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5129
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5130
        return JSLINT.errors.length === 0;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5131
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5132
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5133
    function is_array(o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5134
        return Object.prototype.toString.apply(o) === '[object Array]';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5135
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5136
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5137
    function to_array(o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5138
        var a = [], k;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5139
        for (k in o) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5140
            if (is_own(o, k)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5141
                a.push(k);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5142
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5143
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5144
        return a;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5145
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5146
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5147
// Data summary.
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5148
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5149
    itself.data = function () {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5150
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5151
        var data = {functions: []}, fu, globals, implieds = [], f, i, j,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5152
            members = [], n, unused = [], v;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5153
        if (itself.errors.length) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5154
            data.errors = itself.errors;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5155
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5156
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5157
        if (jsonmode) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5158
            data.json = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5159
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5160
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5161
        for (n in implied) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5162
            if (is_own(implied, n)) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5163
                implieds.push({
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5164
                    name: n,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5165
                    line: implied[n]
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5166
                });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5167
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5168
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5169
        if (implieds.length > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5170
            data.implieds = implieds;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5171
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5172
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5173
        if (urls.length > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5174
            data.urls = urls;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5175
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5176
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5177
        globals = to_array(scope);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5178
        if (globals.length > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5179
            data.globals = globals;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5180
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5181
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5182
        for (i = 1; i < functions.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5183
            f = functions[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5184
            fu = {};
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5185
            for (j = 0; j < functionicity.length; j += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5186
                fu[functionicity[j]] = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5187
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5188
            for (n in f) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5189
                if (is_own(f, n) && n.charAt(0) !== '(') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5190
                    v = f[n];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5191
                    if (is_array(fu[v])) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5192
                        fu[v].push(n);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5193
                        if (v === 'unused') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5194
                            unused.push({
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5195
                                name: n,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5196
                                line: f['(line)'],
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5197
                                'function': f['(name)']
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5198
                            });
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5199
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5200
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5201
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5202
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5203
            for (j = 0; j < functionicity.length; j += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5204
                if (fu[functionicity[j]].length === 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5205
                    delete fu[functionicity[j]];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5206
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5207
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5208
            fu.name = f['(name)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5209
            fu.param = f['(params)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5210
            fu.line = f['(line)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5211
            fu.last = f['(last)'];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5212
            data.functions.push(fu);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5213
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5214
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5215
        if (unused.length > 0) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5216
            data.unused = unused;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5217
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5218
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5219
        members = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5220
        for (n in member) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5221
            if (typeof member[n] === 'number') {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5222
                data.member = member;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5223
                break;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5224
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5225
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5226
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5227
        return data;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5228
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5229
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5230
    itself.report = function (option) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5231
        var data = itself.data();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5232
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5233
        var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5234
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5235
        function detail(h, s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5236
            if (s) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5237
                o.push('<div><i>' + h + '</i> ' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5238
                        s.sort().join(', ') + '</div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5239
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5240
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5241
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5242
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5243
        if (data.errors || data.implieds || data.unused) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5244
            err = true;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5245
            o.push('<div id=errors><i>Error:</i>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5246
            if (data.errors) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5247
                for (i = 0; i < data.errors.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5248
                    c = data.errors[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5249
                    if (c) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5250
                        e = c.evidence || '';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5251
                        o.push('<p>Problem' + (isFinite(c.line) ? ' at line ' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5252
                                c.line + ' character ' + c.character : '') +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5253
                                ': ' + c.reason.entityify() +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5254
                                '</p><p class=evidence>' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5255
                                (e && (e.length > 80 ? e.slice(0, 77) + '...' :
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5256
                                e).entityify()) + '</p>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5257
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5258
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5259
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5260
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5261
            if (data.implieds) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5262
                s = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5263
                for (i = 0; i < data.implieds.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5264
                    s[i] = '<code>' + data.implieds[i].name + '</code>&nbsp;<i>' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5265
                        data.implieds[i].line + '</i>';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5266
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5267
                o.push('<p><i>Implied global:</i> ' + s.join(', ') + '</p>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5268
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5269
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5270
            if (data.unused) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5271
                s = [];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5272
                for (i = 0; i < data.unused.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5273
                    s[i] = '<code>' + data.unused[i].name + '</code>&nbsp;<i>' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5274
                        data.unused[i].line + '</i> <code>' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5275
                        data.unused[i]['function'] + '</code>';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5276
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5277
                o.push('<p><i>Unused variable:</i> ' + s.join(', ') + '</p>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5278
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5279
            if (data.json) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5280
                o.push('<p>JSON: bad.</p>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5281
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5282
            o.push('</div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5283
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5284
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5285
        if (!option) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5286
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5287
            o.push('<br><div id=functions>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5288
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5289
            if (data.urls) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5290
                detail("URLs<br>", data.urls, '<br>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5291
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5292
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5293
            if (data.json && !err) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5294
                o.push('<p>JSON: good.</p>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5295
            } else if (data.globals) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5296
                o.push('<div><i>Global</i> ' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5297
                        data.globals.sort().join(', ') + '</div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5298
            } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5299
                o.push('<div><i>No new global variables introduced.</i></div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5300
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5301
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5302
            for (i = 0; i < data.functions.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5303
                f = data.functions[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5304
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5305
                o.push('<br><div class=function><i>' + f.line + '-' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5306
                        f.last + '</i> ' + (f.name || '') + '(' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5307
                        (f.param ? f.param.join(', ') : '') + ')</div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5308
                detail('<big><b>Unused</b></big>', f.unused);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5309
                detail('Closure', f.closure);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5310
                detail('Variable', f['var']);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5311
                detail('Exception', f.exception);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5312
                detail('Outer', f.outer);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5313
                detail('Global', f.global);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5314
                detail('Label', f.label);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5315
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5316
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5317
            if (data.member) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5318
                a = to_array(data.member);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5319
                if (a.length) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5320
                    a = a.sort();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5321
                    m = '<br><pre id=members>/*members ';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5322
                    l = 10;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5323
                    for (i = 0; i < a.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5324
                        k = a[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5325
                        n = k.name();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5326
                        if (l + n.length > 72) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5327
                            o.push(m + '<br>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5328
                            m = '    ';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5329
                            l = 1;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5330
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5331
                        l += n.length + 2;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5332
                        if (data.member[k] === 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5333
                            n = '<i>' + n + '</i>';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5334
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5335
                        if (i < a.length - 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5336
                            n += ', ';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5337
                        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5338
                        m += n;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5339
                    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5340
                    o.push(m + '<br>*/</pre>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5341
                }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5342
                o.push('</div>');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5343
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5344
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5345
        return o.join('');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5346
    };
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5347
    itself.jslint = itself;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5348
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5349
    itself.edition = '2009-08-22';
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5350
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5351
    return itself;
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5352
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5353
}());
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5354
(function (a) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5355
    if (!a[0]) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5356
        print("Usage: jslint.js file.js");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5357
        quit(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5358
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5359
    var input = readFile(a[0]);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5360
    if (!input) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5361
        print("jslint: Couldn't open file '" + a[0] + "'.");
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5362
        quit(1);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5363
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5364
    if (!JSLINT(input, {bitwise: false, eqeqeq: true, immed: true,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5365
            laxbreak:false, newcap: false, nomen: false, onevar: false, plusplus: false,
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5366
            regexp: false, browser: true, undef: true, white: true, indent:2,predef:['window','jQuery','google']})) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5367
        for (var i = 0; i < JSLINT.errors.length; i += 1) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5368
            var e = JSLINT.errors[i];
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5369
            if (e) {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5370
                print('Lint at line ' + (e.line + 1) + ' character ' +
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5371
                        (e.character + 1) + ': ' + e.reason);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5372
                print((e.evidence || '').
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5373
                        replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5374
                print('');
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5375
            }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5376
        }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5377
        quit(2);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5378
    } else {
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5379
        print("jslint: No problems found in " + a[0]);
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5380
        quit();
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5381
    }
7d70cef594a9 JSLint updated to uncompressed version.
Mario Ferraro <fadinlight@gmail.com>
parents: 2799
diff changeset
  5382
}(arguments));