/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/js/ace/worker-php.js

  • Committer: galaxyAbstractor
  • Date: 2013-04-10 15:49:32 UTC
  • mto: (19.1.5 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410154932-4vizlzk0ar5gykvi
* Added an simple admin panel to the codeviewer-cmssy stuff
* Redesigned a bit like the mockups - still stuff to come
* Implemented the codeviewer + admin panel again using the Framework CodeIgniter instead 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"no use strict";
 
2
;(function(window) {
 
3
if (typeof window.window != "undefined" && window.document) {
 
4
    return;
 
5
}
 
6
 
 
7
window.console = {
 
8
    log: function() {
 
9
        var msgs = Array.prototype.slice.call(arguments, 0);
 
10
        postMessage({type: "log", data: msgs});
 
11
    },
 
12
    error: function() {
 
13
        var msgs = Array.prototype.slice.call(arguments, 0);
 
14
        postMessage({type: "log", data: msgs});
 
15
    }
 
16
};
 
17
window.window = window;
 
18
window.ace = window;
 
19
 
 
20
window.normalizeModule = function(parentId, moduleName) {
 
21
    // normalize plugin requires
 
22
    if (moduleName.indexOf("!") !== -1) {
 
23
        var chunks = moduleName.split("!");
 
24
        return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
 
25
    }
 
26
    // normalize relative requires
 
27
    if (moduleName.charAt(0) == ".") {
 
28
        var base = parentId.split("/").slice(0, -1).join("/");
 
29
        moduleName = base + "/" + moduleName;
 
30
        
 
31
        while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
 
32
            var previous = moduleName;
 
33
            moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
 
34
        }
 
35
    }
 
36
    
 
37
    return moduleName;
 
38
};
 
39
 
 
40
window.require = function(parentId, id) {
 
41
    if (!id.charAt)
 
42
        throw new Error("worker.js require() accepts only (parentId, id) as arguments");
 
43
 
 
44
    id = normalizeModule(parentId, id);
 
45
 
 
46
    var module = require.modules[id];
 
47
    if (module) {
 
48
        if (!module.initialized) {
 
49
            module.initialized = true;
 
50
            module.exports = module.factory().exports;
 
51
        }
 
52
        return module.exports;
 
53
    }
 
54
    
 
55
    var chunks = id.split("/");
 
56
    chunks[0] = require.tlns[chunks[0]] || chunks[0];
 
57
    var path = chunks.join("/") + ".js";
 
58
    
 
59
    require.id = id;
 
60
    importScripts(path);
 
61
    return require(parentId, id);    
 
62
};
 
63
 
 
64
require.modules = {};
 
65
require.tlns = {};
 
66
 
 
67
window.define = function(id, deps, factory) {
 
68
    if (arguments.length == 2) {
 
69
        factory = deps;
 
70
        if (typeof id != "string") {
 
71
            deps = id;
 
72
            id = require.id;
 
73
        }
 
74
    } else if (arguments.length == 1) {
 
75
        factory = id;
 
76
        id = require.id;
 
77
    }
 
78
 
 
79
    if (id.indexOf("text!") === 0) 
 
80
        return;
 
81
    
 
82
    var req = function(deps, factory) {
 
83
        return require(id, deps, factory);
 
84
    };
 
85
 
 
86
    require.modules[id] = {
 
87
        factory: function() {
 
88
            var module = {
 
89
                exports: {}
 
90
            };
 
91
            var returnExports = factory(req, module.exports, module);
 
92
            if (returnExports)
 
93
                module.exports = returnExports;
 
94
            return module;
 
95
        }
 
96
    };
 
97
};
 
98
 
 
99
window.initBaseUrls  = function initBaseUrls(topLevelNamespaces) {
 
100
    require.tlns = topLevelNamespaces;
 
101
}
 
102
 
 
103
window.initSender = function initSender() {
 
104
 
 
105
    var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
 
106
    var oop = require(null, "ace/lib/oop");
 
107
    
 
108
    var Sender = function() {};
 
109
    
 
110
    (function() {
 
111
        
 
112
        oop.implement(this, EventEmitter);
 
113
                
 
114
        this.callback = function(data, callbackId) {
 
115
            postMessage({
 
116
                type: "call",
 
117
                id: callbackId,
 
118
                data: data
 
119
            });
 
120
        };
 
121
    
 
122
        this.emit = function(name, data) {
 
123
            postMessage({
 
124
                type: "event",
 
125
                name: name,
 
126
                data: data
 
127
            });
 
128
        };
 
129
        
 
130
    }).call(Sender.prototype);
 
131
    
 
132
    return new Sender();
 
133
}
 
134
 
 
135
window.main = null;
 
136
window.sender = null;
 
137
 
 
138
window.onmessage = function(e) {
 
139
    var msg = e.data;
 
140
    if (msg.command) {
 
141
        if (main[msg.command])
 
142
            main[msg.command].apply(main, msg.args);
 
143
        else
 
144
            throw new Error("Unknown command:" + msg.command);
 
145
    }
 
146
    else if (msg.init) {        
 
147
        initBaseUrls(msg.tlns);
 
148
        require(null, "ace/lib/fixoldbrowsers");
 
149
        sender = initSender();
 
150
        var clazz = require(null, msg.module)[msg.classname];
 
151
        main = new clazz(sender);
 
152
    } 
 
153
    else if (msg.event && sender) {
 
154
        sender._emit(msg.event, msg.data);
 
155
    }
 
156
};
 
157
})(this);// vim:set ts=4 sts=4 sw=4 st:
 
158
 
 
159
define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
 
160
 
 
161
 
 
162
require("./regexp");
 
163
require("./es5-shim");
 
164
 
 
165
});
 
166
 
 
167
define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
 
168
 
 
169
    var real = {
 
170
            exec: RegExp.prototype.exec,
 
171
            test: RegExp.prototype.test,
 
172
            match: String.prototype.match,
 
173
            replace: String.prototype.replace,
 
174
            split: String.prototype.split
 
175
        },
 
176
        compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
 
177
        compliantLastIndexIncrement = function () {
 
178
            var x = /^/g;
 
179
            real.test.call(x, "");
 
180
            return !x.lastIndex;
 
181
        }();
 
182
 
 
183
    if (compliantLastIndexIncrement && compliantExecNpcg)
 
184
        return;
 
185
    RegExp.prototype.exec = function (str) {
 
186
        var match = real.exec.apply(this, arguments),
 
187
            name, r2;
 
188
        if ( typeof(str) == 'string' && match) {
 
189
            if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
 
190
                r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
 
191
                real.replace.call(str.slice(match.index), r2, function () {
 
192
                    for (var i = 1; i < arguments.length - 2; i++) {
 
193
                        if (arguments[i] === undefined)
 
194
                            match[i] = undefined;
 
195
                    }
 
196
                });
 
197
            }
 
198
            if (this._xregexp && this._xregexp.captureNames) {
 
199
                for (var i = 1; i < match.length; i++) {
 
200
                    name = this._xregexp.captureNames[i - 1];
 
201
                    if (name)
 
202
                       match[name] = match[i];
 
203
                }
 
204
            }
 
205
            if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
 
206
                this.lastIndex--;
 
207
        }
 
208
        return match;
 
209
    };
 
210
    if (!compliantLastIndexIncrement) {
 
211
        RegExp.prototype.test = function (str) {
 
212
            var match = real.exec.call(this, str);
 
213
            if (match && this.global && !match[0].length && (this.lastIndex > match.index))
 
214
                this.lastIndex--;
 
215
            return !!match;
 
216
        };
 
217
    }
 
218
 
 
219
    function getNativeFlags (regex) {
 
220
        return (regex.global     ? "g" : "") +
 
221
               (regex.ignoreCase ? "i" : "") +
 
222
               (regex.multiline  ? "m" : "") +
 
223
               (regex.extended   ? "x" : "") + // Proposed for ES4; included in AS3
 
224
               (regex.sticky     ? "y" : "");
 
225
    }
 
226
 
 
227
    function indexOf (array, item, from) {
 
228
        if (Array.prototype.indexOf) // Use the native array method if available
 
229
            return array.indexOf(item, from);
 
230
        for (var i = from || 0; i < array.length; i++) {
 
231
            if (array[i] === item)
 
232
                return i;
 
233
        }
 
234
        return -1;
 
235
    }
 
236
 
 
237
});
 
238
 
 
239
define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
 
240
 
 
241
function Empty() {}
 
242
 
 
243
if (!Function.prototype.bind) {
 
244
    Function.prototype.bind = function bind(that) { // .length is 1
 
245
        var target = this;
 
246
        if (typeof target != "function") {
 
247
            throw new TypeError("Function.prototype.bind called on incompatible " + target);
 
248
        }
 
249
        var args = slice.call(arguments, 1); // for normal call
 
250
        var bound = function () {
 
251
 
 
252
            if (this instanceof bound) {
 
253
 
 
254
                var result = target.apply(
 
255
                    this,
 
256
                    args.concat(slice.call(arguments))
 
257
                );
 
258
                if (Object(result) === result) {
 
259
                    return result;
 
260
                }
 
261
                return this;
 
262
 
 
263
            } else {
 
264
                return target.apply(
 
265
                    that,
 
266
                    args.concat(slice.call(arguments))
 
267
                );
 
268
 
 
269
            }
 
270
 
 
271
        };
 
272
        if(target.prototype) {
 
273
            Empty.prototype = target.prototype;
 
274
            bound.prototype = new Empty();
 
275
            Empty.prototype = null;
 
276
        }
 
277
        return bound;
 
278
    };
 
279
}
 
280
var call = Function.prototype.call;
 
281
var prototypeOfArray = Array.prototype;
 
282
var prototypeOfObject = Object.prototype;
 
283
var slice = prototypeOfArray.slice;
 
284
var _toString = call.bind(prototypeOfObject.toString);
 
285
var owns = call.bind(prototypeOfObject.hasOwnProperty);
 
286
var defineGetter;
 
287
var defineSetter;
 
288
var lookupGetter;
 
289
var lookupSetter;
 
290
var supportsAccessors;
 
291
if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
 
292
    defineGetter = call.bind(prototypeOfObject.__defineGetter__);
 
293
    defineSetter = call.bind(prototypeOfObject.__defineSetter__);
 
294
    lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
 
295
    lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
 
296
}
 
297
if ([1,2].splice(0).length != 2) {
 
298
    if(function() { // test IE < 9 to splice bug - see issue #138
 
299
        function makeArray(l) {
 
300
            var a = new Array(l+2);
 
301
            a[0] = a[1] = 0;
 
302
            return a;
 
303
        }
 
304
        var array = [], lengthBefore;
 
305
        
 
306
        array.splice.apply(array, makeArray(20));
 
307
        array.splice.apply(array, makeArray(26));
 
308
 
 
309
        lengthBefore = array.length; //46
 
310
        array.splice(5, 0, "XXX"); // add one element
 
311
 
 
312
        lengthBefore + 1 == array.length
 
313
 
 
314
        if (lengthBefore + 1 == array.length) {
 
315
            return true;// has right splice implementation without bugs
 
316
        }
 
317
    }()) {//IE 6/7
 
318
        var array_splice = Array.prototype.splice;
 
319
        Array.prototype.splice = function(start, deleteCount) {
 
320
            if (!arguments.length) {
 
321
                return [];
 
322
            } else {
 
323
                return array_splice.apply(this, [
 
324
                    start === void 0 ? 0 : start,
 
325
                    deleteCount === void 0 ? (this.length - start) : deleteCount
 
326
                ].concat(slice.call(arguments, 2)))
 
327
            }
 
328
        };
 
329
    } else {//IE8
 
330
        Array.prototype.splice = function(pos, removeCount){
 
331
            var length = this.length;
 
332
            if (pos > 0) {
 
333
                if (pos > length)
 
334
                    pos = length;
 
335
            } else if (pos == void 0) {
 
336
                pos = 0;
 
337
            } else if (pos < 0) {
 
338
                pos = Math.max(length + pos, 0);
 
339
            }
 
340
 
 
341
            if (!(pos+removeCount < length))
 
342
                removeCount = length - pos;
 
343
 
 
344
            var removed = this.slice(pos, pos+removeCount);
 
345
            var insert = slice.call(arguments, 2);
 
346
            var add = insert.length;            
 
347
            if (pos === length) {
 
348
                if (add) {
 
349
                    this.push.apply(this, insert);
 
350
                }
 
351
            } else {
 
352
                var remove = Math.min(removeCount, length - pos);
 
353
                var tailOldPos = pos + remove;
 
354
                var tailNewPos = tailOldPos + add - remove;
 
355
                var tailCount = length - tailOldPos;
 
356
                var lengthAfterRemove = length - remove;
 
357
 
 
358
                if (tailNewPos < tailOldPos) { // case A
 
359
                    for (var i = 0; i < tailCount; ++i) {
 
360
                        this[tailNewPos+i] = this[tailOldPos+i];
 
361
                    }
 
362
                } else if (tailNewPos > tailOldPos) { // case B
 
363
                    for (i = tailCount; i--; ) {
 
364
                        this[tailNewPos+i] = this[tailOldPos+i];
 
365
                    }
 
366
                } // else, add == remove (nothing to do)
 
367
 
 
368
                if (add && pos === lengthAfterRemove) {
 
369
                    this.length = lengthAfterRemove; // truncate array
 
370
                    this.push.apply(this, insert);
 
371
                } else {
 
372
                    this.length = lengthAfterRemove + add; // reserves space
 
373
                    for (i = 0; i < add; ++i) {
 
374
                        this[pos+i] = insert[i];
 
375
                    }
 
376
                }
 
377
            }
 
378
            return removed;
 
379
        };
 
380
    }
 
381
}
 
382
if (!Array.isArray) {
 
383
    Array.isArray = function isArray(obj) {
 
384
        return _toString(obj) == "[object Array]";
 
385
    };
 
386
}
 
387
var boxedString = Object("a"),
 
388
    splitString = boxedString[0] != "a" || !(0 in boxedString);
 
389
 
 
390
if (!Array.prototype.forEach) {
 
391
    Array.prototype.forEach = function forEach(fun /*, thisp*/) {
 
392
        var object = toObject(this),
 
393
            self = splitString && _toString(this) == "[object String]" ?
 
394
                this.split("") :
 
395
                object,
 
396
            thisp = arguments[1],
 
397
            i = -1,
 
398
            length = self.length >>> 0;
 
399
        if (_toString(fun) != "[object Function]") {
 
400
            throw new TypeError(); // TODO message
 
401
        }
 
402
 
 
403
        while (++i < length) {
 
404
            if (i in self) {
 
405
                fun.call(thisp, self[i], i, object);
 
406
            }
 
407
        }
 
408
    };
 
409
}
 
410
if (!Array.prototype.map) {
 
411
    Array.prototype.map = function map(fun /*, thisp*/) {
 
412
        var object = toObject(this),
 
413
            self = splitString && _toString(this) == "[object String]" ?
 
414
                this.split("") :
 
415
                object,
 
416
            length = self.length >>> 0,
 
417
            result = Array(length),
 
418
            thisp = arguments[1];
 
419
        if (_toString(fun) != "[object Function]") {
 
420
            throw new TypeError(fun + " is not a function");
 
421
        }
 
422
 
 
423
        for (var i = 0; i < length; i++) {
 
424
            if (i in self)
 
425
                result[i] = fun.call(thisp, self[i], i, object);
 
426
        }
 
427
        return result;
 
428
    };
 
429
}
 
430
if (!Array.prototype.filter) {
 
431
    Array.prototype.filter = function filter(fun /*, thisp */) {
 
432
        var object = toObject(this),
 
433
            self = splitString && _toString(this) == "[object String]" ?
 
434
                this.split("") :
 
435
                    object,
 
436
            length = self.length >>> 0,
 
437
            result = [],
 
438
            value,
 
439
            thisp = arguments[1];
 
440
        if (_toString(fun) != "[object Function]") {
 
441
            throw new TypeError(fun + " is not a function");
 
442
        }
 
443
 
 
444
        for (var i = 0; i < length; i++) {
 
445
            if (i in self) {
 
446
                value = self[i];
 
447
                if (fun.call(thisp, value, i, object)) {
 
448
                    result.push(value);
 
449
                }
 
450
            }
 
451
        }
 
452
        return result;
 
453
    };
 
454
}
 
455
if (!Array.prototype.every) {
 
456
    Array.prototype.every = function every(fun /*, thisp */) {
 
457
        var object = toObject(this),
 
458
            self = splitString && _toString(this) == "[object String]" ?
 
459
                this.split("") :
 
460
                object,
 
461
            length = self.length >>> 0,
 
462
            thisp = arguments[1];
 
463
        if (_toString(fun) != "[object Function]") {
 
464
            throw new TypeError(fun + " is not a function");
 
465
        }
 
466
 
 
467
        for (var i = 0; i < length; i++) {
 
468
            if (i in self && !fun.call(thisp, self[i], i, object)) {
 
469
                return false;
 
470
            }
 
471
        }
 
472
        return true;
 
473
    };
 
474
}
 
475
if (!Array.prototype.some) {
 
476
    Array.prototype.some = function some(fun /*, thisp */) {
 
477
        var object = toObject(this),
 
478
            self = splitString && _toString(this) == "[object String]" ?
 
479
                this.split("") :
 
480
                object,
 
481
            length = self.length >>> 0,
 
482
            thisp = arguments[1];
 
483
        if (_toString(fun) != "[object Function]") {
 
484
            throw new TypeError(fun + " is not a function");
 
485
        }
 
486
 
 
487
        for (var i = 0; i < length; i++) {
 
488
            if (i in self && fun.call(thisp, self[i], i, object)) {
 
489
                return true;
 
490
            }
 
491
        }
 
492
        return false;
 
493
    };
 
494
}
 
495
if (!Array.prototype.reduce) {
 
496
    Array.prototype.reduce = function reduce(fun /*, initial*/) {
 
497
        var object = toObject(this),
 
498
            self = splitString && _toString(this) == "[object String]" ?
 
499
                this.split("") :
 
500
                object,
 
501
            length = self.length >>> 0;
 
502
        if (_toString(fun) != "[object Function]") {
 
503
            throw new TypeError(fun + " is not a function");
 
504
        }
 
505
        if (!length && arguments.length == 1) {
 
506
            throw new TypeError("reduce of empty array with no initial value");
 
507
        }
 
508
 
 
509
        var i = 0;
 
510
        var result;
 
511
        if (arguments.length >= 2) {
 
512
            result = arguments[1];
 
513
        } else {
 
514
            do {
 
515
                if (i in self) {
 
516
                    result = self[i++];
 
517
                    break;
 
518
                }
 
519
                if (++i >= length) {
 
520
                    throw new TypeError("reduce of empty array with no initial value");
 
521
                }
 
522
            } while (true);
 
523
        }
 
524
 
 
525
        for (; i < length; i++) {
 
526
            if (i in self) {
 
527
                result = fun.call(void 0, result, self[i], i, object);
 
528
            }
 
529
        }
 
530
 
 
531
        return result;
 
532
    };
 
533
}
 
534
if (!Array.prototype.reduceRight) {
 
535
    Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
 
536
        var object = toObject(this),
 
537
            self = splitString && _toString(this) == "[object String]" ?
 
538
                this.split("") :
 
539
                object,
 
540
            length = self.length >>> 0;
 
541
        if (_toString(fun) != "[object Function]") {
 
542
            throw new TypeError(fun + " is not a function");
 
543
        }
 
544
        if (!length && arguments.length == 1) {
 
545
            throw new TypeError("reduceRight of empty array with no initial value");
 
546
        }
 
547
 
 
548
        var result, i = length - 1;
 
549
        if (arguments.length >= 2) {
 
550
            result = arguments[1];
 
551
        } else {
 
552
            do {
 
553
                if (i in self) {
 
554
                    result = self[i--];
 
555
                    break;
 
556
                }
 
557
                if (--i < 0) {
 
558
                    throw new TypeError("reduceRight of empty array with no initial value");
 
559
                }
 
560
            } while (true);
 
561
        }
 
562
 
 
563
        do {
 
564
            if (i in this) {
 
565
                result = fun.call(void 0, result, self[i], i, object);
 
566
            }
 
567
        } while (i--);
 
568
 
 
569
        return result;
 
570
    };
 
571
}
 
572
if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
 
573
    Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
 
574
        var self = splitString && _toString(this) == "[object String]" ?
 
575
                this.split("") :
 
576
                toObject(this),
 
577
            length = self.length >>> 0;
 
578
 
 
579
        if (!length) {
 
580
            return -1;
 
581
        }
 
582
 
 
583
        var i = 0;
 
584
        if (arguments.length > 1) {
 
585
            i = toInteger(arguments[1]);
 
586
        }
 
587
        i = i >= 0 ? i : Math.max(0, length + i);
 
588
        for (; i < length; i++) {
 
589
            if (i in self && self[i] === sought) {
 
590
                return i;
 
591
            }
 
592
        }
 
593
        return -1;
 
594
    };
 
595
}
 
596
if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
 
597
    Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
 
598
        var self = splitString && _toString(this) == "[object String]" ?
 
599
                this.split("") :
 
600
                toObject(this),
 
601
            length = self.length >>> 0;
 
602
 
 
603
        if (!length) {
 
604
            return -1;
 
605
        }
 
606
        var i = length - 1;
 
607
        if (arguments.length > 1) {
 
608
            i = Math.min(i, toInteger(arguments[1]));
 
609
        }
 
610
        i = i >= 0 ? i : length - Math.abs(i);
 
611
        for (; i >= 0; i--) {
 
612
            if (i in self && sought === self[i]) {
 
613
                return i;
 
614
            }
 
615
        }
 
616
        return -1;
 
617
    };
 
618
}
 
619
if (!Object.getPrototypeOf) {
 
620
    Object.getPrototypeOf = function getPrototypeOf(object) {
 
621
        return object.__proto__ || (
 
622
            object.constructor ?
 
623
            object.constructor.prototype :
 
624
            prototypeOfObject
 
625
        );
 
626
    };
 
627
}
 
628
if (!Object.getOwnPropertyDescriptor) {
 
629
    var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
 
630
                         "non-object: ";
 
631
    Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
 
632
        if ((typeof object != "object" && typeof object != "function") || object === null)
 
633
            throw new TypeError(ERR_NON_OBJECT + object);
 
634
        if (!owns(object, property))
 
635
            return;
 
636
 
 
637
        var descriptor, getter, setter;
 
638
        descriptor =  { enumerable: true, configurable: true };
 
639
        if (supportsAccessors) {
 
640
            var prototype = object.__proto__;
 
641
            object.__proto__ = prototypeOfObject;
 
642
 
 
643
            var getter = lookupGetter(object, property);
 
644
            var setter = lookupSetter(object, property);
 
645
            object.__proto__ = prototype;
 
646
 
 
647
            if (getter || setter) {
 
648
                if (getter) descriptor.get = getter;
 
649
                if (setter) descriptor.set = setter;
 
650
                return descriptor;
 
651
            }
 
652
        }
 
653
        descriptor.value = object[property];
 
654
        return descriptor;
 
655
    };
 
656
}
 
657
if (!Object.getOwnPropertyNames) {
 
658
    Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
 
659
        return Object.keys(object);
 
660
    };
 
661
}
 
662
if (!Object.create) {
 
663
    var createEmpty;
 
664
    if (Object.prototype.__proto__ === null) {
 
665
        createEmpty = function () {
 
666
            return { "__proto__": null };
 
667
        };
 
668
    } else {
 
669
        createEmpty = function () {
 
670
            var empty = {};
 
671
            for (var i in empty)
 
672
                empty[i] = null;
 
673
            empty.constructor =
 
674
            empty.hasOwnProperty =
 
675
            empty.propertyIsEnumerable =
 
676
            empty.isPrototypeOf =
 
677
            empty.toLocaleString =
 
678
            empty.toString =
 
679
            empty.valueOf =
 
680
            empty.__proto__ = null;
 
681
            return empty;
 
682
        }
 
683
    }
 
684
 
 
685
    Object.create = function create(prototype, properties) {
 
686
        var object;
 
687
        if (prototype === null) {
 
688
            object = createEmpty();
 
689
        } else {
 
690
            if (typeof prototype != "object")
 
691
                throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
 
692
            var Type = function () {};
 
693
            Type.prototype = prototype;
 
694
            object = new Type();
 
695
            object.__proto__ = prototype;
 
696
        }
 
697
        if (properties !== void 0)
 
698
            Object.defineProperties(object, properties);
 
699
        return object;
 
700
    };
 
701
}
 
702
 
 
703
function doesDefinePropertyWork(object) {
 
704
    try {
 
705
        Object.defineProperty(object, "sentinel", {});
 
706
        return "sentinel" in object;
 
707
    } catch (exception) {
 
708
    }
 
709
}
 
710
if (Object.defineProperty) {
 
711
    var definePropertyWorksOnObject = doesDefinePropertyWork({});
 
712
    var definePropertyWorksOnDom = typeof document == "undefined" ||
 
713
        doesDefinePropertyWork(document.createElement("div"));
 
714
    if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
 
715
        var definePropertyFallback = Object.defineProperty;
 
716
    }
 
717
}
 
718
 
 
719
if (!Object.defineProperty || definePropertyFallback) {
 
720
    var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
 
721
    var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
 
722
    var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
 
723
                                      "on this javascript engine";
 
724
 
 
725
    Object.defineProperty = function defineProperty(object, property, descriptor) {
 
726
        if ((typeof object != "object" && typeof object != "function") || object === null)
 
727
            throw new TypeError(ERR_NON_OBJECT_TARGET + object);
 
728
        if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
 
729
            throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
 
730
        if (definePropertyFallback) {
 
731
            try {
 
732
                return definePropertyFallback.call(Object, object, property, descriptor);
 
733
            } catch (exception) {
 
734
            }
 
735
        }
 
736
        if (owns(descriptor, "value")) {
 
737
 
 
738
            if (supportsAccessors && (lookupGetter(object, property) ||
 
739
                                      lookupSetter(object, property)))
 
740
            {
 
741
                var prototype = object.__proto__;
 
742
                object.__proto__ = prototypeOfObject;
 
743
                delete object[property];
 
744
                object[property] = descriptor.value;
 
745
                object.__proto__ = prototype;
 
746
            } else {
 
747
                object[property] = descriptor.value;
 
748
            }
 
749
        } else {
 
750
            if (!supportsAccessors)
 
751
                throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
 
752
            if (owns(descriptor, "get"))
 
753
                defineGetter(object, property, descriptor.get);
 
754
            if (owns(descriptor, "set"))
 
755
                defineSetter(object, property, descriptor.set);
 
756
        }
 
757
 
 
758
        return object;
 
759
    };
 
760
}
 
761
if (!Object.defineProperties) {
 
762
    Object.defineProperties = function defineProperties(object, properties) {
 
763
        for (var property in properties) {
 
764
            if (owns(properties, property))
 
765
                Object.defineProperty(object, property, properties[property]);
 
766
        }
 
767
        return object;
 
768
    };
 
769
}
 
770
if (!Object.seal) {
 
771
    Object.seal = function seal(object) {
 
772
        return object;
 
773
    };
 
774
}
 
775
if (!Object.freeze) {
 
776
    Object.freeze = function freeze(object) {
 
777
        return object;
 
778
    };
 
779
}
 
780
try {
 
781
    Object.freeze(function () {});
 
782
} catch (exception) {
 
783
    Object.freeze = (function freeze(freezeObject) {
 
784
        return function freeze(object) {
 
785
            if (typeof object == "function") {
 
786
                return object;
 
787
            } else {
 
788
                return freezeObject(object);
 
789
            }
 
790
        };
 
791
    })(Object.freeze);
 
792
}
 
793
if (!Object.preventExtensions) {
 
794
    Object.preventExtensions = function preventExtensions(object) {
 
795
        return object;
 
796
    };
 
797
}
 
798
if (!Object.isSealed) {
 
799
    Object.isSealed = function isSealed(object) {
 
800
        return false;
 
801
    };
 
802
}
 
803
if (!Object.isFrozen) {
 
804
    Object.isFrozen = function isFrozen(object) {
 
805
        return false;
 
806
    };
 
807
}
 
808
if (!Object.isExtensible) {
 
809
    Object.isExtensible = function isExtensible(object) {
 
810
        if (Object(object) === object) {
 
811
            throw new TypeError(); // TODO message
 
812
        }
 
813
        var name = '';
 
814
        while (owns(object, name)) {
 
815
            name += '?';
 
816
        }
 
817
        object[name] = true;
 
818
        var returnValue = owns(object, name);
 
819
        delete object[name];
 
820
        return returnValue;
 
821
    };
 
822
}
 
823
if (!Object.keys) {
 
824
    var hasDontEnumBug = true,
 
825
        dontEnums = [
 
826
            "toString",
 
827
            "toLocaleString",
 
828
            "valueOf",
 
829
            "hasOwnProperty",
 
830
            "isPrototypeOf",
 
831
            "propertyIsEnumerable",
 
832
            "constructor"
 
833
        ],
 
834
        dontEnumsLength = dontEnums.length;
 
835
 
 
836
    for (var key in {"toString": null}) {
 
837
        hasDontEnumBug = false;
 
838
    }
 
839
 
 
840
    Object.keys = function keys(object) {
 
841
 
 
842
        if (
 
843
            (typeof object != "object" && typeof object != "function") ||
 
844
            object === null
 
845
        ) {
 
846
            throw new TypeError("Object.keys called on a non-object");
 
847
        }
 
848
 
 
849
        var keys = [];
 
850
        for (var name in object) {
 
851
            if (owns(object, name)) {
 
852
                keys.push(name);
 
853
            }
 
854
        }
 
855
 
 
856
        if (hasDontEnumBug) {
 
857
            for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
 
858
                var dontEnum = dontEnums[i];
 
859
                if (owns(object, dontEnum)) {
 
860
                    keys.push(dontEnum);
 
861
                }
 
862
            }
 
863
        }
 
864
        return keys;
 
865
    };
 
866
 
 
867
}
 
868
if (!Date.now) {
 
869
    Date.now = function now() {
 
870
        return new Date().getTime();
 
871
    };
 
872
}
 
873
var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
 
874
    "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
 
875
    "\u2029\uFEFF";
 
876
if (!String.prototype.trim || ws.trim()) {
 
877
    ws = "[" + ws + "]";
 
878
    var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
 
879
        trimEndRegexp = new RegExp(ws + ws + "*$");
 
880
    String.prototype.trim = function trim() {
 
881
        return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
 
882
    };
 
883
}
 
884
 
 
885
function toInteger(n) {
 
886
    n = +n;
 
887
    if (n !== n) { // isNaN
 
888
        n = 0;
 
889
    } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
 
890
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
 
891
    }
 
892
    return n;
 
893
}
 
894
 
 
895
function isPrimitive(input) {
 
896
    var type = typeof input;
 
897
    return (
 
898
        input === null ||
 
899
        type === "undefined" ||
 
900
        type === "boolean" ||
 
901
        type === "number" ||
 
902
        type === "string"
 
903
    );
 
904
}
 
905
 
 
906
function toPrimitive(input) {
 
907
    var val, valueOf, toString;
 
908
    if (isPrimitive(input)) {
 
909
        return input;
 
910
    }
 
911
    valueOf = input.valueOf;
 
912
    if (typeof valueOf === "function") {
 
913
        val = valueOf.call(input);
 
914
        if (isPrimitive(val)) {
 
915
            return val;
 
916
        }
 
917
    }
 
918
    toString = input.toString;
 
919
    if (typeof toString === "function") {
 
920
        val = toString.call(input);
 
921
        if (isPrimitive(val)) {
 
922
            return val;
 
923
        }
 
924
    }
 
925
    throw new TypeError();
 
926
}
 
927
var toObject = function (o) {
 
928
    if (o == null) { // this matches both null and undefined
 
929
        throw new TypeError("can't convert "+o+" to object");
 
930
    }
 
931
    return Object(o);
 
932
};
 
933
 
 
934
});
 
935
 
 
936
define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
 
937
 
 
938
 
 
939
var EventEmitter = {};
 
940
var stopPropagation = function() { this.propagationStopped = true; };
 
941
var preventDefault = function() { this.defaultPrevented = true; };
 
942
 
 
943
EventEmitter._emit =
 
944
EventEmitter._dispatchEvent = function(eventName, e) {
 
945
    this._eventRegistry || (this._eventRegistry = {});
 
946
    this._defaultHandlers || (this._defaultHandlers = {});
 
947
 
 
948
    var listeners = this._eventRegistry[eventName] || [];
 
949
    var defaultHandler = this._defaultHandlers[eventName];
 
950
    if (!listeners.length && !defaultHandler)
 
951
        return;
 
952
 
 
953
    if (typeof e != "object" || !e)
 
954
        e = {};
 
955
 
 
956
    if (!e.type)
 
957
        e.type = eventName;
 
958
    if (!e.stopPropagation)
 
959
        e.stopPropagation = stopPropagation;
 
960
    if (!e.preventDefault)
 
961
        e.preventDefault = preventDefault;
 
962
    if (!e.target)
 
963
        e.target = this;
 
964
 
 
965
    for (var i=0; i<listeners.length; i++) {
 
966
        listeners[i](e);
 
967
        if (e.propagationStopped)
 
968
            break;
 
969
    }
 
970
    
 
971
    if (defaultHandler && !e.defaultPrevented)
 
972
        return defaultHandler(e);
 
973
};
 
974
 
 
975
 
 
976
EventEmitter._signal = function(eventName, e) {
 
977
    var listeners = (this._eventRegistry || {})[eventName];
 
978
    if (!listeners)
 
979
        return;
 
980
 
 
981
    for (var i=0; i<listeners.length; i++)
 
982
        listeners[i](e);
 
983
};
 
984
 
 
985
EventEmitter.once = function(eventName, callback) {
 
986
    var _self = this;
 
987
    var newCallback = function() {
 
988
        fun && fun.apply(null, arguments);
 
989
        _self.removeEventListener(event, newCallback);
 
990
    };
 
991
    this.addEventListener(event, newCallback);
 
992
};
 
993
 
 
994
 
 
995
EventEmitter.setDefaultHandler = function(eventName, callback) {
 
996
    this._defaultHandlers = this._defaultHandlers || {};
 
997
    
 
998
    if (this._defaultHandlers[eventName])
 
999
        throw new Error("The default handler for '" + eventName + "' is already set");
 
1000
        
 
1001
    this._defaultHandlers[eventName] = callback;
 
1002
};
 
1003
 
 
1004
EventEmitter.on =
 
1005
EventEmitter.addEventListener = function(eventName, callback, capturing) {
 
1006
    this._eventRegistry = this._eventRegistry || {};
 
1007
 
 
1008
    var listeners = this._eventRegistry[eventName];
 
1009
    if (!listeners)
 
1010
        listeners = this._eventRegistry[eventName] = [];
 
1011
 
 
1012
    if (listeners.indexOf(callback) == -1)
 
1013
        listeners[capturing ? "unshift" : "push"](callback);
 
1014
    return callback;
 
1015
};
 
1016
 
 
1017
EventEmitter.removeListener =
 
1018
EventEmitter.removeEventListener = function(eventName, callback) {
 
1019
    this._eventRegistry = this._eventRegistry || {};
 
1020
 
 
1021
    var listeners = this._eventRegistry[eventName];
 
1022
    if (!listeners)
 
1023
        return;
 
1024
 
 
1025
    var index = listeners.indexOf(callback);
 
1026
    if (index !== -1)
 
1027
        listeners.splice(index, 1);
 
1028
};
 
1029
 
 
1030
EventEmitter.removeAllListeners = function(eventName) {
 
1031
    if (this._eventRegistry) this._eventRegistry[eventName] = [];
 
1032
};
 
1033
 
 
1034
exports.EventEmitter = EventEmitter;
 
1035
 
 
1036
});
 
1037
 
 
1038
define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
 
1039
 
 
1040
 
 
1041
exports.inherits = (function() {
 
1042
    var tempCtor = function() {};
 
1043
    return function(ctor, superCtor) {
 
1044
        tempCtor.prototype = superCtor.prototype;
 
1045
        ctor.super_ = superCtor.prototype;
 
1046
        ctor.prototype = new tempCtor();
 
1047
        ctor.prototype.constructor = ctor;
 
1048
    };
 
1049
}());
 
1050
 
 
1051
exports.mixin = function(obj, mixin) {
 
1052
    for (var key in mixin) {
 
1053
        obj[key] = mixin[key];
 
1054
    }
 
1055
};
 
1056
 
 
1057
exports.implement = function(proto, mixin) {
 
1058
    exports.mixin(proto, mixin);
 
1059
};
 
1060
 
 
1061
});
 
1062
 
 
1063
define('ace/mode/php_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/php/php'], function(require, exports, module) {
 
1064
 
 
1065
 
 
1066
var oop = require("../lib/oop");
 
1067
var Mirror = require("../worker/mirror").Mirror;
 
1068
var PHP = require("./php/php").PHP;
 
1069
 
 
1070
var PhpWorker = exports.PhpWorker = function(sender) {
 
1071
    Mirror.call(this, sender);
 
1072
    this.setTimeout(500);
 
1073
};
 
1074
 
 
1075
oop.inherits(PhpWorker, Mirror);
 
1076
 
 
1077
(function() {
 
1078
 
 
1079
    this.onUpdate = function() {
 
1080
        var value = this.doc.getValue();
 
1081
        var errors = [];
 
1082
 
 
1083
        var tokens = PHP.Lexer(value, {short_open_tag: 1});
 
1084
        try {
 
1085
            new PHP.Parser(tokens);
 
1086
        } catch(e) {
 
1087
            errors.push({
 
1088
                row: e.line - 1,
 
1089
                column: null,
 
1090
                text: e.message.charAt(0).toUpperCase() + e.message.substring(1),
 
1091
                type: "error"
 
1092
            });
 
1093
        }
 
1094
 
 
1095
        if (errors.length) {
 
1096
            this.sender.emit("error", errors);
 
1097
        } else {
 
1098
            this.sender.emit("ok");
 
1099
        }
 
1100
    };
 
1101
 
 
1102
}).call(PhpWorker.prototype);
 
1103
 
 
1104
});
 
1105
define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
 
1106
 
 
1107
 
 
1108
var Document = require("../document").Document;
 
1109
var lang = require("../lib/lang");
 
1110
    
 
1111
var Mirror = exports.Mirror = function(sender) {
 
1112
    this.sender = sender;
 
1113
    var doc = this.doc = new Document("");
 
1114
    
 
1115
    var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));
 
1116
    
 
1117
    var _self = this;
 
1118
    sender.on("change", function(e) {
 
1119
        doc.applyDeltas([e.data]);        
 
1120
        deferredUpdate.schedule(_self.$timeout);
 
1121
    });
 
1122
};
 
1123
 
 
1124
(function() {
 
1125
    
 
1126
    this.$timeout = 500;
 
1127
    
 
1128
    this.setTimeout = function(timeout) {
 
1129
        this.$timeout = timeout;
 
1130
    };
 
1131
    
 
1132
    this.setValue = function(value) {
 
1133
        this.doc.setValue(value);
 
1134
        this.deferredUpdate.schedule(this.$timeout);
 
1135
    };
 
1136
    
 
1137
    this.getValue = function(callbackId) {
 
1138
        this.sender.callback(this.doc.getValue(), callbackId);
 
1139
    };
 
1140
    
 
1141
    this.onUpdate = function() {
 
1142
    };
 
1143
    
 
1144
}).call(Mirror.prototype);
 
1145
 
 
1146
});
 
1147
 
 
1148
define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
 
1149
 
 
1150
 
 
1151
var oop = require("./lib/oop");
 
1152
var EventEmitter = require("./lib/event_emitter").EventEmitter;
 
1153
var Range = require("./range").Range;
 
1154
var Anchor = require("./anchor").Anchor;
 
1155
 
 
1156
var Document = function(text) {
 
1157
    this.$lines = [];
 
1158
    if (text.length == 0) {
 
1159
        this.$lines = [""];
 
1160
    } else if (Array.isArray(text)) {
 
1161
        this.insertLines(0, text);
 
1162
    } else {
 
1163
        this.insert({row: 0, column:0}, text);
 
1164
    }
 
1165
};
 
1166
 
 
1167
(function() {
 
1168
 
 
1169
    oop.implement(this, EventEmitter);
 
1170
    this.setValue = function(text) {
 
1171
        var len = this.getLength();
 
1172
        this.remove(new Range(0, 0, len, this.getLine(len-1).length));
 
1173
        this.insert({row: 0, column:0}, text);
 
1174
    };
 
1175
    this.getValue = function() {
 
1176
        return this.getAllLines().join(this.getNewLineCharacter());
 
1177
    };
 
1178
    this.createAnchor = function(row, column) {
 
1179
        return new Anchor(this, row, column);
 
1180
    };
 
1181
    if ("aaa".split(/a/).length == 0)
 
1182
        this.$split = function(text) {
 
1183
            return text.replace(/\r\n|\r/g, "\n").split("\n");
 
1184
        }
 
1185
    else
 
1186
        this.$split = function(text) {
 
1187
            return text.split(/\r\n|\r|\n/);
 
1188
        };
 
1189
 
 
1190
 
 
1191
 
 
1192
    this.$detectNewLine = function(text) {
 
1193
        var match = text.match(/^.*?(\r\n|\r|\n)/m);
 
1194
        if (match) {
 
1195
            this.$autoNewLine = match[1];
 
1196
        } else {
 
1197
            this.$autoNewLine = "\n";
 
1198
        }
 
1199
    };
 
1200
    this.getNewLineCharacter = function() {
 
1201
        switch (this.$newLineMode) {
 
1202
          case "windows":
 
1203
            return "\r\n";
 
1204
 
 
1205
          case "unix":
 
1206
            return "\n";
 
1207
 
 
1208
          default:
 
1209
            return this.$autoNewLine;
 
1210
        }
 
1211
    };
 
1212
 
 
1213
    this.$autoNewLine = "\n";
 
1214
    this.$newLineMode = "auto";
 
1215
    this.setNewLineMode = function(newLineMode) {
 
1216
        if (this.$newLineMode === newLineMode)
 
1217
            return;
 
1218
 
 
1219
        this.$newLineMode = newLineMode;
 
1220
    };
 
1221
    this.getNewLineMode = function() {
 
1222
        return this.$newLineMode;
 
1223
    };
 
1224
    this.isNewLine = function(text) {
 
1225
        return (text == "\r\n" || text == "\r" || text == "\n");
 
1226
    };
 
1227
    this.getLine = function(row) {
 
1228
        return this.$lines[row] || "";
 
1229
    };
 
1230
    this.getLines = function(firstRow, lastRow) {
 
1231
        return this.$lines.slice(firstRow, lastRow + 1);
 
1232
    };
 
1233
    this.getAllLines = function() {
 
1234
        return this.getLines(0, this.getLength());
 
1235
    };
 
1236
    this.getLength = function() {
 
1237
        return this.$lines.length;
 
1238
    };
 
1239
    this.getTextRange = function(range) {
 
1240
        if (range.start.row == range.end.row) {
 
1241
            return this.$lines[range.start.row].substring(range.start.column,
 
1242
                                                         range.end.column);
 
1243
        }
 
1244
        else {
 
1245
            var lines = this.getLines(range.start.row+1, range.end.row-1);
 
1246
            lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
 
1247
            lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
 
1248
            return lines.join(this.getNewLineCharacter());
 
1249
        }
 
1250
    };
 
1251
 
 
1252
    this.$clipPosition = function(position) {
 
1253
        var length = this.getLength();
 
1254
        if (position.row >= length) {
 
1255
            position.row = Math.max(0, length - 1);
 
1256
            position.column = this.getLine(length-1).length;
 
1257
        }
 
1258
        return position;
 
1259
    };
 
1260
    this.insert = function(position, text) {
 
1261
        if (!text || text.length === 0)
 
1262
            return position;
 
1263
 
 
1264
        position = this.$clipPosition(position);
 
1265
        if (this.getLength() <= 1)
 
1266
            this.$detectNewLine(text);
 
1267
 
 
1268
        var lines = this.$split(text);
 
1269
        var firstLine = lines.splice(0, 1)[0];
 
1270
        var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
 
1271
 
 
1272
        position = this.insertInLine(position, firstLine);
 
1273
        if (lastLine !== null) {
 
1274
            position = this.insertNewLine(position); // terminate first line
 
1275
            position = this.insertLines(position.row, lines);
 
1276
            position = this.insertInLine(position, lastLine || "");
 
1277
        }
 
1278
        return position;
 
1279
    };
 
1280
    this.insertLines = function(row, lines) {
 
1281
        if (lines.length == 0)
 
1282
            return {row: row, column: 0};
 
1283
        if (lines.length > 0xFFFF) {
 
1284
            var end = this.insertLines(row, lines.slice(0xFFFF));
 
1285
            lines = lines.slice(0, 0xFFFF);
 
1286
        }
 
1287
 
 
1288
        var args = [row, 0];
 
1289
        args.push.apply(args, lines);
 
1290
        this.$lines.splice.apply(this.$lines, args);
 
1291
 
 
1292
        var range = new Range(row, 0, row + lines.length, 0);
 
1293
        var delta = {
 
1294
            action: "insertLines",
 
1295
            range: range,
 
1296
            lines: lines
 
1297
        };
 
1298
        this._emit("change", { data: delta });
 
1299
        return end || range.end;
 
1300
    };
 
1301
    this.insertNewLine = function(position) {
 
1302
        position = this.$clipPosition(position);
 
1303
        var line = this.$lines[position.row] || "";
 
1304
 
 
1305
        this.$lines[position.row] = line.substring(0, position.column);
 
1306
        this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
 
1307
 
 
1308
        var end = {
 
1309
            row : position.row + 1,
 
1310
            column : 0
 
1311
        };
 
1312
 
 
1313
        var delta = {
 
1314
            action: "insertText",
 
1315
            range: Range.fromPoints(position, end),
 
1316
            text: this.getNewLineCharacter()
 
1317
        };
 
1318
        this._emit("change", { data: delta });
 
1319
 
 
1320
        return end;
 
1321
    };
 
1322
    this.insertInLine = function(position, text) {
 
1323
        if (text.length == 0)
 
1324
            return position;
 
1325
 
 
1326
        var line = this.$lines[position.row] || "";
 
1327
 
 
1328
        this.$lines[position.row] = line.substring(0, position.column) + text
 
1329
                + line.substring(position.column);
 
1330
 
 
1331
        var end = {
 
1332
            row : position.row,
 
1333
            column : position.column + text.length
 
1334
        };
 
1335
 
 
1336
        var delta = {
 
1337
            action: "insertText",
 
1338
            range: Range.fromPoints(position, end),
 
1339
            text: text
 
1340
        };
 
1341
        this._emit("change", { data: delta });
 
1342
 
 
1343
        return end;
 
1344
    };
 
1345
    this.remove = function(range) {
 
1346
        range.start = this.$clipPosition(range.start);
 
1347
        range.end = this.$clipPosition(range.end);
 
1348
 
 
1349
        if (range.isEmpty())
 
1350
            return range.start;
 
1351
 
 
1352
        var firstRow = range.start.row;
 
1353
        var lastRow = range.end.row;
 
1354
 
 
1355
        if (range.isMultiLine()) {
 
1356
            var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
 
1357
            var lastFullRow = lastRow - 1;
 
1358
 
 
1359
            if (range.end.column > 0)
 
1360
                this.removeInLine(lastRow, 0, range.end.column);
 
1361
 
 
1362
            if (lastFullRow >= firstFullRow)
 
1363
                this.removeLines(firstFullRow, lastFullRow);
 
1364
 
 
1365
            if (firstFullRow != firstRow) {
 
1366
                this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
 
1367
                this.removeNewLine(range.start.row);
 
1368
            }
 
1369
        }
 
1370
        else {
 
1371
            this.removeInLine(firstRow, range.start.column, range.end.column);
 
1372
        }
 
1373
        return range.start;
 
1374
    };
 
1375
    this.removeInLine = function(row, startColumn, endColumn) {
 
1376
        if (startColumn == endColumn)
 
1377
            return;
 
1378
 
 
1379
        var range = new Range(row, startColumn, row, endColumn);
 
1380
        var line = this.getLine(row);
 
1381
        var removed = line.substring(startColumn, endColumn);
 
1382
        var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
 
1383
        this.$lines.splice(row, 1, newLine);
 
1384
 
 
1385
        var delta = {
 
1386
            action: "removeText",
 
1387
            range: range,
 
1388
            text: removed
 
1389
        };
 
1390
        this._emit("change", { data: delta });
 
1391
        return range.start;
 
1392
    };
 
1393
    this.removeLines = function(firstRow, lastRow) {
 
1394
        var range = new Range(firstRow, 0, lastRow + 1, 0);
 
1395
        var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
 
1396
 
 
1397
        var delta = {
 
1398
            action: "removeLines",
 
1399
            range: range,
 
1400
            nl: this.getNewLineCharacter(),
 
1401
            lines: removed
 
1402
        };
 
1403
        this._emit("change", { data: delta });
 
1404
        return removed;
 
1405
    };
 
1406
    this.removeNewLine = function(row) {
 
1407
        var firstLine = this.getLine(row);
 
1408
        var secondLine = this.getLine(row+1);
 
1409
 
 
1410
        var range = new Range(row, firstLine.length, row+1, 0);
 
1411
        var line = firstLine + secondLine;
 
1412
 
 
1413
        this.$lines.splice(row, 2, line);
 
1414
 
 
1415
        var delta = {
 
1416
            action: "removeText",
 
1417
            range: range,
 
1418
            text: this.getNewLineCharacter()
 
1419
        };
 
1420
        this._emit("change", { data: delta });
 
1421
    };
 
1422
    this.replace = function(range, text) {
 
1423
        if (text.length == 0 && range.isEmpty())
 
1424
            return range.start;
 
1425
        if (text == this.getTextRange(range))
 
1426
            return range.end;
 
1427
 
 
1428
        this.remove(range);
 
1429
        if (text) {
 
1430
            var end = this.insert(range.start, text);
 
1431
        }
 
1432
        else {
 
1433
            end = range.start;
 
1434
        }
 
1435
 
 
1436
        return end;
 
1437
    };
 
1438
    this.applyDeltas = function(deltas) {
 
1439
        for (var i=0; i<deltas.length; i++) {
 
1440
            var delta = deltas[i];
 
1441
            var range = Range.fromPoints(delta.range.start, delta.range.end);
 
1442
 
 
1443
            if (delta.action == "insertLines")
 
1444
                this.insertLines(range.start.row, delta.lines);
 
1445
            else if (delta.action == "insertText")
 
1446
                this.insert(range.start, delta.text);
 
1447
            else if (delta.action == "removeLines")
 
1448
                this.removeLines(range.start.row, range.end.row - 1);
 
1449
            else if (delta.action == "removeText")
 
1450
                this.remove(range);
 
1451
        }
 
1452
    };
 
1453
    this.revertDeltas = function(deltas) {
 
1454
        for (var i=deltas.length-1; i>=0; i--) {
 
1455
            var delta = deltas[i];
 
1456
 
 
1457
            var range = Range.fromPoints(delta.range.start, delta.range.end);
 
1458
 
 
1459
            if (delta.action == "insertLines")
 
1460
                this.removeLines(range.start.row, range.end.row - 1);
 
1461
            else if (delta.action == "insertText")
 
1462
                this.remove(range);
 
1463
            else if (delta.action == "removeLines")
 
1464
                this.insertLines(range.start.row, delta.lines);
 
1465
            else if (delta.action == "removeText")
 
1466
                this.insert(range.start, delta.text);
 
1467
        }
 
1468
    };
 
1469
    this.indexToPosition = function(index, startRow) {
 
1470
        var lines = this.$lines || this.getAllLines();
 
1471
        var newlineLength = this.getNewLineCharacter().length;
 
1472
        for (var i = startRow || 0, l = lines.length; i < l; i++) {
 
1473
            index -= lines[i].length + newlineLength;
 
1474
            if (index < 0)
 
1475
                return {row: i, column: index + lines[i].length + newlineLength};
 
1476
        }
 
1477
        return {row: l-1, column: lines[l-1].length};
 
1478
    };
 
1479
    this.positionToIndex = function(pos, startRow) {
 
1480
        var lines = this.$lines || this.getAllLines();
 
1481
        var newlineLength = this.getNewLineCharacter().length;
 
1482
        var index = 0;
 
1483
        var row = Math.min(pos.row, lines.length);
 
1484
        for (var i = startRow || 0; i < row; ++i)
 
1485
            index += lines[i].length;
 
1486
 
 
1487
        return index + newlineLength * i + pos.column;
 
1488
    };
 
1489
 
 
1490
}).call(Document.prototype);
 
1491
 
 
1492
exports.Document = Document;
 
1493
});
 
1494
 
 
1495
define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
 
1496
 
 
1497
var comparePoints = function(p1, p2) {
 
1498
    return p1.row - p2.row || p1.column - p2.column;
 
1499
};
 
1500
var Range = function(startRow, startColumn, endRow, endColumn) {
 
1501
    this.start = {
 
1502
        row: startRow,
 
1503
        column: startColumn
 
1504
    };
 
1505
 
 
1506
    this.end = {
 
1507
        row: endRow,
 
1508
        column: endColumn
 
1509
    };
 
1510
};
 
1511
 
 
1512
(function() {
 
1513
    this.isEqual = function(range) {
 
1514
        return this.start.row === range.start.row &&
 
1515
            this.end.row === range.end.row &&
 
1516
            this.start.column === range.start.column &&
 
1517
            this.end.column === range.end.column;
 
1518
    };
 
1519
    this.toString = function() {
 
1520
        return ("Range: [" + this.start.row + "/" + this.start.column +
 
1521
            "] -> [" + this.end.row + "/" + this.end.column + "]");
 
1522
    };
 
1523
 
 
1524
    this.contains = function(row, column) {
 
1525
        return this.compare(row, column) == 0;
 
1526
    };
 
1527
    this.compareRange = function(range) {
 
1528
        var cmp,
 
1529
            end = range.end,
 
1530
            start = range.start;
 
1531
 
 
1532
        cmp = this.compare(end.row, end.column);
 
1533
        if (cmp == 1) {
 
1534
            cmp = this.compare(start.row, start.column);
 
1535
            if (cmp == 1) {
 
1536
                return 2;
 
1537
            } else if (cmp == 0) {
 
1538
                return 1;
 
1539
            } else {
 
1540
                return 0;
 
1541
            }
 
1542
        } else if (cmp == -1) {
 
1543
            return -2;
 
1544
        } else {
 
1545
            cmp = this.compare(start.row, start.column);
 
1546
            if (cmp == -1) {
 
1547
                return -1;
 
1548
            } else if (cmp == 1) {
 
1549
                return 42;
 
1550
            } else {
 
1551
                return 0;
 
1552
            }
 
1553
        }
 
1554
    };
 
1555
    this.comparePoint = function(p) {
 
1556
        return this.compare(p.row, p.column);
 
1557
    };
 
1558
    this.containsRange = function(range) {
 
1559
        return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
 
1560
    };
 
1561
    this.intersects = function(range) {
 
1562
        var cmp = this.compareRange(range);
 
1563
        return (cmp == -1 || cmp == 0 || cmp == 1);
 
1564
    };
 
1565
    this.isEnd = function(row, column) {
 
1566
        return this.end.row == row && this.end.column == column;
 
1567
    };
 
1568
    this.isStart = function(row, column) {
 
1569
        return this.start.row == row && this.start.column == column;
 
1570
    };
 
1571
    this.setStart = function(row, column) {
 
1572
        if (typeof row == "object") {
 
1573
            this.start.column = row.column;
 
1574
            this.start.row = row.row;
 
1575
        } else {
 
1576
            this.start.row = row;
 
1577
            this.start.column = column;
 
1578
        }
 
1579
    };
 
1580
    this.setEnd = function(row, column) {
 
1581
        if (typeof row == "object") {
 
1582
            this.end.column = row.column;
 
1583
            this.end.row = row.row;
 
1584
        } else {
 
1585
            this.end.row = row;
 
1586
            this.end.column = column;
 
1587
        }
 
1588
    };
 
1589
    this.inside = function(row, column) {
 
1590
        if (this.compare(row, column) == 0) {
 
1591
            if (this.isEnd(row, column) || this.isStart(row, column)) {
 
1592
                return false;
 
1593
            } else {
 
1594
                return true;
 
1595
            }
 
1596
        }
 
1597
        return false;
 
1598
    };
 
1599
    this.insideStart = function(row, column) {
 
1600
        if (this.compare(row, column) == 0) {
 
1601
            if (this.isEnd(row, column)) {
 
1602
                return false;
 
1603
            } else {
 
1604
                return true;
 
1605
            }
 
1606
        }
 
1607
        return false;
 
1608
    };
 
1609
    this.insideEnd = function(row, column) {
 
1610
        if (this.compare(row, column) == 0) {
 
1611
            if (this.isStart(row, column)) {
 
1612
                return false;
 
1613
            } else {
 
1614
                return true;
 
1615
            }
 
1616
        }
 
1617
        return false;
 
1618
    };
 
1619
    this.compare = function(row, column) {
 
1620
        if (!this.isMultiLine()) {
 
1621
            if (row === this.start.row) {
 
1622
                return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
 
1623
            };
 
1624
        }
 
1625
 
 
1626
        if (row < this.start.row)
 
1627
            return -1;
 
1628
 
 
1629
        if (row > this.end.row)
 
1630
            return 1;
 
1631
 
 
1632
        if (this.start.row === row)
 
1633
            return column >= this.start.column ? 0 : -1;
 
1634
 
 
1635
        if (this.end.row === row)
 
1636
            return column <= this.end.column ? 0 : 1;
 
1637
 
 
1638
        return 0;
 
1639
    };
 
1640
    this.compareStart = function(row, column) {
 
1641
        if (this.start.row == row && this.start.column == column) {
 
1642
            return -1;
 
1643
        } else {
 
1644
            return this.compare(row, column);
 
1645
        }
 
1646
    };
 
1647
    this.compareEnd = function(row, column) {
 
1648
        if (this.end.row == row && this.end.column == column) {
 
1649
            return 1;
 
1650
        } else {
 
1651
            return this.compare(row, column);
 
1652
        }
 
1653
    };
 
1654
    this.compareInside = function(row, column) {
 
1655
        if (this.end.row == row && this.end.column == column) {
 
1656
            return 1;
 
1657
        } else if (this.start.row == row && this.start.column == column) {
 
1658
            return -1;
 
1659
        } else {
 
1660
            return this.compare(row, column);
 
1661
        }
 
1662
    };
 
1663
    this.clipRows = function(firstRow, lastRow) {
 
1664
        if (this.end.row > lastRow)
 
1665
            var end = {row: lastRow + 1, column: 0};
 
1666
        else if (this.end.row < firstRow)
 
1667
            var end = {row: firstRow, column: 0};
 
1668
 
 
1669
        if (this.start.row > lastRow)
 
1670
            var start = {row: lastRow + 1, column: 0};
 
1671
        else if (this.start.row < firstRow)
 
1672
            var start = {row: firstRow, column: 0};
 
1673
 
 
1674
        return Range.fromPoints(start || this.start, end || this.end);
 
1675
    };
 
1676
    this.extend = function(row, column) {
 
1677
        var cmp = this.compare(row, column);
 
1678
 
 
1679
        if (cmp == 0)
 
1680
            return this;
 
1681
        else if (cmp == -1)
 
1682
            var start = {row: row, column: column};
 
1683
        else
 
1684
            var end = {row: row, column: column};
 
1685
 
 
1686
        return Range.fromPoints(start || this.start, end || this.end);
 
1687
    };
 
1688
 
 
1689
    this.isEmpty = function() {
 
1690
        return (this.start.row === this.end.row && this.start.column === this.end.column);
 
1691
    };
 
1692
    this.isMultiLine = function() {
 
1693
        return (this.start.row !== this.end.row);
 
1694
    };
 
1695
    this.clone = function() {
 
1696
        return Range.fromPoints(this.start, this.end);
 
1697
    };
 
1698
    this.collapseRows = function() {
 
1699
        if (this.end.column == 0)
 
1700
            return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
 
1701
        else
 
1702
            return new Range(this.start.row, 0, this.end.row, 0)
 
1703
    };
 
1704
    this.toScreenRange = function(session) {
 
1705
        var screenPosStart = session.documentToScreenPosition(this.start);
 
1706
        var screenPosEnd = session.documentToScreenPosition(this.end);
 
1707
 
 
1708
        return new Range(
 
1709
            screenPosStart.row, screenPosStart.column,
 
1710
            screenPosEnd.row, screenPosEnd.column
 
1711
        );
 
1712
    };
 
1713
    this.moveBy = function(row, column) {
 
1714
        this.start.row += row;
 
1715
        this.start.column += column;
 
1716
        this.end.row += row;
 
1717
        this.end.column += column;
 
1718
    };
 
1719
 
 
1720
}).call(Range.prototype);
 
1721
Range.fromPoints = function(start, end) {
 
1722
    return new Range(start.row, start.column, end.row, end.column);
 
1723
};
 
1724
Range.comparePoints = comparePoints;
 
1725
 
 
1726
exports.Range = Range;
 
1727
});
 
1728
 
 
1729
define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
 
1730
 
 
1731
 
 
1732
var oop = require("./lib/oop");
 
1733
var EventEmitter = require("./lib/event_emitter").EventEmitter;
 
1734
 
 
1735
var Anchor = exports.Anchor = function(doc, row, column) {
 
1736
    this.document = doc;
 
1737
    
 
1738
    if (typeof column == "undefined")
 
1739
        this.setPosition(row.row, row.column);
 
1740
    else
 
1741
        this.setPosition(row, column);
 
1742
 
 
1743
    this.$onChange = this.onChange.bind(this);
 
1744
    doc.on("change", this.$onChange);
 
1745
};
 
1746
 
 
1747
(function() {
 
1748
 
 
1749
    oop.implement(this, EventEmitter);
 
1750
 
 
1751
    this.getPosition = function() {
 
1752
        return this.$clipPositionToDocument(this.row, this.column);
 
1753
    };
 
1754
        
 
1755
    this.getDocument = function() {
 
1756
        return this.document;
 
1757
    };
 
1758
 
 
1759
    this.onChange = function(e) {
 
1760
        var delta = e.data;
 
1761
        var range = delta.range;
 
1762
            
 
1763
        if (range.start.row == range.end.row && range.start.row != this.row)
 
1764
            return;
 
1765
            
 
1766
        if (range.start.row > this.row)
 
1767
            return;
 
1768
            
 
1769
        if (range.start.row == this.row && range.start.column > this.column)
 
1770
            return;
 
1771
    
 
1772
        var row = this.row;
 
1773
        var column = this.column;
 
1774
        
 
1775
        if (delta.action === "insertText") {
 
1776
            if (range.start.row === row && range.start.column <= column) {
 
1777
                if (range.start.row === range.end.row) {
 
1778
                    column += range.end.column - range.start.column;
 
1779
                }
 
1780
                else {
 
1781
                    column -= range.start.column;
 
1782
                    row += range.end.row - range.start.row;
 
1783
                }
 
1784
            }
 
1785
            else if (range.start.row !== range.end.row && range.start.row < row) {
 
1786
                row += range.end.row - range.start.row;
 
1787
            }
 
1788
        } else if (delta.action === "insertLines") {
 
1789
            if (range.start.row <= row) {
 
1790
                row += range.end.row - range.start.row;
 
1791
            }
 
1792
        }
 
1793
        else if (delta.action == "removeText") {
 
1794
            if (range.start.row == row && range.start.column < column) {
 
1795
                if (range.end.column >= column)
 
1796
                    column = range.start.column;
 
1797
                else
 
1798
                    column = Math.max(0, column - (range.end.column - range.start.column));
 
1799
                
 
1800
            } else if (range.start.row !== range.end.row && range.start.row < row) {
 
1801
                if (range.end.row == row) {
 
1802
                    column = Math.max(0, column - range.end.column) + range.start.column;
 
1803
                }
 
1804
                row -= (range.end.row - range.start.row);
 
1805
            }
 
1806
            else if (range.end.row == row) {
 
1807
                row -= range.end.row - range.start.row;
 
1808
                column = Math.max(0, column - range.end.column) + range.start.column;
 
1809
            }
 
1810
        } else if (delta.action == "removeLines") {
 
1811
            if (range.start.row <= row) {
 
1812
                if (range.end.row <= row)
 
1813
                    row -= range.end.row - range.start.row;
 
1814
                else {
 
1815
                    row = range.start.row;
 
1816
                    column = 0;
 
1817
                }
 
1818
            }
 
1819
        }
 
1820
 
 
1821
        this.setPosition(row, column, true);
 
1822
    };
 
1823
 
 
1824
    this.setPosition = function(row, column, noClip) {
 
1825
        var pos;
 
1826
        if (noClip) {
 
1827
            pos = {
 
1828
                row: row,
 
1829
                column: column
 
1830
            };
 
1831
        }
 
1832
        else {
 
1833
            pos = this.$clipPositionToDocument(row, column);
 
1834
        }
 
1835
        
 
1836
        if (this.row == pos.row && this.column == pos.column)
 
1837
            return;
 
1838
            
 
1839
        var old = {
 
1840
            row: this.row,
 
1841
            column: this.column
 
1842
        };
 
1843
        
 
1844
        this.row = pos.row;
 
1845
        this.column = pos.column;
 
1846
        this._emit("change", {
 
1847
            old: old,
 
1848
            value: pos
 
1849
        });
 
1850
    };
 
1851
 
 
1852
    this.detach = function() {
 
1853
        this.document.removeEventListener("change", this.$onChange);
 
1854
    };
 
1855
    this.$clipPositionToDocument = function(row, column) {
 
1856
        var pos = {};
 
1857
    
 
1858
        if (row >= this.document.getLength()) {
 
1859
            pos.row = Math.max(0, this.document.getLength() - 1);
 
1860
            pos.column = this.document.getLine(pos.row).length;
 
1861
        }
 
1862
        else if (row < 0) {
 
1863
            pos.row = 0;
 
1864
            pos.column = 0;
 
1865
        }
 
1866
        else {
 
1867
            pos.row = row;
 
1868
            pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
 
1869
        }
 
1870
        
 
1871
        if (column < 0)
 
1872
            pos.column = 0;
 
1873
            
 
1874
        return pos;
 
1875
    };
 
1876
    
 
1877
}).call(Anchor.prototype);
 
1878
 
 
1879
});
 
1880
 
 
1881
define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
 
1882
 
 
1883
 
 
1884
exports.stringReverse = function(string) {
 
1885
    return string.split("").reverse().join("");
 
1886
};
 
1887
 
 
1888
exports.stringRepeat = function (string, count) {
 
1889
    var result = '';
 
1890
    while (count > 0) {
 
1891
        if (count & 1)
 
1892
            result += string;
 
1893
 
 
1894
        if (count >>= 1)
 
1895
            string += string;
 
1896
    }
 
1897
    return result;
 
1898
};
 
1899
 
 
1900
var trimBeginRegexp = /^\s\s*/;
 
1901
var trimEndRegexp = /\s\s*$/;
 
1902
 
 
1903
exports.stringTrimLeft = function (string) {
 
1904
    return string.replace(trimBeginRegexp, '');
 
1905
};
 
1906
 
 
1907
exports.stringTrimRight = function (string) {
 
1908
    return string.replace(trimEndRegexp, '');
 
1909
};
 
1910
 
 
1911
exports.copyObject = function(obj) {
 
1912
    var copy = {};
 
1913
    for (var key in obj) {
 
1914
        copy[key] = obj[key];
 
1915
    }
 
1916
    return copy;
 
1917
};
 
1918
 
 
1919
exports.copyArray = function(array){
 
1920
    var copy = [];
 
1921
    for (var i=0, l=array.length; i<l; i++) {
 
1922
        if (array[i] && typeof array[i] == "object")
 
1923
            copy[i] = this.copyObject( array[i] );
 
1924
        else 
 
1925
            copy[i] = array[i];
 
1926
    }
 
1927
    return copy;
 
1928
};
 
1929
 
 
1930
exports.deepCopy = function (obj) {
 
1931
    if (typeof obj != "object") {
 
1932
        return obj;
 
1933
    }
 
1934
    
 
1935
    var copy = obj.constructor();
 
1936
    for (var key in obj) {
 
1937
        if (typeof obj[key] == "object") {
 
1938
            copy[key] = this.deepCopy(obj[key]);
 
1939
        } else {
 
1940
            copy[key] = obj[key];
 
1941
        }
 
1942
    }
 
1943
    return copy;
 
1944
};
 
1945
 
 
1946
exports.arrayToMap = function(arr) {
 
1947
    var map = {};
 
1948
    for (var i=0; i<arr.length; i++) {
 
1949
        map[arr[i]] = 1;
 
1950
    }
 
1951
    return map;
 
1952
 
 
1953
};
 
1954
 
 
1955
exports.createMap = function(props) {
 
1956
    var map = Object.create(null);
 
1957
    for (var i in props) {
 
1958
        map[i] = props[i];
 
1959
    }
 
1960
    return map;
 
1961
};
 
1962
exports.arrayRemove = function(array, value) {
 
1963
  for (var i = 0; i <= array.length; i++) {
 
1964
    if (value === array[i]) {
 
1965
      array.splice(i, 1);
 
1966
    }
 
1967
  }
 
1968
};
 
1969
 
 
1970
exports.escapeRegExp = function(str) {
 
1971
    return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
 
1972
};
 
1973
 
 
1974
exports.escapeHTML = function(str) {
 
1975
    return str.replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
 
1976
};
 
1977
 
 
1978
exports.getMatchOffsets = function(string, regExp) {
 
1979
    var matches = [];
 
1980
 
 
1981
    string.replace(regExp, function(str) {
 
1982
        matches.push({
 
1983
            offset: arguments[arguments.length-2],
 
1984
            length: str.length
 
1985
        });
 
1986
    });
 
1987
 
 
1988
    return matches;
 
1989
};
 
1990
exports.deferredCall = function(fcn) {
 
1991
 
 
1992
    var timer = null;
 
1993
    var callback = function() {
 
1994
        timer = null;
 
1995
        fcn();
 
1996
    };
 
1997
 
 
1998
    var deferred = function(timeout) {
 
1999
        deferred.cancel();
 
2000
        timer = setTimeout(callback, timeout || 0);
 
2001
        return deferred;
 
2002
    };
 
2003
 
 
2004
    deferred.schedule = deferred;
 
2005
 
 
2006
    deferred.call = function() {
 
2007
        this.cancel();
 
2008
        fcn();
 
2009
        return deferred;
 
2010
    };
 
2011
 
 
2012
    deferred.cancel = function() {
 
2013
        clearTimeout(timer);
 
2014
        timer = null;
 
2015
        return deferred;
 
2016
    };
 
2017
 
 
2018
    return deferred;
 
2019
};
 
2020
 
 
2021
 
 
2022
exports.delayedCall = function(fcn, defaultTimeout) {
 
2023
    var timer = null;
 
2024
    var callback = function() {
 
2025
        timer = null;
 
2026
        fcn();
 
2027
    };
 
2028
 
 
2029
    var _self = function(timeout) {
 
2030
        timer && clearTimeout(timer);
 
2031
        timer = setTimeout(callback, timeout || defaultTimeout);
 
2032
    };
 
2033
 
 
2034
    _self.delay = _self;
 
2035
    _self.schedule = function(timeout) {
 
2036
        if (timer == null)
 
2037
            timer = setTimeout(callback, timeout || 0);
 
2038
    };
 
2039
 
 
2040
    _self.call = function() {
 
2041
        this.cancel();
 
2042
        fcn();
 
2043
    };
 
2044
 
 
2045
    _self.cancel = function() {
 
2046
        timer && clearTimeout(timer);
 
2047
        timer = null;
 
2048
    };
 
2049
 
 
2050
    _self.isPending = function() {
 
2051
        return timer;
 
2052
    };
 
2053
 
 
2054
    return _self;
 
2055
};
 
2056
});
 
2057
 
 
2058
 
 
2059
 
 
2060
define('ace/mode/php/php', ['require', 'exports', 'module' ], function(require, exports, module) {
 
2061
 
 
2062
var PHP = {Constants:{}};
 
2063
 
 
2064
 
 
2065
 
 
2066
 
 
2067
 
 
2068
 
 
2069
PHP.Constants.T_INCLUDE = 262;
 
2070
PHP.Constants.T_INCLUDE_ONCE = 261;
 
2071
PHP.Constants.T_EVAL = 260;
 
2072
PHP.Constants.T_REQUIRE = 259;
 
2073
PHP.Constants.T_REQUIRE_ONCE = 258;
 
2074
PHP.Constants.T_LOGICAL_OR = 263;
 
2075
PHP.Constants.T_LOGICAL_XOR = 264;
 
2076
PHP.Constants.T_LOGICAL_AND = 265;
 
2077
PHP.Constants.T_PRINT = 266;
 
2078
PHP.Constants.T_PLUS_EQUAL = 277;
 
2079
PHP.Constants.T_MINUS_EQUAL = 276;
 
2080
PHP.Constants.T_MUL_EQUAL = 275;
 
2081
PHP.Constants.T_DIV_EQUAL = 274;
 
2082
PHP.Constants.T_CONCAT_EQUAL = 273;
 
2083
PHP.Constants.T_MOD_EQUAL = 272;
 
2084
PHP.Constants.T_AND_EQUAL = 271;
 
2085
PHP.Constants.T_OR_EQUAL = 270;
 
2086
PHP.Constants.T_XOR_EQUAL = 269;
 
2087
PHP.Constants.T_SL_EQUAL = 268;
 
2088
PHP.Constants.T_SR_EQUAL = 267;
 
2089
PHP.Constants.T_BOOLEAN_OR = 278;
 
2090
PHP.Constants.T_BOOLEAN_AND = 279;
 
2091
PHP.Constants.T_IS_EQUAL = 283;
 
2092
PHP.Constants.T_IS_NOT_EQUAL = 282;
 
2093
PHP.Constants.T_IS_IDENTICAL = 281;
 
2094
PHP.Constants.T_IS_NOT_IDENTICAL = 280;
 
2095
PHP.Constants.T_IS_SMALLER_OR_EQUAL = 285;
 
2096
PHP.Constants.T_IS_GREATER_OR_EQUAL = 284;
 
2097
PHP.Constants.T_SL = 287;
 
2098
PHP.Constants.T_SR = 286;
 
2099
PHP.Constants.T_INSTANCEOF = 288;
 
2100
PHP.Constants.T_INC = 297;
 
2101
PHP.Constants.T_DEC = 296;
 
2102
PHP.Constants.T_INT_CAST = 295;
 
2103
PHP.Constants.T_DOUBLE_CAST = 294;
 
2104
PHP.Constants.T_STRING_CAST = 293;
 
2105
PHP.Constants.T_ARRAY_CAST = 292;
 
2106
PHP.Constants.T_OBJECT_CAST = 291;
 
2107
PHP.Constants.T_BOOL_CAST = 290;
 
2108
PHP.Constants.T_UNSET_CAST = 289;
 
2109
PHP.Constants.T_NEW = 299;
 
2110
PHP.Constants.T_CLONE = 298;
 
2111
PHP.Constants.T_EXIT = 300;
 
2112
PHP.Constants.T_IF = 301;
 
2113
PHP.Constants.T_ELSEIF = 302;
 
2114
PHP.Constants.T_ELSE = 303;
 
2115
PHP.Constants.T_ENDIF = 304;
 
2116
PHP.Constants.T_LNUMBER = 305;
 
2117
PHP.Constants.T_DNUMBER = 306;
 
2118
PHP.Constants.T_STRING = 307;
 
2119
PHP.Constants.T_STRING_VARNAME = 308;
 
2120
PHP.Constants.T_VARIABLE = 309;
 
2121
PHP.Constants.T_NUM_STRING = 310;
 
2122
PHP.Constants.T_INLINE_HTML = 311;
 
2123
PHP.Constants.T_CHARACTER = 312;
 
2124
PHP.Constants.T_BAD_CHARACTER = 313;
 
2125
PHP.Constants.T_ENCAPSED_AND_WHITESPACE = 314;
 
2126
PHP.Constants.T_CONSTANT_ENCAPSED_STRING = 315;
 
2127
PHP.Constants.T_ECHO = 316;
 
2128
PHP.Constants.T_DO = 317;
 
2129
PHP.Constants.T_WHILE = 318;
 
2130
PHP.Constants.T_ENDWHILE = 319;
 
2131
PHP.Constants.T_FOR = 320;
 
2132
PHP.Constants.T_ENDFOR = 321;
 
2133
PHP.Constants.T_FOREACH = 322;
 
2134
PHP.Constants.T_ENDFOREACH = 323;
 
2135
PHP.Constants.T_DECLARE = 324;
 
2136
PHP.Constants.T_ENDDECLARE = 325;
 
2137
PHP.Constants.T_AS = 326;
 
2138
PHP.Constants.T_SWITCH = 327;
 
2139
PHP.Constants.T_ENDSWITCH = 328;
 
2140
PHP.Constants.T_CASE = 329;
 
2141
PHP.Constants.T_DEFAULT = 330;
 
2142
PHP.Constants.T_BREAK = 331;
 
2143
PHP.Constants.T_CONTINUE = 332;
 
2144
PHP.Constants.T_GOTO = 333;
 
2145
PHP.Constants.T_FUNCTION = 334;
 
2146
PHP.Constants.T_CONST = 335;
 
2147
PHP.Constants.T_RETURN = 336;
 
2148
PHP.Constants.T_TRY = 337;
 
2149
PHP.Constants.T_CATCH = 338;
 
2150
PHP.Constants.T_THROW = 339;
 
2151
PHP.Constants.T_USE = 340;
 
2152
PHP.Constants.T_GLOBAL = 341;
 
2153
PHP.Constants.T_STATIC = 347;
 
2154
PHP.Constants.T_ABSTRACT = 346;
 
2155
PHP.Constants.T_FINAL = 345;
 
2156
PHP.Constants.T_PRIVATE = 344;
 
2157
PHP.Constants.T_PROTECTED = 343;
 
2158
PHP.Constants.T_PUBLIC = 342;
 
2159
PHP.Constants.T_VAR = 348;
 
2160
PHP.Constants.T_UNSET = 349;
 
2161
PHP.Constants.T_ISSET = 350;
 
2162
PHP.Constants.T_EMPTY = 351;
 
2163
PHP.Constants.T_HALT_COMPILER = 352;
 
2164
PHP.Constants.T_CLASS = 353;
 
2165
PHP.Constants.T_INTERFACE = 354;
 
2166
PHP.Constants.T_EXTENDS = 355;
 
2167
PHP.Constants.T_IMPLEMENTS = 356;
 
2168
PHP.Constants.T_OBJECT_OPERATOR = 357;
 
2169
PHP.Constants.T_DOUBLE_ARROW = 358;
 
2170
PHP.Constants.T_LIST = 359;
 
2171
PHP.Constants.T_ARRAY = 360;
 
2172
PHP.Constants.T_CLASS_C = 361;
 
2173
PHP.Constants.T_TRAIT_C = 381;
 
2174
PHP.Constants.T_METHOD_C = 362;
 
2175
PHP.Constants.T_FUNC_C = 363;
 
2176
PHP.Constants.T_LINE = 364;
 
2177
PHP.Constants.T_FILE = 365;
 
2178
PHP.Constants.T_COMMENT = 366;
 
2179
PHP.Constants.T_DOC_COMMENT = 367;
 
2180
PHP.Constants.T_OPEN_TAG = 368;
 
2181
PHP.Constants.T_OPEN_TAG_WITH_ECHO = 369;
 
2182
PHP.Constants.T_CLOSE_TAG = 370;
 
2183
PHP.Constants.T_WHITESPACE = 371;
 
2184
PHP.Constants.T_START_HEREDOC = 372;
 
2185
PHP.Constants.T_END_HEREDOC = 373;
 
2186
PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 374;
 
2187
PHP.Constants.T_CURLY_OPEN = 375;
 
2188
PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM = 376;
 
2189
PHP.Constants.T_DOUBLE_COLON = 376;
 
2190
PHP.Constants.T_NAMESPACE = 377;
 
2191
PHP.Constants.T_NS_C = 378;
 
2192
PHP.Constants.T_DIR = 379;
 
2193
PHP.Constants.T_NS_SEPARATOR = 380;
 
2194
PHP.Lexer = function( src, ini ) {
 
2195
 
 
2196
 
 
2197
    var heredoc,
 
2198
    lineBreaker = function( result ) {
 
2199
        if (result.match(/\n/) !== null) {
 
2200
            var quote = result.substring(0, 1);
 
2201
            result = '[' + result.split(/\n/).join( quote + "," + quote ) + '].join("\\n")';
 
2202
 
 
2203
        }
 
2204
 
 
2205
        return result;
 
2206
    },
 
2207
    prev,
 
2208
 
 
2209
    openTag = (ini === undefined || (/^(on|true|1)$/i.test(ini.short_open_tag) ) ? /(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i : /(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i),
 
2210
        openTagStart = (ini === undefined || (/^(on|true|1)$/i.test(ini.short_open_tag)) ? /^(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i : /^(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i),
 
2211
            tokens = [
 
2212
            {
 
2213
                value: PHP.Constants.T_ABSTRACT,
 
2214
                re: /^abstract(?=\s)/i
 
2215
            },
 
2216
            {
 
2217
                value: PHP.Constants.T_IMPLEMENTS,
 
2218
                re: /^implements(?=\s)/i
 
2219
            },
 
2220
            {
 
2221
                value: PHP.Constants.T_INTERFACE,
 
2222
                re: /^interface(?=\s)/i
 
2223
            },
 
2224
            {
 
2225
                value: PHP.Constants.T_CONST,
 
2226
                re: /^const(?=\s)/i
 
2227
            },
 
2228
            {
 
2229
                value: PHP.Constants.T_STATIC,
 
2230
                re: /^static(?=\s)/i
 
2231
            },
 
2232
            {
 
2233
                value: PHP.Constants.T_FINAL,
 
2234
                re: /^final(?=\s)/i
 
2235
            },
 
2236
            {
 
2237
                value: PHP.Constants.T_VAR,
 
2238
                re: /^var(?=\s)/i
 
2239
            },
 
2240
            {
 
2241
                value: PHP.Constants.T_GLOBAL,
 
2242
                re: /^global(?=\s)/i
 
2243
            },
 
2244
            {
 
2245
                value: PHP.Constants.T_CLONE,
 
2246
                re: /^clone(?=\s)/i
 
2247
            },
 
2248
            {
 
2249
                value: PHP.Constants.T_THROW,
 
2250
                re: /^throw(?=\s)/i
 
2251
            },
 
2252
            {
 
2253
                value: PHP.Constants.T_EXTENDS,
 
2254
                re: /^extends(?=\s)/i
 
2255
            },
 
2256
            {
 
2257
                value: PHP.Constants.T_AND_EQUAL,
 
2258
                re: /^&=/
 
2259
            },
 
2260
            {
 
2261
                value: PHP.Constants.T_AS,
 
2262
                re: /^as(?=\s)/i
 
2263
            },
 
2264
            {
 
2265
                value: PHP.Constants.T_ARRAY_CAST,
 
2266
                re: /^\(array\)/i
 
2267
            },
 
2268
            {
 
2269
                value: PHP.Constants.T_BOOL_CAST,
 
2270
                re: /^\((bool|boolean)\)/i
 
2271
            },
 
2272
            {
 
2273
                value: PHP.Constants.T_DOUBLE_CAST,
 
2274
                re: /^\((real|float|double)\)/i
 
2275
            },
 
2276
            {
 
2277
                value: PHP.Constants.T_INT_CAST,
 
2278
                re: /^\((int|integer)\)/i
 
2279
            },
 
2280
            {
 
2281
                value: PHP.Constants.T_OBJECT_CAST,
 
2282
                re: /^\(object\)/i
 
2283
            },
 
2284
            {
 
2285
                value: PHP.Constants.T_STRING_CAST,
 
2286
                re: /^\(string\)/i
 
2287
            },
 
2288
            {
 
2289
                value: PHP.Constants.T_UNSET_CAST,
 
2290
                re: /^\(unset\)/i
 
2291
            },
 
2292
            {
 
2293
                value: PHP.Constants.T_TRY,
 
2294
                re: /^try(?=\s*{)/i
 
2295
            },
 
2296
            {
 
2297
                value: PHP.Constants.T_CATCH,
 
2298
                re: /^catch(?=\s*\()/i
 
2299
            },
 
2300
            {
 
2301
                value: PHP.Constants.T_INSTANCEOF,
 
2302
                re: /^instanceof(?=\s)/i
 
2303
            },
 
2304
            {
 
2305
                value: PHP.Constants.T_LOGICAL_OR,
 
2306
                re: /^or(?=\s)/i
 
2307
            },
 
2308
            {
 
2309
                value: PHP.Constants.T_LOGICAL_AND,
 
2310
                re: /^and(?=\s)/i
 
2311
            },
 
2312
            {
 
2313
                value: PHP.Constants.T_LOGICAL_XOR,
 
2314
                re: /^xor(?=\s)/i
 
2315
            },
 
2316
            {
 
2317
                value: PHP.Constants.T_BOOLEAN_AND,
 
2318
                re: /^&&/
 
2319
            },
 
2320
            {
 
2321
                value: PHP.Constants.T_BOOLEAN_OR,
 
2322
                re: /^\|\|/
 
2323
            },
 
2324
            {
 
2325
                value: PHP.Constants.T_CONTINUE,
 
2326
                re: /^continue(?=\s|;)/i
 
2327
            },
 
2328
            {
 
2329
                value: PHP.Constants.T_BREAK,
 
2330
                re: /^break(?=\s|;)/i
 
2331
            },
 
2332
            {
 
2333
                value: PHP.Constants.T_ENDDECLARE,
 
2334
                re: /^enddeclare(?=\s|;)/i
 
2335
            },
 
2336
            {
 
2337
                value: PHP.Constants.T_ENDFOR,
 
2338
                re: /^endfor(?=\s|;)/i
 
2339
            },
 
2340
            {
 
2341
                value: PHP.Constants.T_ENDFOREACH,
 
2342
                re: /^endforeach(?=\s|;)/i
 
2343
            },
 
2344
            {
 
2345
                value: PHP.Constants.T_ENDIF,
 
2346
                re: /^endif(?=\s|;)/i
 
2347
            },
 
2348
            {
 
2349
                value: PHP.Constants.T_ENDSWITCH,
 
2350
                re: /^endswitch(?=\s|;)/i
 
2351
            },
 
2352
            {
 
2353
                value: PHP.Constants.T_ENDWHILE,
 
2354
                re: /^endwhile(?=\s|;)/i
 
2355
            },
 
2356
            {
 
2357
                value: PHP.Constants.T_CASE,
 
2358
                re: /^case(?=\s)/i
 
2359
            },
 
2360
            {
 
2361
                value: PHP.Constants.T_DEFAULT,
 
2362
                re: /^default(?=\s|:)/i
 
2363
            },
 
2364
            {
 
2365
                value: PHP.Constants.T_SWITCH,
 
2366
                re: /^switch(?=[ (])/i
 
2367
            },
 
2368
            {
 
2369
                value: PHP.Constants.T_EXIT,
 
2370
                re: /^(exit|die)(?=[ \(;])/i
 
2371
            },
 
2372
            {
 
2373
                value: PHP.Constants.T_CLOSE_TAG,
 
2374
                re: /^(\?\>|\%\>|\<\/script\>)\s?\s?/i,
 
2375
                func: function( result ) {
 
2376
                    insidePHP = false;
 
2377
                    return result;
 
2378
                }
 
2379
            },
 
2380
            {
 
2381
                value: PHP.Constants.T_DOUBLE_ARROW,
 
2382
                re: /^\=\>/
 
2383
            },
 
2384
            {
 
2385
                value: PHP.Constants.T_DOUBLE_COLON,
 
2386
                re: /^\:\:/
 
2387
            },
 
2388
            {
 
2389
                value: PHP.Constants.T_METHOD_C,
 
2390
                re: /^__METHOD__/
 
2391
            },
 
2392
            {
 
2393
                value: PHP.Constants.T_LINE,
 
2394
                re: /^__LINE__/
 
2395
            },
 
2396
            {
 
2397
                value: PHP.Constants.T_FILE,
 
2398
                re: /^__FILE__/
 
2399
            },
 
2400
            {
 
2401
                value: PHP.Constants.T_FUNC_C,
 
2402
                re: /^__FUNCTION__/
 
2403
            },
 
2404
            {
 
2405
                value: PHP.Constants.T_NS_C,
 
2406
                re: /^__NAMESPACE__/
 
2407
            },
 
2408
            {
 
2409
                value: PHP.Constants.T_TRAIT_C,
 
2410
                re: /^__TRAIT__/
 
2411
            },
 
2412
            {
 
2413
                value: PHP.Constants.T_DIR,
 
2414
                re: /^__DIR__/
 
2415
            },
 
2416
            {
 
2417
                value: PHP.Constants.T_CLASS_C,
 
2418
                re: /^__CLASS__/
 
2419
            },
 
2420
            {
 
2421
                value: PHP.Constants.T_INC,
 
2422
                re: /^\+\+/
 
2423
            },
 
2424
            {
 
2425
                value: PHP.Constants.T_DEC,
 
2426
                re: /^\-\-/
 
2427
            },
 
2428
            {
 
2429
                value: PHP.Constants.T_CONCAT_EQUAL,
 
2430
                re: /^\.\=/
 
2431
            },
 
2432
            {
 
2433
                value: PHP.Constants.T_DIV_EQUAL,
 
2434
                re: /^\/\=/
 
2435
            },
 
2436
            {
 
2437
                value: PHP.Constants.T_XOR_EQUAL,
 
2438
                re: /^\^\=/
 
2439
            },
 
2440
            {
 
2441
                value: PHP.Constants.T_MUL_EQUAL,
 
2442
                re: /^\*\=/
 
2443
            },
 
2444
            {
 
2445
                value: PHP.Constants.T_MOD_EQUAL,
 
2446
                re: /^\%\=/
 
2447
            },
 
2448
            {
 
2449
                value: PHP.Constants.T_SL_EQUAL,
 
2450
                re: /^<<=/
 
2451
            },
 
2452
            {
 
2453
                value: PHP.Constants.T_START_HEREDOC,
 
2454
                re: /^<<<[A-Z_0-9]+\s/i,
 
2455
                func: function( result ){
 
2456
                    heredoc = result.substring(3, result.length - 1);
 
2457
                    return result;
 
2458
                }
 
2459
            },
 
2460
            {
 
2461
                value: PHP.Constants.T_SL,
 
2462
                re: /^<</
 
2463
            },
 
2464
            {
 
2465
                value: PHP.Constants.T_IS_SMALLER_OR_EQUAL,
 
2466
                re: /^<=/
 
2467
            },
 
2468
            {
 
2469
                value: PHP.Constants.T_SR_EQUAL,
 
2470
                re: /^>>=/
 
2471
            },
 
2472
            {
 
2473
                value: PHP.Constants.T_SR,
 
2474
                re: /^>>/
 
2475
            },
 
2476
            {
 
2477
                value: PHP.Constants.T_IS_GREATER_OR_EQUAL,
 
2478
                re: /^>=/
 
2479
            },
 
2480
            {
 
2481
                value: PHP.Constants.T_OR_EQUAL,
 
2482
                re: /^\|\=/
 
2483
            },
 
2484
            {
 
2485
                value: PHP.Constants.T_PLUS_EQUAL,
 
2486
                re: /^\+\=/
 
2487
            },
 
2488
            {
 
2489
                value: PHP.Constants.T_MINUS_EQUAL,
 
2490
                re: /^-\=/
 
2491
            },
 
2492
            {
 
2493
                value: PHP.Constants.T_OBJECT_OPERATOR,
 
2494
                re: /^\-\>/i
 
2495
            },
 
2496
            {
 
2497
                value: PHP.Constants.T_CLASS,
 
2498
                re: /^class(?=[\s\{])/i,
 
2499
                afterWhitespace: true
 
2500
            },
 
2501
            {
 
2502
                value: PHP.Constants.T_PUBLIC,
 
2503
                re: /^public(?=[\s])/i
 
2504
            },
 
2505
            {
 
2506
                value: PHP.Constants.T_PRIVATE,
 
2507
                re: /^private(?=[\s])/i
 
2508
            },
 
2509
            {
 
2510
                value: PHP.Constants.T_PROTECTED,
 
2511
                re: /^protected(?=[\s])/i
 
2512
            },
 
2513
            {
 
2514
                value: PHP.Constants.T_ARRAY,
 
2515
                re: /^array(?=\s*?\()/i
 
2516
            },
 
2517
            {
 
2518
                value: PHP.Constants.T_EMPTY,
 
2519
                re: /^empty(?=[ \(])/i
 
2520
            },
 
2521
            {
 
2522
                value: PHP.Constants.T_ISSET,
 
2523
                re: /^isset(?=[ \(])/i
 
2524
            },
 
2525
            {
 
2526
                value: PHP.Constants.T_UNSET,
 
2527
                re: /^unset(?=[ \(])/i
 
2528
            },
 
2529
            {
 
2530
                value: PHP.Constants.T_RETURN,
 
2531
                re: /^return(?=[ "'(;])/i
 
2532
            },
 
2533
            {
 
2534
                value: PHP.Constants.T_FUNCTION,
 
2535
                re: /^function(?=[ "'(;])/i
 
2536
            },
 
2537
            {
 
2538
                value: PHP.Constants.T_ECHO,
 
2539
                re: /^echo(?=[ "'(;])/i
 
2540
            },
 
2541
            {
 
2542
                value: PHP.Constants.T_LIST,
 
2543
                re: /^list(?=\s*?\()/i
 
2544
            },
 
2545
            {
 
2546
                value: PHP.Constants.T_PRINT,
 
2547
                re: /^print(?=[ "'(;])/i
 
2548
            },
 
2549
            {
 
2550
                value: PHP.Constants.T_INCLUDE,
 
2551
                re: /^include(?=[ "'(;])/i
 
2552
            },
 
2553
            {
 
2554
                value: PHP.Constants.T_INCLUDE_ONCE,
 
2555
                re: /^include_once(?=[ "'(;])/i
 
2556
            },
 
2557
            {
 
2558
                value: PHP.Constants.T_REQUIRE,
 
2559
                re: /^require(?=[ "'(;])/i
 
2560
            },
 
2561
            {
 
2562
                value: PHP.Constants.T_REQUIRE_ONCE,
 
2563
                re: /^require_once(?=[ "'(;])/i
 
2564
            },
 
2565
            {
 
2566
                value: PHP.Constants.T_NEW,
 
2567
                re: /^new(?=[ ])/i
 
2568
            },
 
2569
            {
 
2570
                value: PHP.Constants.T_COMMENT,
 
2571
                re: /^\/\*([\S\s]*?)(?:\*\/|$)/
 
2572
            },
 
2573
            {
 
2574
                value: PHP.Constants.T_COMMENT,
 
2575
                re: /^\/\/.*(\s)?/
 
2576
            },
 
2577
            {
 
2578
                value: PHP.Constants.T_COMMENT,
 
2579
                re: /^\#.*(\s)?/
 
2580
            },
 
2581
            {
 
2582
                value: PHP.Constants.T_ELSEIF,
 
2583
                re: /^elseif(?=[\s(])/i
 
2584
            },
 
2585
            {
 
2586
                value: PHP.Constants.T_GOTO,
 
2587
                re: /^goto(?=[\s(])/i
 
2588
            },
 
2589
            {
 
2590
                value: PHP.Constants.T_ELSE,
 
2591
                re: /^else(?=[\s{:])/i
 
2592
            },
 
2593
            {
 
2594
                value: PHP.Constants.T_IF,
 
2595
                re: /^if(?=[\s(])/i
 
2596
            },
 
2597
            {
 
2598
                value: PHP.Constants.T_DO,
 
2599
                re: /^do(?=[ {])/i
 
2600
            },
 
2601
            {
 
2602
                value: PHP.Constants.T_WHILE,
 
2603
                re: /^while(?=[ (])/i
 
2604
            },
 
2605
            {
 
2606
                value: PHP.Constants.T_FOREACH,
 
2607
                re: /^foreach(?=[ (])/i
 
2608
            },
 
2609
            {
 
2610
                value: PHP.Constants.T_ISSET,
 
2611
                re: /^isset(?=[ (])/i
 
2612
            },
 
2613
            {
 
2614
                value: PHP.Constants.T_IS_IDENTICAL,
 
2615
                re: /^===/
 
2616
            },
 
2617
            {
 
2618
                value: PHP.Constants.T_IS_EQUAL,
 
2619
                re: /^==/
 
2620
            },
 
2621
            {
 
2622
                value: PHP.Constants.T_IS_NOT_IDENTICAL,
 
2623
                re: /^\!==/
 
2624
            },
 
2625
            {
 
2626
                value: PHP.Constants.T_IS_NOT_EQUAL,
 
2627
                re: /^(\!=|\<\>)/
 
2628
            },
 
2629
            {
 
2630
                value: PHP.Constants.T_FOR,
 
2631
                re: /^for(?=[ (])/i
 
2632
            },
 
2633
 
 
2634
            {
 
2635
                value: PHP.Constants.T_DNUMBER,
 
2636
                re: /^[0-9]*\.[0-9]+([eE][-]?[0-9]*)?/
 
2637
 
 
2638
            },
 
2639
            {
 
2640
                value: PHP.Constants.T_LNUMBER,
 
2641
                re: /^(0x[0-9A-F]+|[0-9]+)/i
 
2642
            },
 
2643
            {
 
2644
                value: PHP.Constants.T_OPEN_TAG_WITH_ECHO,
 
2645
                re: /^(\<\?=|\<\%=)/i
 
2646
            },
 
2647
            {
 
2648
                value: PHP.Constants.T_OPEN_TAG,
 
2649
                re: openTagStart
 
2650
            },
 
2651
            {
 
2652
                value: PHP.Constants.T_VARIABLE,
 
2653
                re: /^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/
 
2654
            },
 
2655
            {
 
2656
                value: PHP.Constants.T_WHITESPACE,
 
2657
                re: /^\s+/
 
2658
            },
 
2659
            {
 
2660
                value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING,
 
2661
                re: /^("(?:[^"\\]|\\[\s\S])*"|'(?:[^'\\]|\\[\s\S])*')/,
 
2662
                func: function( result, token ) {
 
2663
 
 
2664
                    var curlyOpen = 0,
 
2665
                    len,
 
2666
                    bracketOpen = 0;
 
2667
 
 
2668
                    if (result.substring( 0,1 ) === "'") {
 
2669
                        return result;
 
2670
                    }
 
2671
 
 
2672
                    var match = result.match( /(?:[^\\]|\\.)*[^\\]\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/g );
 
2673
                    if ( match !== null ) {
 
2674
 
 
2675
                        while( result.length > 0 ) {
 
2676
                            len = result.length;
 
2677
                            match = result.match( /^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\@\^\%\"\'\{\}]/ );
 
2678
 
 
2679
                            if ( match !== null ) {
 
2680
 
 
2681
                                results.push( match[ 0 ] );
 
2682
                                result = result.substring( 1 );
 
2683
 
 
2684
                                if ( curlyOpen > 0 && match[ 0 ] === "}") {
 
2685
                                    curlyOpen--;
 
2686
                                }
 
2687
 
 
2688
                                if ( match[ 0 ] === "[" ) {
 
2689
                                    bracketOpen++;
 
2690
                                }
 
2691
 
 
2692
                                if ( match[ 0 ] === "]" ) {
 
2693
                                    bracketOpen--;
 
2694
                                }
 
2695
 
 
2696
                            }
 
2697
 
 
2698
                            match = result.match(/^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/);
 
2699
 
 
2700
 
 
2701
 
 
2702
                            if ( match !== null ) {
 
2703
 
 
2704
                                results.push([
 
2705
                                    parseInt(PHP.Constants.T_VARIABLE, 10),
 
2706
                                    match[ 0 ],
 
2707
                                    line
 
2708
                                    ]);
 
2709
 
 
2710
                                result = result.substring( match[ 0 ].length );
 
2711
 
 
2712
                                match = result.match(/^(\-\>)([a-zA-Z0-9_\x7f-\xff]*)/);
 
2713
 
 
2714
                                if ( match !== null ) {
 
2715
 
 
2716
                                    results.push([
 
2717
                                        parseInt(PHP.Constants.T_OBJECT_OPERATOR, 10),
 
2718
                                        match[ 1 ],
 
2719
                                        line
 
2720
                                        ]);
 
2721
                                    results.push([
 
2722
                                        parseInt(PHP.Constants.T_STRING, 10),
 
2723
                                        match[ 2 ],
 
2724
                                        line
 
2725
                                        ]);
 
2726
                                    result = result.substring( match[ 0 ].length );
 
2727
                                }
 
2728
 
 
2729
 
 
2730
                                if ( result.match( /^\[/g ) !== null ) {
 
2731
                                    continue;
 
2732
                                }
 
2733
                            }
 
2734
 
 
2735
                            var re;
 
2736
                            if ( curlyOpen > 0) {
 
2737
                                re = /^([^\\\$"{}\]]|\\.)+/g;
 
2738
                            } else {
 
2739
                                re = /^([^\\\$"{]|\\.|{[^\$])+/g;
 
2740
                            }
 
2741
 
 
2742
                            while(( match = result.match( re )) !== null ) {
 
2743
 
 
2744
 
 
2745
                                if (result.length === 1) {
 
2746
                                    throw new Error(match);
 
2747
                                }
 
2748
 
 
2749
 
 
2750
 
 
2751
                                results.push([
 
2752
                                    parseInt(( curlyOpen > 0 ) ? PHP.Constants.T_CONSTANT_ENCAPSED_STRING : PHP.Constants.T_ENCAPSED_AND_WHITESPACE, 10),
 
2753
                                    match[ 0 ],
 
2754
                                    line
 
2755
                                    ]);
 
2756
 
 
2757
                                line += match[ 0 ].split('\n').length - 1;
 
2758
 
 
2759
                                result = result.substring( match[ 0 ].length );
 
2760
 
 
2761
                            }
 
2762
 
 
2763
                            if( result.match(/^{\$/) !== null ) {
 
2764
 
 
2765
                                results.push([
 
2766
                                    parseInt(PHP.Constants.T_CURLY_OPEN, 10),
 
2767
                                    "{",
 
2768
                                    line
 
2769
                                    ]);
 
2770
                                result = result.substring( 1 );
 
2771
                                curlyOpen++;
 
2772
                            }
 
2773
 
 
2774
                            if (len === result.length) {
 
2775
                                if ((match =  result.match( /^(([^\\]|\\.)*?[^\\]\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/g )) !== null) {
 
2776
                                    return;
 
2777
                                }
 
2778
                            }
 
2779
 
 
2780
                        }
 
2781
 
 
2782
                        return undefined;
 
2783
 
 
2784
                    }
 
2785
                    return result;
 
2786
                }
 
2787
            },
 
2788
            {
 
2789
                value: PHP.Constants.T_STRING,
 
2790
                re: /^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/
 
2791
            },
 
2792
            {
 
2793
                value: -1,
 
2794
                re: /^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\"\'\$\~]/
 
2795
            }];
 
2796
 
 
2797
 
 
2798
 
 
2799
 
 
2800
 
 
2801
            var results = [],
 
2802
            line = 1,
 
2803
            insidePHP = false,
 
2804
            cancel = true;
 
2805
 
 
2806
            if ( src === null ) {
 
2807
                return results;
 
2808
            }
 
2809
 
 
2810
            if ( typeof src !== "string" ) {
 
2811
                src = src.toString();
 
2812
            }
 
2813
 
 
2814
 
 
2815
 
 
2816
            while (src.length > 0 && cancel === true) {
 
2817
 
 
2818
                if ( insidePHP === true ) {
 
2819
 
 
2820
                    if ( heredoc !== undefined ) {
 
2821
 
 
2822
                        var regexp = new RegExp('([\\S\\s]*)(\\r\\n|\\n|\\r)(' + heredoc + ')(;|\\r\\n|\\n)',"i");
 
2823
 
 
2824
 
 
2825
 
 
2826
                        var result = src.match( regexp );
 
2827
                        if ( result !== null ) {
 
2828
 
 
2829
                            results.push([
 
2830
                                parseInt(PHP.Constants.T_ENCAPSED_AND_WHITESPACE, 10),
 
2831
                                result[ 1 ].replace(/^\n/g,"").replace(/\\\$/g,"$") + "\n",
 
2832
                                line
 
2833
                                ]);
 
2834
                            line += result[ 1 ].split('\n').length;
 
2835
                            results.push([
 
2836
                                parseInt(PHP.Constants.T_END_HEREDOC, 10),
 
2837
                                result[ 3 ],
 
2838
                                line
 
2839
                                ]);
 
2840
 
 
2841
                            src = src.substring( result[1].length + result[2].length + result[3].length );
 
2842
                            heredoc = undefined;
 
2843
                        }
 
2844
 
 
2845
                        if (result === null) {
 
2846
                            throw Error("sup");
 
2847
                        }
 
2848
 
 
2849
 
 
2850
                    } else {
 
2851
                        cancel =  tokens.some(function( token ){
 
2852
                            if ( token.afterWhitespace === true ) {
 
2853
                                var last = results[ results.length - 1 ];
 
2854
                                if ( !Array.isArray( last ) || (last[ 0 ] !== PHP.Constants.T_WHITESPACE && last[ 0 ] !== PHP.Constants.T_OPEN_TAG  && last[ 0 ] !== PHP.Constants.T_COMMENT)) {
 
2855
                                    return false;
 
2856
                                }
 
2857
                            }
 
2858
                            var result = src.match( token.re );
 
2859
 
 
2860
                            if ( result !== null ) {
 
2861
                                if ( token.value !== -1) {
 
2862
                                    var resultString = result[ 0 ];
 
2863
 
 
2864
 
 
2865
 
 
2866
                                    if (token.func !== undefined ) {
 
2867
                                        resultString = token.func( resultString, token );
 
2868
                                    }
 
2869
                                    if (resultString !== undefined ) {
 
2870
 
 
2871
                                        results.push([
 
2872
                                            parseInt(token.value, 10),
 
2873
                                            resultString,
 
2874
                                            line
 
2875
                                            ]);
 
2876
                                        line += resultString.split('\n').length - 1;
 
2877
                                    }
 
2878
 
 
2879
                                } else {
 
2880
                                    results.push( result[ 0 ] );
 
2881
                                }
 
2882
 
 
2883
                                src = src.substring(result[ 0 ].length);
 
2884
 
 
2885
                                return true;
 
2886
                            }
 
2887
                            return false;
 
2888
 
 
2889
 
 
2890
                        });
 
2891
                    }
 
2892
 
 
2893
                } else {
 
2894
 
 
2895
                    var result = openTag.exec( src );
 
2896
 
 
2897
 
 
2898
                    if ( result !== null ) {
 
2899
                        if ( result.index > 0 ) {
 
2900
                            var resultString = src.substring(0, result.index);
 
2901
                            results.push ([
 
2902
                                parseInt(PHP.Constants.T_INLINE_HTML, 10),
 
2903
                                resultString,
 
2904
                                line
 
2905
                                ]);
 
2906
 
 
2907
                            line += resultString.split('\n').length - 1;
 
2908
 
 
2909
                            src = src.substring( result.index );
 
2910
                        }
 
2911
 
 
2912
                        insidePHP = true;
 
2913
                    } else {
 
2914
 
 
2915
                        results.push ([
 
2916
                            parseInt(PHP.Constants.T_INLINE_HTML, 10),
 
2917
                            src.replace(/^\n/, ""),
 
2918
                            line
 
2919
                            ]);
 
2920
                        return results;
 
2921
                    }
 
2922
 
 
2923
                }
 
2924
 
 
2925
 
 
2926
 
 
2927
            }
 
2928
 
 
2929
 
 
2930
 
 
2931
            return results;
 
2932
 
 
2933
 
 
2934
 
 
2935
        };
 
2936
 
 
2937
 
 
2938
PHP.Parser = function ( preprocessedTokens, eval ) {
 
2939
 
 
2940
    var yybase = this.yybase,
 
2941
    yydefault = this.yydefault,
 
2942
    yycheck = this.yycheck,
 
2943
    yyaction = this.yyaction,
 
2944
    yylen = this.yylen,
 
2945
    yygbase = this.yygbase,
 
2946
    yygcheck = this.yygcheck,
 
2947
    yyp = this.yyp,
 
2948
    yygoto = this.yygoto,
 
2949
    yylhs = this.yylhs,
 
2950
    terminals = this.terminals,
 
2951
    translate = this.translate,
 
2952
    yygdefault = this.yygdefault;
 
2953
 
 
2954
 
 
2955
    this.pos = -1;
 
2956
    this.line = 1;
 
2957
 
 
2958
    this.tokenMap = this.createTokenMap( );
 
2959
 
 
2960
    this.dropTokens = {};
 
2961
    this.dropTokens[ PHP.Constants.T_WHITESPACE ] = 1;
 
2962
    this.dropTokens[ PHP.Constants.T_OPEN_TAG ] = 1;
 
2963
    var tokens = [];
 
2964
    preprocessedTokens.forEach( function( token, index ) {
 
2965
        if ( typeof token === "object" && token[ 0 ] === PHP.Constants.T_OPEN_TAG_WITH_ECHO) {
 
2966
            tokens.push([
 
2967
                PHP.Constants.T_OPEN_TAG,
 
2968
                token[ 1 ],
 
2969
                token[ 2 ]
 
2970
                ]);
 
2971
            tokens.push([
 
2972
                PHP.Constants.T_ECHO,
 
2973
                token[ 1 ],
 
2974
                token[ 2 ]
 
2975
                ]);
 
2976
        } else {
 
2977
            tokens.push( token );
 
2978
        }
 
2979
    });
 
2980
    this.tokens = tokens;
 
2981
    var tokenId = this.TOKEN_NONE;
 
2982
    this.startAttributes = {
 
2983
        'startLine': 1
 
2984
    };
 
2985
 
 
2986
    this.endAttributes = {};
 
2987
    var attributeStack = [ this.startAttributes ];
 
2988
    var state = 0;
 
2989
    var stateStack = [ state ];
 
2990
    this.yyastk = [];
 
2991
    this.stackPos  = 0;
 
2992
 
 
2993
    var yyn;
 
2994
 
 
2995
    var origTokenId;
 
2996
 
 
2997
 
 
2998
    for (;;) {
 
2999
 
 
3000
        if ( yybase[ state ] === 0 ) {
 
3001
            yyn = yydefault[ state ];
 
3002
        } else {
 
3003
            if (tokenId === this.TOKEN_NONE ) {
 
3004
                origTokenId = this.getNextToken( );
 
3005
                tokenId = (origTokenId >= 0 && origTokenId < this.TOKEN_MAP_SIZE) ? translate[ origTokenId ] : this.TOKEN_INVALID;
 
3006
 
 
3007
                attributeStack[ this.stackPos ] = this.startAttributes;
 
3008
            }
 
3009
 
 
3010
            if (((yyn = yybase[ state ] + tokenId) >= 0
 
3011
                && yyn < this.YYLAST && yycheck[ yyn ] === tokenId
 
3012
                || (state < this.YY2TBLSTATE
 
3013
                    && (yyn = yybase[state + this.YYNLSTATES] + tokenId) >= 0
 
3014
                    && yyn < this.YYLAST
 
3015
                    && yycheck[ yyn ] === tokenId))
 
3016
            && (yyn = yyaction[ yyn ]) !== this.YYDEFAULT ) {
 
3017
                if (yyn > 0) {
 
3018
                    ++this.stackPos;
 
3019
 
 
3020
                    stateStack[ this.stackPos ] = state = yyn;
 
3021
                    this.yyastk[ this.stackPos ] = this.tokenValue;
 
3022
                    attributeStack[ this.stackPos ] = this.startAttributes;
 
3023
                    tokenId = this.TOKEN_NONE;
 
3024
 
 
3025
                    if (yyn < this.YYNLSTATES)
 
3026
                        continue;
 
3027
                    yyn -= this.YYNLSTATES;
 
3028
                } else {
 
3029
                    yyn = -yyn;
 
3030
                }
 
3031
            } else {
 
3032
                yyn = yydefault[ state ];
 
3033
            }
 
3034
        }
 
3035
 
 
3036
        for (;;) {
 
3037
 
 
3038
            if ( yyn === 0 ) {
 
3039
                return this.yyval;
 
3040
            } else if (yyn !== this.YYUNEXPECTED ) {
 
3041
                for (var attr in this.endAttributes) {
 
3042
                    attributeStack[ this.stackPos - yylen[ yyn ] ][ attr ] = this.endAttributes[ attr ];
 
3043
                }
 
3044
                try {
 
3045
                    this['yyn' + yyn](attributeStack[ this.stackPos - yylen[ yyn ] ]);
 
3046
                } catch (e) {
 
3047
                    throw e;
 
3048
                }
 
3049
                this.stackPos -= yylen[ yyn ];
 
3050
                yyn = yylhs[ yyn ];
 
3051
                if ((yyp = yygbase[ yyn ] + stateStack[ this.stackPos ]) >= 0
 
3052
                    && yyp < this.YYGLAST
 
3053
                    && yygcheck[ yyp ] === yyn) {
 
3054
                    state = yygoto[ yyp ];
 
3055
                } else {
 
3056
                    state = yygdefault[ yyn ];
 
3057
                }
 
3058
 
 
3059
                ++this.stackPos;
 
3060
 
 
3061
                stateStack[ this.stackPos ] = state;
 
3062
                this.yyastk[ this.stackPos ] = this.yyval;
 
3063
                attributeStack[ this.stackPos ] = this.startAttributes;
 
3064
            } else {
 
3065
                if (eval !== true) {
 
3066
 
 
3067
                    var expected = [];
 
3068
 
 
3069
                    for (var i = 0; i < this.TOKEN_MAP_SIZE; ++i) {
 
3070
                        if ((yyn = yybase[ state ] + i) >= 0 && yyn < this.YYLAST && yycheck[ yyn ] == i
 
3071
                         || state < this.YY2TBLSTATE
 
3072
                            && (yyn = yybase[ state + this.YYNLSTATES] + i)
 
3073
                            && yyn < this.YYLAST && yycheck[ yyn ] == i
 
3074
                        ) {
 
3075
                            if (yyaction[ yyn ] != this.YYUNEXPECTED) {
 
3076
                                if (expected.length == 4) {
 
3077
                                    expected = [];
 
3078
                                    break;
 
3079
                                }
 
3080
 
 
3081
                                expected.push( this.terminals[ i ] );
 
3082
                            }
 
3083
                        }
 
3084
                    }
 
3085
 
 
3086
                    var expectedString = '';
 
3087
                    if (expected.length) {
 
3088
                        expectedString = ', expecting ' + expected.join(' or ');
 
3089
                    }
 
3090
                    throw new PHP.ParseError('syntax error, unexpected ' + terminals[ tokenId ] + expectedString, this.startAttributes['startLine']);
 
3091
                } else {
 
3092
                    return this.startAttributes['startLine'];
 
3093
                }
 
3094
 
 
3095
            }
 
3096
 
 
3097
            if (state < this.YYNLSTATES)
 
3098
                break;
 
3099
            yyn = state - this.YYNLSTATES;
 
3100
        }
 
3101
    }
 
3102
};
 
3103
 
 
3104
PHP.ParseError = function( msg, line ) {
 
3105
    this.message = msg;
 
3106
    this.line = line;
 
3107
};
 
3108
 
 
3109
PHP.Parser.prototype.MODIFIER_PUBLIC    =  1;
 
3110
PHP.Parser.prototype.MODIFIER_PROTECTED =  2;
 
3111
PHP.Parser.prototype.MODIFIER_PRIVATE   =  4;
 
3112
PHP.Parser.prototype.MODIFIER_STATIC    =  8;
 
3113
PHP.Parser.prototype.MODIFIER_ABSTRACT  = 16;
 
3114
PHP.Parser.prototype.MODIFIER_FINAL     = 32;
 
3115
 
 
3116
PHP.Parser.prototype.getNextToken = function( ) {
 
3117
 
 
3118
    this.startAttributes = {};
 
3119
    this.endAttributes = {};
 
3120
 
 
3121
    var token,
 
3122
    tmp;
 
3123
 
 
3124
    while (this.tokens[++this.pos] !== undefined) {
 
3125
        token = this.tokens[this.pos];
 
3126
 
 
3127
        if (typeof token === "string") {
 
3128
            this.startAttributes['startLine'] = this.line;
 
3129
            this.endAttributes['endLine'] = this.line;
 
3130
 
 
3131
            this.tokenValue = token;
 
3132
            return token.charCodeAt(0);
 
3133
        } else {
 
3134
 
 
3135
 
 
3136
 
 
3137
            this.line += ((tmp = token[ 1 ].match(/\n/g)) === null) ? 0 : tmp.length;
 
3138
 
 
3139
            if (PHP.Constants.T_COMMENT === token[0]) {
 
3140
 
 
3141
                if (!Array.isArray(this.startAttributes['comments'])) {
 
3142
                    this.startAttributes['comments'] = [];
 
3143
                }
 
3144
 
 
3145
                this.startAttributes['comments'].push( {
 
3146
                    type: "comment",
 
3147
                    comment: token[1],
 
3148
                    line: token[2]
 
3149
                });
 
3150
 
 
3151
            } else if (PHP.Constants.T_DOC_COMMENT === token[0]) {
 
3152
                this.startAttributes['comments'].push( new PHPParser_Comment_Doc(token[1], token[2]) );
 
3153
            } else if (this.dropTokens[token[0]] === undefined) {
 
3154
                this.tokenValue = token[1];
 
3155
                this.startAttributes['startLine'] = token[2];
 
3156
                this.endAttributes['endLine'] = this.line;
 
3157
 
 
3158
                return this.tokenMap[token[0]];
 
3159
            }
 
3160
        }
 
3161
    }
 
3162
 
 
3163
    this.startAttributes['startLine'] = this.line;
 
3164
    return 0;
 
3165
};
 
3166
 
 
3167
PHP.Parser.prototype.tokenName = function( token ) {
 
3168
    var constants = ["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR"];
 
3169
    var current = "UNKNOWN";
 
3170
    constants.some(function( constant ) {
 
3171
        if (PHP.Constants[ constant ] === token) {
 
3172
            current = constant;
 
3173
            return true;
 
3174
        } else {
 
3175
            return false;
 
3176
        }
 
3177
    });
 
3178
 
 
3179
    return current;
 
3180
};
 
3181
 
 
3182
PHP.Parser.prototype.createTokenMap = function() {
 
3183
    var tokenMap = {},
 
3184
    name,
 
3185
    i;
 
3186
    var T_DOUBLE_COLON = PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM;
 
3187
    for ( i = 256; i < 1000; ++i ) {
 
3188
        if ( T_DOUBLE_COLON === i ) {
 
3189
            tokenMap[ i ] = this.T_PAAMAYIM_NEKUDOTAYIM;
 
3190
        } else if( PHP.Constants.T_OPEN_TAG_WITH_ECHO === i ) {
 
3191
            tokenMap[ i ] = PHP.Constants.T_ECHO;
 
3192
        } else if( PHP.Constants.T_CLOSE_TAG === i ) {
 
3193
            tokenMap[ i ] = 59;
 
3194
        } else if ( 'UNKNOWN' !== (name = this.tokenName( i ) ) ) {
 
3195
 
 
3196
            tokenMap[ i ] =  this[name];
 
3197
        }
 
3198
    }
 
3199
    return tokenMap;
 
3200
};
 
3201
 
 
3202
PHP.Parser.prototype.TOKEN_NONE    = -1;
 
3203
PHP.Parser.prototype.TOKEN_INVALID = 149;
 
3204
 
 
3205
PHP.Parser.prototype.TOKEN_MAP_SIZE = 384;
 
3206
 
 
3207
PHP.Parser.prototype.YYLAST       = 913;
 
3208
PHP.Parser.prototype.YY2TBLSTATE  = 328;
 
3209
PHP.Parser.prototype.YYGLAST      = 415;
 
3210
PHP.Parser.prototype.YYNLSTATES   = 544;
 
3211
PHP.Parser.prototype.YYUNEXPECTED = 32767;
 
3212
PHP.Parser.prototype.YYDEFAULT    = -32766;
 
3213
PHP.Parser.prototype.YYERRTOK = 256;
 
3214
PHP.Parser.prototype.T_INCLUDE = 257;
 
3215
PHP.Parser.prototype.T_INCLUDE_ONCE = 258;
 
3216
PHP.Parser.prototype.T_EVAL = 259;
 
3217
PHP.Parser.prototype.T_REQUIRE = 260;
 
3218
PHP.Parser.prototype.T_REQUIRE_ONCE = 261;
 
3219
PHP.Parser.prototype.T_LOGICAL_OR = 262;
 
3220
PHP.Parser.prototype.T_LOGICAL_XOR = 263;
 
3221
PHP.Parser.prototype.T_LOGICAL_AND = 264;
 
3222
PHP.Parser.prototype.T_PRINT = 265;
 
3223
PHP.Parser.prototype.T_PLUS_EQUAL = 266;
 
3224
PHP.Parser.prototype.T_MINUS_EQUAL = 267;
 
3225
PHP.Parser.prototype.T_MUL_EQUAL = 268;
 
3226
PHP.Parser.prototype.T_DIV_EQUAL = 269;
 
3227
PHP.Parser.prototype.T_CONCAT_EQUAL = 270;
 
3228
PHP.Parser.prototype.T_MOD_EQUAL = 271;
 
3229
PHP.Parser.prototype.T_AND_EQUAL = 272;
 
3230
PHP.Parser.prototype.T_OR_EQUAL = 273;
 
3231
PHP.Parser.prototype.T_XOR_EQUAL = 274;
 
3232
PHP.Parser.prototype.T_SL_EQUAL = 275;
 
3233
PHP.Parser.prototype.T_SR_EQUAL = 276;
 
3234
PHP.Parser.prototype.T_BOOLEAN_OR = 277;
 
3235
PHP.Parser.prototype.T_BOOLEAN_AND = 278;
 
3236
PHP.Parser.prototype.T_IS_EQUAL = 279;
 
3237
PHP.Parser.prototype.T_IS_NOT_EQUAL = 280;
 
3238
PHP.Parser.prototype.T_IS_IDENTICAL = 281;
 
3239
PHP.Parser.prototype.T_IS_NOT_IDENTICAL = 282;
 
3240
PHP.Parser.prototype.T_IS_SMALLER_OR_EQUAL = 283;
 
3241
PHP.Parser.prototype.T_IS_GREATER_OR_EQUAL = 284;
 
3242
PHP.Parser.prototype.T_SL = 285;
 
3243
PHP.Parser.prototype.T_SR = 286;
 
3244
PHP.Parser.prototype.T_INSTANCEOF = 287;
 
3245
PHP.Parser.prototype.T_INC = 288;
 
3246
PHP.Parser.prototype.T_DEC = 289;
 
3247
PHP.Parser.prototype.T_INT_CAST = 290;
 
3248
PHP.Parser.prototype.T_DOUBLE_CAST = 291;
 
3249
PHP.Parser.prototype.T_STRING_CAST = 292;
 
3250
PHP.Parser.prototype.T_ARRAY_CAST = 293;
 
3251
PHP.Parser.prototype.T_OBJECT_CAST = 294;
 
3252
PHP.Parser.prototype.T_BOOL_CAST = 295;
 
3253
PHP.Parser.prototype.T_UNSET_CAST = 296;
 
3254
PHP.Parser.prototype.T_NEW = 297;
 
3255
PHP.Parser.prototype.T_CLONE = 298;
 
3256
PHP.Parser.prototype.T_EXIT = 299;
 
3257
PHP.Parser.prototype.T_IF = 300;
 
3258
PHP.Parser.prototype.T_ELSEIF = 301;
 
3259
PHP.Parser.prototype.T_ELSE = 302;
 
3260
PHP.Parser.prototype.T_ENDIF = 303;
 
3261
PHP.Parser.prototype.T_LNUMBER = 304;
 
3262
PHP.Parser.prototype.T_DNUMBER = 305;
 
3263
PHP.Parser.prototype.T_STRING = 306;
 
3264
PHP.Parser.prototype.T_STRING_VARNAME = 307;
 
3265
PHP.Parser.prototype.T_VARIABLE = 308;
 
3266
PHP.Parser.prototype.T_NUM_STRING = 309;
 
3267
PHP.Parser.prototype.T_INLINE_HTML = 310;
 
3268
PHP.Parser.prototype.T_CHARACTER = 311;
 
3269
PHP.Parser.prototype.T_BAD_CHARACTER = 312;
 
3270
PHP.Parser.prototype.T_ENCAPSED_AND_WHITESPACE = 313;
 
3271
PHP.Parser.prototype.T_CONSTANT_ENCAPSED_STRING = 314;
 
3272
PHP.Parser.prototype.T_ECHO = 315;
 
3273
PHP.Parser.prototype.T_DO = 316;
 
3274
PHP.Parser.prototype.T_WHILE = 317;
 
3275
PHP.Parser.prototype.T_ENDWHILE = 318;
 
3276
PHP.Parser.prototype.T_FOR = 319;
 
3277
PHP.Parser.prototype.T_ENDFOR = 320;
 
3278
PHP.Parser.prototype.T_FOREACH = 321;
 
3279
PHP.Parser.prototype.T_ENDFOREACH = 322;
 
3280
PHP.Parser.prototype.T_DECLARE = 323;
 
3281
PHP.Parser.prototype.T_ENDDECLARE = 324;
 
3282
PHP.Parser.prototype.T_AS = 325;
 
3283
PHP.Parser.prototype.T_SWITCH = 326;
 
3284
PHP.Parser.prototype.T_ENDSWITCH = 327;
 
3285
PHP.Parser.prototype.T_CASE = 328;
 
3286
PHP.Parser.prototype.T_DEFAULT = 329;
 
3287
PHP.Parser.prototype.T_BREAK = 330;
 
3288
PHP.Parser.prototype.T_CONTINUE = 331;
 
3289
PHP.Parser.prototype.T_GOTO = 332;
 
3290
PHP.Parser.prototype.T_FUNCTION = 333;
 
3291
PHP.Parser.prototype.T_CONST = 334;
 
3292
PHP.Parser.prototype.T_RETURN = 335;
 
3293
PHP.Parser.prototype.T_TRY = 336;
 
3294
PHP.Parser.prototype.T_CATCH = 337;
 
3295
PHP.Parser.prototype.T_THROW = 338;
 
3296
PHP.Parser.prototype.T_USE = 339;
 
3297
PHP.Parser.prototype.T_INSTEADOF = 340;
 
3298
PHP.Parser.prototype.T_GLOBAL = 341;
 
3299
PHP.Parser.prototype.T_STATIC = 342;
 
3300
PHP.Parser.prototype.T_ABSTRACT = 343;
 
3301
PHP.Parser.prototype.T_FINAL = 344;
 
3302
PHP.Parser.prototype.T_PRIVATE = 345;
 
3303
PHP.Parser.prototype.T_PROTECTED = 346;
 
3304
PHP.Parser.prototype.T_PUBLIC = 347;
 
3305
PHP.Parser.prototype.T_VAR = 348;
 
3306
PHP.Parser.prototype.T_UNSET = 349;
 
3307
PHP.Parser.prototype.T_ISSET = 350;
 
3308
PHP.Parser.prototype.T_EMPTY = 351;
 
3309
PHP.Parser.prototype.T_HALT_COMPILER = 352;
 
3310
PHP.Parser.prototype.T_CLASS = 353;
 
3311
PHP.Parser.prototype.T_TRAIT = 354;
 
3312
PHP.Parser.prototype.T_INTERFACE = 355;
 
3313
PHP.Parser.prototype.T_EXTENDS = 356;
 
3314
PHP.Parser.prototype.T_IMPLEMENTS = 357;
 
3315
PHP.Parser.prototype.T_OBJECT_OPERATOR = 358;
 
3316
PHP.Parser.prototype.T_DOUBLE_ARROW = 359;
 
3317
PHP.Parser.prototype.T_LIST = 360;
 
3318
PHP.Parser.prototype.T_ARRAY = 361;
 
3319
PHP.Parser.prototype.T_CALLABLE = 362;
 
3320
PHP.Parser.prototype.T_CLASS_C = 363;
 
3321
PHP.Parser.prototype.T_TRAIT_C = 364;
 
3322
PHP.Parser.prototype.T_METHOD_C = 365;
 
3323
PHP.Parser.prototype.T_FUNC_C = 366;
 
3324
PHP.Parser.prototype.T_LINE = 367;
 
3325
PHP.Parser.prototype.T_FILE = 368;
 
3326
PHP.Parser.prototype.T_COMMENT = 369;
 
3327
PHP.Parser.prototype.T_DOC_COMMENT = 370;
 
3328
PHP.Parser.prototype.T_OPEN_TAG = 371;
 
3329
PHP.Parser.prototype.T_OPEN_TAG_WITH_ECHO = 372;
 
3330
PHP.Parser.prototype.T_CLOSE_TAG = 373;
 
3331
PHP.Parser.prototype.T_WHITESPACE = 374;
 
3332
PHP.Parser.prototype.T_START_HEREDOC = 375;
 
3333
PHP.Parser.prototype.T_END_HEREDOC = 376;
 
3334
PHP.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES = 377;
 
3335
PHP.Parser.prototype.T_CURLY_OPEN = 378;
 
3336
PHP.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM = 379;
 
3337
PHP.Parser.prototype.T_NAMESPACE = 380;
 
3338
PHP.Parser.prototype.T_NS_C = 381;
 
3339
PHP.Parser.prototype.T_DIR = 382;
 
3340
PHP.Parser.prototype.T_NS_SEPARATOR = 383;
 
3341
PHP.Parser.prototype.terminals = [
 
3342
    "$EOF",
 
3343
    "error",
 
3344
    "T_INCLUDE",
 
3345
    "T_INCLUDE_ONCE",
 
3346
    "T_EVAL",
 
3347
    "T_REQUIRE",
 
3348
    "T_REQUIRE_ONCE",
 
3349
    "','",
 
3350
    "T_LOGICAL_OR",
 
3351
    "T_LOGICAL_XOR",
 
3352
    "T_LOGICAL_AND",
 
3353
    "T_PRINT",
 
3354
    "'='",
 
3355
    "T_PLUS_EQUAL",
 
3356
    "T_MINUS_EQUAL",
 
3357
    "T_MUL_EQUAL",
 
3358
    "T_DIV_EQUAL",
 
3359
    "T_CONCAT_EQUAL",
 
3360
    "T_MOD_EQUAL",
 
3361
    "T_AND_EQUAL",
 
3362
    "T_OR_EQUAL",
 
3363
    "T_XOR_EQUAL",
 
3364
    "T_SL_EQUAL",
 
3365
    "T_SR_EQUAL",
 
3366
    "'?'",
 
3367
    "':'",
 
3368
    "T_BOOLEAN_OR",
 
3369
    "T_BOOLEAN_AND",
 
3370
    "'|'",
 
3371
    "'^'",
 
3372
    "'&'",
 
3373
    "T_IS_EQUAL",
 
3374
    "T_IS_NOT_EQUAL",
 
3375
    "T_IS_IDENTICAL",
 
3376
    "T_IS_NOT_IDENTICAL",
 
3377
    "'<'",
 
3378
    "T_IS_SMALLER_OR_EQUAL",
 
3379
    "'>'",
 
3380
    "T_IS_GREATER_OR_EQUAL",
 
3381
    "T_SL",
 
3382
    "T_SR",
 
3383
    "'+'",
 
3384
    "'-'",
 
3385
    "'.'",
 
3386
    "'*'",
 
3387
    "'/'",
 
3388
    "'%'",
 
3389
    "'!'",
 
3390
    "T_INSTANCEOF",
 
3391
    "'~'",
 
3392
    "T_INC",
 
3393
    "T_DEC",
 
3394
    "T_INT_CAST",
 
3395
    "T_DOUBLE_CAST",
 
3396
    "T_STRING_CAST",
 
3397
    "T_ARRAY_CAST",
 
3398
    "T_OBJECT_CAST",
 
3399
    "T_BOOL_CAST",
 
3400
    "T_UNSET_CAST",
 
3401
    "'@'",
 
3402
    "'['",
 
3403
    "T_NEW",
 
3404
    "T_CLONE",
 
3405
    "T_EXIT",
 
3406
    "T_IF",
 
3407
    "T_ELSEIF",
 
3408
    "T_ELSE",
 
3409
    "T_ENDIF",
 
3410
    "T_LNUMBER",
 
3411
    "T_DNUMBER",
 
3412
    "T_STRING",
 
3413
    "T_STRING_VARNAME",
 
3414
    "T_VARIABLE",
 
3415
    "T_NUM_STRING",
 
3416
    "T_INLINE_HTML",
 
3417
    "T_ENCAPSED_AND_WHITESPACE",
 
3418
    "T_CONSTANT_ENCAPSED_STRING",
 
3419
    "T_ECHO",
 
3420
    "T_DO",
 
3421
    "T_WHILE",
 
3422
    "T_ENDWHILE",
 
3423
    "T_FOR",
 
3424
    "T_ENDFOR",
 
3425
    "T_FOREACH",
 
3426
    "T_ENDFOREACH",
 
3427
    "T_DECLARE",
 
3428
    "T_ENDDECLARE",
 
3429
    "T_AS",
 
3430
    "T_SWITCH",
 
3431
    "T_ENDSWITCH",
 
3432
    "T_CASE",
 
3433
    "T_DEFAULT",
 
3434
    "T_BREAK",
 
3435
    "T_CONTINUE",
 
3436
    "T_GOTO",
 
3437
    "T_FUNCTION",
 
3438
    "T_CONST",
 
3439
    "T_RETURN",
 
3440
    "T_TRY",
 
3441
    "T_CATCH",
 
3442
    "T_THROW",
 
3443
    "T_USE",
 
3444
    "T_INSTEADOF",
 
3445
    "T_GLOBAL",
 
3446
    "T_STATIC",
 
3447
    "T_ABSTRACT",
 
3448
    "T_FINAL",
 
3449
    "T_PRIVATE",
 
3450
    "T_PROTECTED",
 
3451
    "T_PUBLIC",
 
3452
    "T_VAR",
 
3453
    "T_UNSET",
 
3454
    "T_ISSET",
 
3455
    "T_EMPTY",
 
3456
    "T_HALT_COMPILER",
 
3457
    "T_CLASS",
 
3458
    "T_TRAIT",
 
3459
    "T_INTERFACE",
 
3460
    "T_EXTENDS",
 
3461
    "T_IMPLEMENTS",
 
3462
    "T_OBJECT_OPERATOR",
 
3463
    "T_DOUBLE_ARROW",
 
3464
    "T_LIST",
 
3465
    "T_ARRAY",
 
3466
    "T_CALLABLE",
 
3467
    "T_CLASS_C",
 
3468
    "T_TRAIT_C",
 
3469
    "T_METHOD_C",
 
3470
    "T_FUNC_C",
 
3471
    "T_LINE",
 
3472
    "T_FILE",
 
3473
    "T_START_HEREDOC",
 
3474
    "T_END_HEREDOC",
 
3475
    "T_DOLLAR_OPEN_CURLY_BRACES",
 
3476
    "T_CURLY_OPEN",
 
3477
    "T_PAAMAYIM_NEKUDOTAYIM",
 
3478
    "T_NAMESPACE",
 
3479
    "T_NS_C",
 
3480
    "T_DIR",
 
3481
    "T_NS_SEPARATOR",
 
3482
    "';'",
 
3483
    "'{'",
 
3484
    "'}'",
 
3485
    "'('",
 
3486
    "')'",
 
3487
    "'$'",
 
3488
    "']'",
 
3489
    "'`'",
 
3490
    "'\"'"
 
3491
    , "???"
 
3492
];
 
3493
PHP.Parser.prototype.translate = [
 
3494
        0,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3495
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3496
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3497
      149,  149,  149,   47,  148,  149,  145,   46,   30,  149,
 
3498
      143,  144,   44,   41,    7,   42,   43,   45,  149,  149,
 
3499
      149,  149,  149,  149,  149,  149,  149,  149,   25,  140,
 
3500
       35,   12,   37,   24,   59,  149,  149,  149,  149,  149,
 
3501
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3502
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3503
      149,   60,  149,  146,   29,  149,  147,  149,  149,  149,
 
3504
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3505
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3506
      149,  149,  149,  141,   28,  142,   49,  149,  149,  149,
 
3507
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3508
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3509
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3510
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3511
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3512
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3513
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3514
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3515
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3516
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3517
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3518
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
 
3519
      149,  149,  149,  149,  149,  149,    1,    2,    3,    4,
 
3520
        5,    6,    8,    9,   10,   11,   13,   14,   15,   16,
 
3521
       17,   18,   19,   20,   21,   22,   23,   26,   27,   31,
 
3522
       32,   33,   34,   36,   38,   39,   40,   48,   50,   51,
 
3523
       52,   53,   54,   55,   56,   57,   58,   61,   62,   63,
 
3524
       64,   65,   66,   67,   68,   69,   70,   71,   72,   73,
 
3525
       74,  149,  149,   75,   76,   77,   78,   79,   80,   81,
 
3526
       82,   83,   84,   85,   86,   87,   88,   89,   90,   91,
 
3527
       92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
 
3528
      102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
 
3529
      112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
 
3530
      122,  123,  124,  125,  126,  127,  128,  129,  130,  149,
 
3531
      149,  149,  149,  149,  149,  131,  132,  133,  134,  135,
 
3532
      136,  137,  138,  139
 
3533
];
 
3534
 
 
3535
PHP.Parser.prototype.yyaction = [
 
3536
       61,   62,  363,   63,   64,-32766,-32766,-32766,  509,   65,
 
3537
      708,  709,  710,  707,  706,  705,-32766,-32766,-32766,-32766,
 
3538
    -32766,-32766,  132,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
 
3539
    -32767,-32767,-32766,  335,-32766,-32766,-32766,-32766,-32766,   66,
 
3540
       67,  351,  663,  664,   40,   68,  548,   69,  232,  233,
 
3541
       70,   71,   72,   73,   74,   75,   76,   77,   30,  246,
 
3542
       78,  336,  364, -112,    0,  469,  833,  834,  365,  641,
 
3543
      890,  436,  590,   41,  835,   53,   27,  366,  294,  367,
 
3544
      687,  368,  921,  369,  923,  922,  370,-32766,-32766,-32766,
 
3545
       42,   43,  371,  339,  126,   44,  372,  337,   79,  297,
 
3546
      349,  292,  293,-32766,  918,-32766,-32766,  373,  374,  375,
 
3547
      376,  377,  391,  199,  361,  338,  573,  613,  378,  379,
 
3548
      380,  381,  845,  839,  840,  841,  842,  836,  837,  253,
 
3549
    -32766,   87,   88,   89,  391,  843,  838,  338,  597,  519,
 
3550
      128,   80,  129,  273,  332,  257,  261,   47,  673,   90,
 
3551
       91,   92,   93,   94,   95,   96,   97,   98,   99,  100,
 
3552
      101,  102,  103,  104,  105,  106,  107,  108,  109,  110,
 
3553
      799,  247,  884,  108,  109,  110,  226,  247,   21,-32766,
 
3554
      310,-32766,-32766,-32766,  642,  548,-32766,-32766,-32766,-32766,
 
3555
       56,  353,-32766,-32766,-32766,   55,-32766,-32766,-32766,-32766,
 
3556
    -32766,   58,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
 
3557
    -32766,  557,-32766,-32766,  518,-32766,  548,  890,-32766,  390,
 
3558
    -32766,  228,  252,-32766,-32766,-32766,-32766,-32766,  275,-32766,
 
3559
      234,-32766,  587,  588,-32766,-32766,-32766,-32766,-32766,-32766,
 
3560
    -32766,   46,  236,-32766,-32766,  281,-32766,  682,  348,-32766,
 
3561
      390,-32766,  346,  333,  521,-32766,-32766,-32766,  271,  911,
 
3562
      262,  237,  446,  911,-32766,  894,   59,  700,  358,  135,
 
3563
      548,  123,  538,   35,-32766,  333,  122,-32766,-32766,-32766,
 
3564
      271,-32766,  124,-32766,  692,-32766,-32766,-32766,-32766,  700,
 
3565
      273,   22,-32766,-32766,-32766,-32766,  239,-32766,-32766,  612,
 
3566
    -32766,  548,  134,-32766,  390,-32766,  462,  354,-32766,-32766,
 
3567
    -32766,-32766,-32766,  227,-32766,  238,-32766,  845,  542,-32766,
 
3568
      856,  611,  200,-32766,-32766,-32766,  259,  280,-32766,-32766,
 
3569
      201,-32766,  855,  129,-32766,  390,  130,  202,  333,  206,
 
3570
    -32766,-32766,-32766,  271,-32766,-32766,-32766,  125,  601,-32766,
 
3571
      136,  299,  700,  489,   28,  548,  105,  106,  107,-32766,
 
3572
      498,  499,-32766,-32766,-32766,  207,-32766,  133,-32766,  525,
 
3573
    -32766,-32766,-32766,-32766,  663,  664,  527,-32766,-32766,-32766,
 
3574
    -32766,  528,-32766,-32766,  610,-32766,  548,  427,-32766,  390,
 
3575
    -32766,  532,  539,-32766,-32766,-32766,-32766,-32766,  240,-32766,
 
3576
      247,-32766,  697,  543,-32766,  554,  523,  608,-32766,-32766,
 
3577
    -32766,  686,  535,-32766,-32766,   54,-32766,   57,   60,-32766,
 
3578
      390,  246, -155,  278,  345,-32766,-32766,-32766,  506,  347,
 
3579
     -152,  471,  402,  403,-32766,  405,  404,  272,  493,  416,
 
3580
      548,  318,  417,  505,-32766,  517,  548,-32766,-32766,-32766,
 
3581
      549,-32766,  562,-32766,  916,-32766,-32766,-32766,-32766,  564,
 
3582
      826,  848,-32766,-32766,-32766,-32766,  694,-32766,-32766,  485,
 
3583
    -32766,  548,  487,-32766,  390,-32766,  504,  802,-32766,-32766,
 
3584
    -32766,-32766,-32766,  279,-32766,  911,-32766,  502,  492,-32766,
 
3585
      413,  483,  269,-32766,-32766,-32766,  243,  337,-32766,-32766,
 
3586
      418,-32766,  454,  229,-32766,  390,  274,  373,  374,  344,
 
3587
    -32766,-32766,-32766,  360,  614,-32766,  573,  613,  378,  379,
 
3588
     -274,  548,  615, -332,  844,-32766,  258,   51,-32766,-32766,
 
3589
    -32766,  270,-32766,  346,-32766,   52,-32766,  260,    0,-32766,
 
3590
     -333,-32766,-32766,-32766,-32766,-32766,-32766,  205,-32766,-32766,
 
3591
       49,-32766,  548,  424,-32766,  390,-32766, -266,  264,-32766,
 
3592
    -32766,-32766,-32766,-32766,  409,-32766,  343,-32766,  265,  312,
 
3593
    -32766,  470,  513, -275,-32766,-32766,-32766,  920,  337,-32766,
 
3594
    -32766,  530,-32766,  531,  600,-32766,  390,  592,  373,  374,
 
3595
      578,  581,-32766,-32766,  644,  629,-32766,  573,  613,  378,
 
3596
      379,  635,  548,  636,  576,  627,-32766,  625,  693,-32766,
 
3597
    -32766,-32766,  691,-32766,  591,-32766,  582,-32766,  203,  204,
 
3598
    -32766,  584,  583,-32766,-32766,-32766,-32766,  586,  599,-32766,
 
3599
    -32766,  589,-32766,  690,  558,-32766,  390,  197,  683,  919,
 
3600
       86,  520,  522,-32766,  524,  833,  834,  529,  533,-32766,
 
3601
      534,  537,  541,  835,   48,  111,  112,  113,  114,  115,
 
3602
      116,  117,  118,  119,  120,  121,  127,   31,  633,  337,
 
3603
      330,  634,  585,-32766,   32,  291,  337,  330,  478,  373,
 
3604
      374,  917,  291,  891,  889,  875,  373,  374,  553,  613,
 
3605
      378,  379,  737,  739,  887,  553,  613,  378,  379,  824,
 
3606
      451,  675,  839,  840,  841,  842,  836,  837,  320,  895,
 
3607
      277,  885,   23,   33,  843,  838,  556,  277,  337,  330,
 
3608
    -32766,   34,-32766,  555,  291,   36,   37,   38,  373,  374,
 
3609
       39,   45,   50,   81,   82,   83,   84,  553,  613,  378,
 
3610
      379,-32767,-32767,-32767,-32767,  103,  104,  105,  106,  107,
 
3611
      337,   85,  131,  137,  337,  138,  198,  224,  225,  277,
 
3612
      373,  374, -332,  230,  373,  374,   24,  337,  231,  573,
 
3613
      613,  378,  379,  573,  613,  378,  379,  373,  374,  235,
 
3614
      248,  249,  250,  337,  251,    0,  573,  613,  378,  379,
 
3615
      276,  329,  331,  373,  374,-32766,  337,  574,  490,  792,
 
3616
      337,  609,  573,  613,  378,  379,  373,  374,   25,  300,
 
3617
      373,  374,  319,  337,  795,  573,  613,  378,  379,  573,
 
3618
      613,  378,  379,  373,  374,  516,  355,  359,  445,  482,
 
3619
      796,  507,  573,  613,  378,  379,  508,  548,  337,  890,
 
3620
      775,  791,  337,  604,  803,  808,  806,  698,  373,  374,
 
3621
      888,  807,  373,  374,-32766,-32766,-32766,  573,  613,  378,
 
3622
      379,  573,  613,  378,  379,  873,  832,  804,  872,  851,
 
3623
    -32766,  809,-32766,-32766,-32766,-32766,  805,   20,   26,   29,
 
3624
      298,  480,  515,  770,  778,  827,  457,    0,  900,  455,
 
3625
      774,    0,    0,    0,  874,  870,  886,  823,  915,  852,
 
3626
      869,  488,    0,  391,  793,    0,  338,    0,    0,    0,
 
3627
      340,    0,  273
 
3628
];
 
3629
 
 
3630
PHP.Parser.prototype.yycheck = [
 
3631
        2,    3,    4,    5,    6,    8,    9,   10,   70,   11,
 
3632
      104,  105,  106,  107,  108,  109,    8,    9,   10,    8,
 
3633
        9,   24,   60,   26,   27,   28,   29,   30,   31,   32,
 
3634
       33,   34,   24,    7,   26,   27,   28,   29,   30,   41,
 
3635
       42,    7,  123,  124,    7,   47,   70,   49,   50,   51,
 
3636
       52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
 
3637
       62,   63,   64,  144,    0,   75,   68,   69,   70,   25,
 
3638
       72,   70,   74,    7,   76,   77,   78,   79,    7,   81,
 
3639
      142,   83,   70,   85,   72,   73,   88,    8,    9,   10,
 
3640
       92,   93,   94,   95,    7,   97,   98,   95,  100,    7,
 
3641
        7,  103,  104,   24,  142,   26,   27,  105,  106,  111,
 
3642
      112,  113,  136,    7,    7,  139,  114,  115,  116,  117,
 
3643
      122,  123,  132,  125,  126,  127,  128,  129,  130,  131,
 
3644
        8,    8,    9,   10,  136,  137,  138,  139,  140,  141,
 
3645
       25,  143,  141,  145,  142,  147,  148,   24,   72,   26,
 
3646
       27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
 
3647
       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
 
3648
      144,   48,   72,   44,   45,   46,   30,   48,  144,   64,
 
3649
       72,    8,    9,   10,  140,   70,    8,    9,   10,   74,
 
3650
       60,   25,   77,   78,   79,   60,   81,   24,   83,   26,
 
3651
       85,   60,   24,   88,   26,   27,   28,   92,   93,   94,
 
3652
       64,  140,   97,   98,   70,  100,   70,   72,  103,  104,
 
3653
       74,  145,    7,   77,   78,   79,  111,   81,    7,   83,
 
3654
       30,   85,  140,  140,   88,    8,    9,   10,   92,   93,
 
3655
       94,  133,  134,   97,   98,  145,  100,  140,    7,  103,
 
3656
      104,   24,  139,   96,  141,  140,  141,  111,  101,   75,
 
3657
       75,   30,   70,   75,   64,   70,   60,  110,  121,   12,
 
3658
       70,  141,   25,  143,   74,   96,  141,   77,   78,   79,
 
3659
      101,   81,  141,   83,  140,   85,  140,  141,   88,  110,
 
3660
      145,  144,   92,   93,   94,   64,    7,   97,   98,  142,
 
3661
      100,   70,  141,  103,  104,   74,  145,  141,   77,   78,
 
3662
       79,  111,   81,    7,   83,   30,   85,  132,   25,   88,
 
3663
      132,  142,   12,   92,   93,   94,  120,   60,   97,   98,
 
3664
       12,  100,  148,  141,  103,  104,  141,   12,   96,   12,
 
3665
      140,  141,  111,  101,    8,    9,   10,  141,   25,   64,
 
3666
       90,   91,  110,   65,   66,   70,   41,   42,   43,   74,
 
3667
       65,   66,   77,   78,   79,   12,   81,   25,   83,   25,
 
3668
       85,  140,  141,   88,  123,  124,   25,   92,   93,   94,
 
3669
       64,   25,   97,   98,  142,  100,   70,  120,  103,  104,
 
3670
       74,   25,   25,   77,   78,   79,  111,   81,   30,   83,
 
3671
       48,   85,  140,  141,   88,  140,  141,   30,   92,   93,
 
3672
       94,  140,  141,   97,   98,   60,  100,   60,   60,  103,
 
3673
      104,   61,   72,   75,   70,  140,  141,  111,   67,   70,
 
3674
       87,   99,   70,   70,   64,   70,   72,  102,   89,   70,
 
3675
       70,   71,   70,   70,   74,   70,   70,   77,   78,   79,
 
3676
       70,   81,   70,   83,   70,   85,  140,  141,   88,   70,
 
3677
      144,   70,   92,   93,   94,   64,   70,   97,   98,   72,
 
3678
      100,   70,   72,  103,  104,   74,   72,   72,   77,   78,
 
3679
       79,  111,   81,   75,   83,   75,   85,   89,   86,   88,
 
3680
       79,  101,  118,   92,   93,   94,   87,   95,   97,   98,
 
3681
       87,  100,   87,   87,  103,  104,  118,  105,  106,   95,
 
3682
      140,  141,  111,   95,  115,   64,  114,  115,  116,  117,
 
3683
      135,   70,  115,  120,  132,   74,  120,  140,   77,   78,
 
3684
       79,  119,   81,  139,   83,  140,   85,  120,   -1,   88,
 
3685
      120,  140,  141,   92,   93,   94,   64,  121,   97,   98,
 
3686
      121,  100,   70,  122,  103,  104,   74,  135,  135,   77,
 
3687
       78,   79,  111,   81,  139,   83,  139,   85,  135,  135,
 
3688
       88,  135,  135,  135,   92,   93,   94,  142,   95,   97,
 
3689
       98,  140,  100,  140,  140,  103,  104,  140,  105,  106,
 
3690
      140,  140,  141,  111,  140,  140,   64,  114,  115,  116,
 
3691
      117,  140,   70,  140,  140,  140,   74,  140,  140,   77,
 
3692
       78,   79,  140,   81,  140,   83,  140,   85,   41,   42,
 
3693
       88,  140,  140,  141,   92,   93,   94,  140,  140,   97,
 
3694
       98,  140,  100,  140,  140,  103,  104,   60,  140,  142,
 
3695
      141,  141,  141,  111,  141,   68,   69,  141,  141,   72,
 
3696
      141,  141,  141,   76,   12,   13,   14,   15,   16,   17,
 
3697
       18,   19,   20,   21,   22,   23,  141,  143,  142,   95,
 
3698
       96,  142,  140,  141,  143,  101,   95,   96,  142,  105,
 
3699
      106,  142,  101,  142,  142,  142,  105,  106,  114,  115,
 
3700
      116,  117,   50,   51,  142,  114,  115,  116,  117,  142,
 
3701
      123,  142,  125,  126,  127,  128,  129,  130,  131,  142,
 
3702
      136,  142,  144,  143,  137,  138,  142,  136,   95,   96,
 
3703
      143,  143,  145,  142,  101,  143,  143,  143,  105,  106,
 
3704
      143,  143,  143,  143,  143,  143,  143,  114,  115,  116,
 
3705
      117,   35,   36,   37,   38,   39,   40,   41,   42,   43,
 
3706
       95,  143,  143,  143,   95,  143,  143,  143,  143,  136,
 
3707
      105,  106,  120,  143,  105,  106,  144,   95,  143,  114,
 
3708
      115,  116,  117,  114,  115,  116,  117,  105,  106,  143,
 
3709
      143,  143,  143,   95,  143,   -1,  114,  115,  116,  117,
 
3710
      143,  143,  143,  105,  106,  143,   95,  142,   80,  146,
 
3711
       95,  142,  114,  115,  116,  117,  105,  106,  144,  144,
 
3712
      105,  106,  144,   95,  142,  114,  115,  116,  117,  114,
 
3713
      115,  116,  117,  105,  106,   82,  144,  144,  144,  144,
 
3714
      142,   84,  114,  115,  116,  117,  144,   70,   95,   72,
 
3715
      144,  144,   95,  142,  144,  146,  144,  142,  105,  106,
 
3716
      146,  144,  105,  106,    8,    9,   10,  114,  115,  116,
 
3717
      117,  114,  115,  116,  117,  144,  144,  144,  144,  144,
 
3718
       24,  104,   26,   27,   28,   29,  144,  144,  144,  144,
 
3719
      144,  144,  144,  144,  144,  144,  144,   -1,  144,  144,
 
3720
      144,   -1,   -1,   -1,  146,  146,  146,  146,  146,  146,
 
3721
      146,  146,   -1,  136,  147,   -1,  139,   -1,   -1,   -1,
 
3722
      143,   -1,  145
 
3723
];
 
3724
 
 
3725
PHP.Parser.prototype.yybase = [
 
3726
        0,  574,  581,  623,  655,    2,  718,  402,  747,  659,
 
3727
      672,  688,  743,  701,  705,  483,  483,  483,  483,  483,
 
3728
      351,  356,  366,  366,  367,  366,  344,   -2,   -2,   -2,
 
3729
      200,  200,  231,  231,  231,  231,  231,  231,  231,  231,
 
3730
      200,  231,  451,  482,  532,  316,  370,  115,  146,  285,
 
3731
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3732
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3733
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3734
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3735
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3736
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3737
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3738
      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
3739
      401,  401,  401,  401,  401,  401,  401,  401,  401,   44,
 
3740
      474,  429,  476,  481,  487,  488,  739,  740,  741,  734,
 
3741
      733,  416,  736,  539,  541,  342,  542,  543,  552,  557,
 
3742
      559,  536,  567,  737,  755,  569,  735,  738,  123,  123,
 
3743
      123,  123,  123,  123,  123,  123,  123,  122,   11,  336,
 
3744
      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
 
3745
      336,  336,  336,  336,  227,  227,  173,  577,  577,  577,
 
3746
      577,  577,  577,  577,  577,  577,  577,  577,   79,  178,
 
3747
      846,    8,   -3,   -3,   -3,   -3,  642,  706,  706,  706,
 
3748
      706,  157,  179,  242,  431,  431,  360,  431,  525,  368,
 
3749
      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
 
3750
      767,  767,  350,  375,  315,  315,  652,  652,  -81,  -81,
 
3751
      -81,  -81,  251,  185,  188,  184,  -62,  348,  195,  195,
 
3752
      195,  408,  392,  410,    1,  192,  129,  129,  129,  -24,
 
3753
      -24,  -24,  -24,  499,  -24,  -24,  -24,  113,  108,  108,
 
3754
       12,  161,  349,  526,  271,  398,  529,  438,  130,  206,
 
3755
      265,  427,   76,  414,  427,  288,  295,   76,  166,   44,
 
3756
      262,  422,  141,  491,  372,  494,  413,   71,   92,   93,
 
3757
      267,  135,  100,   34,  415,  745,  746,  742,  -38,  420,
 
3758
      -10,  135,  147,  744,  498,  107,   26,  493,  144,  377,
 
3759
      363,  369,  332,  363,  400,  377,  588,  377,  376,  377,
 
3760
      360,   37,  582,  376,  377,  374,  376,  388,  363,  364,
 
3761
      412,  369,  377,  441,  443,  390,  106,  332,  377,  390,
 
3762
      377,  400,   64,  590,  591,  323,  592,  589,  593,  649,
 
3763
      608,  362,  500,  399,  407,  620,  625,  636,  365,  354,
 
3764
      614,  524,  425,  359,  355,  423,  570,  578,  357,  406,
 
3765
      414,  394,  352,  403,  531,  433,  403,  653,  434,  385,
 
3766
      417,  411,  444,  310,  318,  501,  425,  668,  757,  380,
 
3767
      637,  684,  403,  609,  387,   87,  325,  638,  382,  403,
 
3768
      639,  403,  696,  503,  615,  403,  697,  384,  435,  425,
 
3769
      352,  352,  352,  700,   66,  699,  583,  702,  707,  704,
 
3770
      748,  721,  749,  584,  750,  358,  583,  722,  751,  682,
 
3771
      215,  613,  422,  436,  389,  447,  221,  257,  752,  403,
 
3772
      403,  506,  499,  403,  395,  685,  397,  426,  753,  392,
 
3773
      391,  647,  683,  403,  418,  754,  221,  723,  587,  724,
 
3774
      450,  568,  507,  648,  509,  327,  725,  353,  497,  610,
 
3775
      454,  622,  455,  461,  404,  510,  373,  732,  612,  247,
 
3776
      361,  664,  463,  405,  692,  641,  464,  465,  511,  343,
 
3777
      437,  335,  409,  396,  665,  293,  467,  468,  472,    0,
 
3778
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3779
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3780
        0,    0,    0,    0,    0,   -2,   -2,   -2,   -2,   -2,
 
3781
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3782
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3783
       -2,    0,    0,    0,   -2,   -2,   -2,   -2,   -2,   -2,
 
3784
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3785
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3786
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3787
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3788
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3789
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3790
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3791
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3792
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3793
       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
 
3794
       -2,   -2,   -2,  123,  123,  123,  123,  123,  123,  123,
 
3795
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
 
3796
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
 
3797
      123,  123,    0,    0,    0,    0,    0,    0,    0,    0,
 
3798
        0,  123,  123,  123,  123,  123,  123,  123,  123,  123,
 
3799
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
 
3800
      123,  767,  767,  767,  767,  767,  767,  767,  767,  767,
 
3801
      767,  767,  123,  123,  123,  123,  123,  123,  123,  123,
 
3802
        0,  129,  129,  129,  129,  -94,  -94,  -94,  767,  767,
 
3803
      767,  767,  767,  767,    0,    0,    0,    0,    0,    0,
 
3804
        0,    0,    0,    0,    0,    0,  -94,  -94,  129,  129,
 
3805
      767,  767,  -24,  -24,  -24,  -24,  -24,  108,  108,  108,
 
3806
      -24,  108,  145,  145,  145,  108,  108,  108,  100,  100,
 
3807
        0,    0,    0,    0,    0,    0,    0,  145,    0,    0,
 
3808
        0,  376,    0,    0,    0,  145,  260,  260,  221,  260,
 
3809
      260,  135,    0,    0,  425,  376,    0,  364,  376,    0,
 
3810
        0,    0,    0,    0,    0,  531,    0,   87,  637,  241,
 
3811
      425,    0,    0,    0,    0,    0,    0,    0,  425,  289,
 
3812
      289,  306,    0,  358,    0,    0,    0,  306,  241,    0,
 
3813
        0,  221
 
3814
];
 
3815
 
 
3816
PHP.Parser.prototype.yydefault = [
 
3817
        3,32767,32767,    1,32767,32767,32767,32767,32767,32767,
 
3818
    32767,32767,32767,32767,32767,  104,   96,  110,   95,  106,
 
3819
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3820
      358,  358,  122,  122,  122,  122,  122,  122,  122,  122,
 
3821
      316,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3822
      173,  173,  173,32767,  348,  348,  348,  348,  348,  348,
 
3823
      348,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3824
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3825
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3826
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3827
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3828
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3829
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3830
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3831
    32767,  363,32767,32767,32767,32767,32767,32767,32767,32767,
 
3832
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3833
    32767,32767,32767,32767,32767,32767,32767,32767,  232,  233,
 
3834
      235,  236,  172,  125,  349,  362,  171,  199,  201,  250,
 
3835
      200,  177,  182,  183,  184,  185,  186,  187,  188,  189,
 
3836
      190,  191,  192,  176,  229,  228,  197,  313,  313,  316,
 
3837
    32767,32767,32767,32767,32767,32767,32767,32767,  198,  202,
 
3838
      204,  203,  219,  220,  217,  218,  175,  221,  222,  223,
 
3839
      224,  157,  157,  157,  357,  357,32767,  357,32767,32767,
 
3840
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3841
    32767,32767,  158,32767,  211,  212,  276,  276,  117,  117,
 
3842
      117,  117,  117,32767,32767,32767,32767,  284,32767,32767,
 
3843
    32767,32767,32767,  286,32767,32767,  206,  207,  205,32767,
 
3844
    32767,32767,32767,32767,32767,32767,32767,32767,  285,32767,
 
3845
    32767,32767,32767,32767,32767,32767,32767,  334,  321,  272,
 
3846
    32767,32767,32767,  265,32767,  107,  109,32767,32767,32767,
 
3847
    32767,  302,  339,32767,32767,32767,   17,32767,32767,32767,
 
3848
      370,  334,32767,32767,   19,32767,32767,32767,32767,  227,
 
3849
    32767,  338,  332,32767,32767,32767,32767,32767,32767,   63,
 
3850
    32767,32767,32767,32767,32767,   63,  281,   63,32767,   63,
 
3851
    32767,  315,  287,32767,   63,   74,32767,   72,32767,32767,
 
3852
       76,32767,   63,   93,   93,  254,  315,   54,   63,  254,
 
3853
       63,32767,32767,32767,32767,    4,32767,32767,32767,32767,
 
3854
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3855
    32767,32767,  267,32767,  323,32767,  337,  336,  324,32767,
 
3856
      265,32767,  215,  194,  266,32767,  196,32767,32767,  270,
 
3857
      273,32767,32767,32767,  134,32767,  268,  180,32767,32767,
 
3858
    32767,32767,  365,32767,32767,  174,32767,32767,32767,  130,
 
3859
    32767,   61,  332,32767,32767,  355,32767,32767,  332,  269,
 
3860
      208,  209,  210,32767,  121,32767,  310,32767,32767,32767,
 
3861
    32767,32767,32767,  327,32767,  333,32767,32767,32767,32767,
 
3862
      111,32767,  302,32767,32767,32767,   75,32767,32767,  178,
 
3863
      126,32767,32767,  364,32767,32767,32767,  320,32767,32767,
 
3864
    32767,32767,32767,   62,32767,32767,   77,32767,32767,32767,
 
3865
    32767,  332,32767,32767,32767,  115,32767,  169,32767,32767,
 
3866
    32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
 
3867
    32767,  332,32767,32767,32767,32767,32767,32767,32767,    4,
 
3868
    32767,  151,32767,32767,32767,32767,32767,32767,32767,   25,
 
3869
       25,    3,  137,    3,  137,   25,  101,   25,   25,  137,
 
3870
       93,   93,   25,   25,   25,  144,   25,   25,   25,   25,
 
3871
       25,   25,   25,   25
 
3872
];
 
3873
 
 
3874
PHP.Parser.prototype.yygoto = [
 
3875
      141,  141,  173,  173,  173,  173,  173,  173,  173,  173,
 
3876
      141,  173,  142,  143,  144,  148,  153,  155,  181,  175,
 
3877
      172,  172,  172,  172,  174,  174,  174,  174,  174,  174,
 
3878
      174,  168,  169,  170,  171,  179,  757,  758,  392,  760,
 
3879
      781,  782,  783,  784,  785,  786,  787,  789,  725,  145,
 
3880
      146,  147,  149,  150,  151,  152,  154,  177,  178,  180,
 
3881
      196,  208,  209,  210,  211,  212,  213,  214,  215,  217,
 
3882
      218,  219,  220,  244,  245,  266,  267,  268,  430,  431,
 
3883
      432,  182,  183,  184,  185,  186,  187,  188,  189,  190,
 
3884
      191,  192,  156,  157,  158,  159,  176,  160,  194,  161,
 
3885
      162,  163,  164,  195,  165,  193,  139,  166,  167,  452,
 
3886
      452,  452,  452,  452,  452,  452,  452,  452,  452,  452,
 
3887
      453,  453,  453,  453,  453,  453,  453,  453,  453,  453,
 
3888
      453,  551,  551,  551,  464,  491,  394,  394,  394,  394,
 
3889
      394,  394,  394,  394,  394,  394,  394,  394,  394,  394,
 
3890
      394,  394,  394,  394,  407,  552,  552,  552,  810,  810,
 
3891
      662,  662,  662,  662,  662,  594,  283,  595,  510,  399,
 
3892
      399,  567,  679,  632,  849,  850,  863,  660,  714,  426,
 
3893
      222,  622,  622,  622,  622,  223,  617,  623,  494,  395,
 
3894
      395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
 
3895
      395,  395,  395,  395,  395,  395,  395,  465,  472,  514,
 
3896
      904,  398,  398,  425,  425,  459,  425,  419,  322,  421,
 
3897
      421,  393,  396,  412,  422,  428,  460,  463,  473,  481,
 
3898
      501,    5,  476,  284,  327,    1,   15,    2,    6,    7,
 
3899
      550,  550,  550,    8,    9,   10,  668,   16,   11,   17,
 
3900
       12,   18,   13,   19,   14,  704,  328,  881,  881,  643,
 
3901
      628,  626,  626,  624,  626,  526,  401,  652,  647,  847,
 
3902
      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
 
3903
      437,  438,  441,  447,  477,  479,  497,  290,  910,  910,
 
3904
      400,  400,  486,  880,  880,  263,  913,  910,  303,  255,
 
3905
      723,  306,  822,  821,  306,  896,  896,  896,  861,  304,
 
3906
      323,  410,  913,  913,  897,  316,  420,  769,  658,  559,
 
3907
      879,  671,  536,  324,  466,  565,  311,  311,  311,  801,
 
3908
      241,  676,  496,  439,  440,  442,  444,  448,  475,  631,
 
3909
      858,  311,  285,  286,  603,  495,  712,    0,  406,  321,
 
3910
        0,    0,    0,  314,    0,    0,  429,    0,    0,    0,
 
3911
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3912
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3913
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3914
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3915
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
3916
        0,    0,    0,    0,  411
 
3917
];
 
3918
 
 
3919
PHP.Parser.prototype.yygcheck = [
 
3920
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3921
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3922
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3923
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3924
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3925
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3926
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3927
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3928
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3929
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
3930
       15,   15,   15,   15,   15,   15,   15,   15,   15,   35,
 
3931
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
 
3932
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 
3933
       86,    6,    6,    6,   21,   21,   35,   35,   35,   35,
 
3934
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
 
3935
       35,   35,   35,   35,   71,    7,    7,    7,   35,   35,
 
3936
       35,   35,   35,   35,   35,   29,   44,   29,   35,   86,
 
3937
       86,   12,   12,   12,   12,   12,   12,   12,   12,   75,
 
3938
       40,   35,   35,   35,   35,   40,   35,   35,   35,   82,
 
3939
       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 
3940
       82,   82,   82,   82,   82,   82,   82,   36,   36,   36,
 
3941
      104,   82,   82,   28,   28,   28,   28,   28,   28,   28,
 
3942
       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
 
3943
       28,   13,   42,   42,   42,    2,   13,    2,   13,   13,
 
3944
        5,    5,    5,   13,   13,   13,   54,   13,   13,   13,
 
3945
       13,   13,   13,   13,   13,   67,   67,   83,   83,    5,
 
3946
        5,    5,    5,    5,    5,    5,    5,    5,    5,   93,
 
3947
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
 
3948
       52,   52,   52,   52,   52,   52,   52,    4,  105,  105,
 
3949
       89,   89,   94,   84,   84,   92,  105,  105,   26,   92,
 
3950
       71,    4,   91,   91,    4,   84,   84,   84,   97,   30,
 
3951
       70,   30,  105,  105,  102,   27,   30,   72,   50,   10,
 
3952
       84,   55,   46,    9,   30,   11,   90,   90,   90,   80,
 
3953
       30,   56,   30,   85,   85,   85,   85,   85,   85,   43,
 
3954
       96,   90,   44,   44,   34,   77,   69,   -1,    4,   90,
 
3955
       -1,   -1,   -1,    4,   -1,   -1,    4,   -1,   -1,   -1,
 
3956
       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 
3957
       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 
3958
       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 
3959
       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 
3960
       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 
3961
       -1,   -1,   -1,   -1,   71
 
3962
];
 
3963
 
 
3964
PHP.Parser.prototype.yygbase = [
 
3965
        0,    0, -286,    0,   10,  239,  130,  154,    0,  -10,
 
3966
       25,  -23,  -29, -289,    0,  -30,    0,    0,    0,    0,
 
3967
        0,   83,    0,    0,    0,    0,  245,   84,  -11,  142,
 
3968
      -28,    0,    0,    0,  -13,  -88,  -42,    0,    0,    0,
 
3969
     -344,    0,  -38,  -12, -188,    0,   23,    0,    0,    0,
 
3970
       66,    0,  247,    0,  205,   24,  -18,    0,    0,    0,
 
3971
        0,    0,    0,    0,    0,    0,    0,   13,    0,  -15,
 
3972
       85,   74,   70,    0,    0,  148,    0,  -14,    0,    0,
 
3973
       -6,    0,  -35,   11,   47,  278,  -77,    0,    0,   44,
 
3974
       68,   43,   38,   72,   94,    0,  -16,  109,    0,    0,
 
3975
        0,    0,   87,    0,  170,   34,    0
 
3976
];
 
3977
 
 
3978
PHP.Parser.prototype.yygdefault = [
 
3979
    -32768,  362,    3,  546,  382,  570,  571,  572,  307,  305,
 
3980
      560,  566,  467,    4,  568,  140,  295,  575,  296,  500,
 
3981
      577,  414,  579,  580,  308,  309,  415,  315,  216,  593,
 
3982
      503,  313,  596,  357,  602,  301,  449,  383,  350,  461,
 
3983
      221,  423,  456,  630,  282,  638,  540,  646,  649,  450,
 
3984
      657,  352,  433,  434,  667,  672,  677,  680,  334,  325,
 
3985
      474,  684,  685,  256,  689,  511,  512,  703,  242,  711,
 
3986
      317,  724,  342,  788,  790,  397,  408,  484,  797,  326,
 
3987
      800,  384,  385,  386,  387,  435,  818,  815,  289,  866,
 
3988
      287,  443,  254,  853,  468,  356,  903,  862,  288,  388,
 
3989
      389,  302,  898,  341,  905,  912,  458
 
3990
];
 
3991
 
 
3992
PHP.Parser.prototype.yylhs = [
 
3993
        0,    1,    2,    2,    4,    4,    3,    3,    3,    3,
 
3994
        3,    3,    3,    3,    3,    8,    8,   10,   10,   10,
 
3995
       10,    9,    9,   11,   13,   13,   14,   14,   14,   14,
 
3996
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
 
3997
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
 
3998
        5,    5,    5,    5,    5,    5,    5,    5,   33,   33,
 
3999
       34,   27,   27,   30,   30,    6,    7,    7,    7,   37,
 
4000
       37,   37,   38,   38,   41,   41,   39,   39,   42,   42,
 
4001
       22,   22,   29,   29,   32,   32,   31,   31,   43,   23,
 
4002
       23,   23,   23,   44,   44,   45,   45,   46,   46,   20,
 
4003
       20,   16,   16,   47,   18,   18,   48,   17,   17,   19,
 
4004
       19,   36,   36,   49,   49,   50,   50,   51,   51,   51,
 
4005
       51,   52,   52,   53,   53,   54,   54,   24,   24,   55,
 
4006
       55,   55,   25,   25,   56,   56,   40,   40,   57,   57,
 
4007
       57,   57,   62,   62,   63,   63,   64,   64,   64,   64,
 
4008
       65,   66,   66,   61,   61,   58,   58,   60,   60,   68,
 
4009
       68,   67,   67,   67,   67,   67,   67,   59,   59,   69,
 
4010
       69,   26,   26,   21,   21,   15,   15,   15,   15,   15,
 
4011
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4012
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4013
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4014
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4015
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4016
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4017
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
4018
       15,   15,   15,   71,   77,   77,   79,   79,   80,   81,
 
4019
       81,   81,   81,   81,   81,   86,   86,   35,   35,   35,
 
4020
       72,   72,   87,   87,   82,   82,   88,   88,   88,   88,
 
4021
       88,   73,   73,   73,   76,   76,   76,   78,   78,   93,
 
4022
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
 
4023
       93,   93,   93,   12,   12,   12,   12,   12,   12,   74,
 
4024
       74,   74,   74,   94,   94,   96,   96,   95,   95,   97,
 
4025
       97,   28,   28,   28,   28,   99,   99,   98,   98,   98,
 
4026
       98,   98,  100,  100,   84,   84,   89,   89,   83,   83,
 
4027
      101,  101,  101,  101,   90,   90,   90,   90,   85,   85,
 
4028
       91,   91,   91,   70,   70,  102,  102,  102,   75,   75,
 
4029
      103,  103,  104,  104,  104,  104,   92,   92,   92,   92,
 
4030
      105,  105,  105,  105,  105,  105,  105,  106,  106,  106
 
4031
];
 
4032
 
 
4033
PHP.Parser.prototype.yylen = [
 
4034
        1,    1,    2,    0,    1,    3,    1,    1,    1,    1,
 
4035
        3,    5,    4,    3,    3,    3,    1,    1,    3,    2,
 
4036
        4,    3,    1,    3,    2,    0,    1,    1,    1,    1,
 
4037
        3,    7,   10,    5,    7,    9,    5,    2,    3,    2,
 
4038
        3,    2,    3,    3,    3,    3,    1,    2,    5,    7,
 
4039
        8,   10,    5,    1,    5,    3,    3,    2,    1,    2,
 
4040
        8,    1,    3,    0,    1,    9,    7,    6,    5,    1,
 
4041
        2,    2,    0,    2,    0,    2,    0,    2,    1,    3,
 
4042
        1,    4,    1,    4,    1,    4,    1,    3,    3,    3,
 
4043
        4,    4,    5,    0,    2,    4,    3,    1,    1,    1,
 
4044
        4,    0,    2,    5,    0,    2,    6,    0,    2,    0,
 
4045
        3,    1,    0,    1,    3,    3,    5,    0,    1,    1,
 
4046
        1,    1,    0,    1,    3,    1,    2,    3,    1,    1,
 
4047
        2,    4,    3,    1,    1,    3,    2,    0,    3,    3,
 
4048
        8,    3,    1,    3,    0,    2,    4,    5,    4,    4,
 
4049
        3,    1,    1,    1,    3,    1,    1,    0,    1,    1,
 
4050
        2,    1,    1,    1,    1,    1,    1,    1,    3,    1,
 
4051
        3,    3,    1,    0,    1,    1,    6,    3,    4,    4,
 
4052
        1,    2,    3,    3,    3,    3,    3,    3,    3,    3,
 
4053
        3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
 
4054
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
4055
        3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
 
4056
        3,    3,    3,    3,    3,    3,    3,    3,    5,    4,
 
4057
        4,    4,    2,    2,    4,    2,    2,    2,    2,    2,
 
4058
        2,    2,    2,    2,    2,    2,    1,    4,    3,    3,
 
4059
        2,    9,   10,    3,    0,    4,    1,    3,    2,    4,
 
4060
        6,    8,    4,    4,    4,    1,    1,    1,    2,    3,
 
4061
        1,    1,    1,    1,    1,    1,    0,    3,    3,    4,
 
4062
        4,    0,    2,    3,    0,    1,    1,    0,    3,    1,
 
4063
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
4064
        3,    2,    1,    1,    3,    2,    2,    4,    3,    1,
 
4065
        3,    3,    3,    0,    2,    0,    1,    3,    1,    3,
 
4066
        1,    1,    1,    1,    1,    6,    4,    3,    6,    4,
 
4067
        4,    4,    1,    3,    1,    2,    1,    1,    4,    1,
 
4068
        3,    6,    4,    4,    4,    4,    1,    4,    0,    1,
 
4069
        1,    3,    1,    3,    1,    1,    4,    0,    0,    2,
 
4070
        3,    1,    3,    1,    4,    2,    2,    2,    1,    2,
 
4071
        1,    4,    3,    3,    3,    6,    3,    1,    1,    1
 
4072
];
 
4073
 
 
4074
 
 
4075
 
 
4076
 
 
4077
 
 
4078
 
 
4079
 
 
4080
PHP.Parser.prototype.yyn0 = function () {
 
4081
    this.yyval = this.yyastk[ this.stackPos ];
 
4082
};
 
4083
 
 
4084
PHP.Parser.prototype.yyn1 = function ( attributes ) {
 
4085
     this.yyval = this.Stmt_Namespace_postprocess(this.yyastk[ this.stackPos-(1-1) ]); 
 
4086
};
 
4087
 
 
4088
PHP.Parser.prototype.yyn2 = function ( attributes ) {
 
4089
     if (Array.isArray(this.yyastk[ this.stackPos-(2-2) ])) { this.yyval = this.yyastk[ this.stackPos-(2-1) ].concat( this.yyastk[ this.stackPos-(2-2) ]); } else { this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; }; 
 
4090
};
 
4091
 
 
4092
PHP.Parser.prototype.yyn3 = function ( attributes ) {
 
4093
     this.yyval = []; 
 
4094
};
 
4095
 
 
4096
PHP.Parser.prototype.yyn4 = function ( attributes ) {
 
4097
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4098
};
 
4099
 
 
4100
PHP.Parser.prototype.yyn5 = function ( attributes ) {
 
4101
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4102
};
 
4103
 
 
4104
PHP.Parser.prototype.yyn6 = function ( attributes ) {
 
4105
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4106
};
 
4107
 
 
4108
PHP.Parser.prototype.yyn7 = function ( attributes ) {
 
4109
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4110
};
 
4111
 
 
4112
PHP.Parser.prototype.yyn8 = function ( attributes ) {
 
4113
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4114
};
 
4115
 
 
4116
PHP.Parser.prototype.yyn9 = function ( attributes ) {
 
4117
     this.yyval = this.Node_Stmt_HaltCompiler(attributes); 
 
4118
};
 
4119
 
 
4120
PHP.Parser.prototype.yyn10 = function ( attributes ) {
 
4121
     this.yyval = this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[ this.stackPos-(3-2) ], attributes), null, attributes); 
 
4122
};
 
4123
 
 
4124
PHP.Parser.prototype.yyn11 = function ( attributes ) {
 
4125
     this.yyval = this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[ this.stackPos-(5-2) ], attributes), this.yyastk[ this.stackPos-(5-4) ], attributes); 
 
4126
};
 
4127
 
 
4128
PHP.Parser.prototype.yyn12 = function ( attributes ) {
 
4129
     this.yyval = this.Node_Stmt_Namespace(null, this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
4130
};
 
4131
 
 
4132
PHP.Parser.prototype.yyn13 = function ( attributes ) {
 
4133
     this.yyval = this.Node_Stmt_Use(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4134
};
 
4135
 
 
4136
PHP.Parser.prototype.yyn14 = function ( attributes ) {
 
4137
     this.yyval = this.Node_Stmt_Const(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4138
};
 
4139
 
 
4140
PHP.Parser.prototype.yyn15 = function ( attributes ) {
 
4141
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4142
};
 
4143
 
 
4144
PHP.Parser.prototype.yyn16 = function ( attributes ) {
 
4145
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4146
};
 
4147
 
 
4148
PHP.Parser.prototype.yyn17 = function ( attributes ) {
 
4149
     this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(1-1) ], attributes), null, attributes); 
 
4150
};
 
4151
 
 
4152
PHP.Parser.prototype.yyn18 = function ( attributes ) {
 
4153
     this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(3-1) ], attributes), this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4154
};
 
4155
 
 
4156
PHP.Parser.prototype.yyn19 = function ( attributes ) {
 
4157
     this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(2-2) ], attributes), null, attributes); 
 
4158
};
 
4159
 
 
4160
PHP.Parser.prototype.yyn20 = function ( attributes ) {
 
4161
     this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(4-2) ], attributes), this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
4162
};
 
4163
 
 
4164
PHP.Parser.prototype.yyn21 = function ( attributes ) {
 
4165
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4166
};
 
4167
 
 
4168
PHP.Parser.prototype.yyn22 = function ( attributes ) {
 
4169
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4170
};
 
4171
 
 
4172
PHP.Parser.prototype.yyn23 = function ( attributes ) {
 
4173
     this.yyval = this.Node_Const(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4174
};
 
4175
 
 
4176
PHP.Parser.prototype.yyn24 = function ( attributes ) {
 
4177
     if (Array.isArray(this.yyastk[ this.stackPos-(2-2) ])) { this.yyval = this.yyastk[ this.stackPos-(2-1) ].concat( this.yyastk[ this.stackPos-(2-2) ]); } else { this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; }; 
 
4178
};
 
4179
 
 
4180
PHP.Parser.prototype.yyn25 = function ( attributes ) {
 
4181
     this.yyval = []; 
 
4182
};
 
4183
 
 
4184
PHP.Parser.prototype.yyn26 = function ( attributes ) {
 
4185
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4186
};
 
4187
 
 
4188
PHP.Parser.prototype.yyn27 = function ( attributes ) {
 
4189
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4190
};
 
4191
 
 
4192
PHP.Parser.prototype.yyn28 = function ( attributes ) {
 
4193
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4194
};
 
4195
 
 
4196
PHP.Parser.prototype.yyn29 = function ( attributes ) {
 
4197
     throw new Error('__halt_compiler() can only be used from the outermost scope'); 
 
4198
};
 
4199
 
 
4200
PHP.Parser.prototype.yyn30 = function ( attributes ) {
 
4201
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4202
};
 
4203
 
 
4204
PHP.Parser.prototype.yyn31 = function ( attributes ) {
 
4205
     this.yyval = this.Node_Stmt_If(this.yyastk[ this.stackPos-(7-3) ], {'stmts':  Array.isArray(this.yyastk[ this.stackPos-(7-5) ]) ? this.yyastk[ this.stackPos-(7-5) ] : [this.yyastk[ this.stackPos-(7-5) ]], 'elseifs':  this.yyastk[ this.stackPos-(7-6) ], 'Else':  this.yyastk[ this.stackPos-(7-7) ]}, attributes); 
 
4206
};
 
4207
 
 
4208
PHP.Parser.prototype.yyn32 = function ( attributes ) {
 
4209
     this.yyval = this.Node_Stmt_If(this.yyastk[ this.stackPos-(10-3) ], {'stmts':  this.yyastk[ this.stackPos-(10-6) ], 'elseifs':  this.yyastk[ this.stackPos-(10-7) ], 'else':  this.yyastk[ this.stackPos-(10-8) ]}, attributes); 
 
4210
};
 
4211
 
 
4212
PHP.Parser.prototype.yyn33 = function ( attributes ) {
 
4213
     this.yyval = this.Node_Stmt_While(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); 
 
4214
};
 
4215
 
 
4216
PHP.Parser.prototype.yyn34 = function ( attributes ) {
 
4217
     this.yyval = this.Node_Stmt_Do(this.yyastk[ this.stackPos-(7-5) ], Array.isArray(this.yyastk[ this.stackPos-(7-2) ]) ? this.yyastk[ this.stackPos-(7-2) ] : [this.yyastk[ this.stackPos-(7-2) ]], attributes); 
 
4218
};
 
4219
 
 
4220
PHP.Parser.prototype.yyn35 = function ( attributes ) {
 
4221
     this.yyval = this.Node_Stmt_For({'init':  this.yyastk[ this.stackPos-(9-3) ], 'cond':  this.yyastk[ this.stackPos-(9-5) ], 'loop':  this.yyastk[ this.stackPos-(9-7) ], 'stmts':  this.yyastk[ this.stackPos-(9-9) ]}, attributes); 
 
4222
};
 
4223
 
 
4224
PHP.Parser.prototype.yyn36 = function ( attributes ) {
 
4225
     this.yyval = this.Node_Stmt_Switch(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); 
 
4226
};
 
4227
 
 
4228
PHP.Parser.prototype.yyn37 = function ( attributes ) {
 
4229
     this.yyval = this.Node_Stmt_Break(null, attributes); 
 
4230
};
 
4231
 
 
4232
PHP.Parser.prototype.yyn38 = function ( attributes ) {
 
4233
     this.yyval = this.Node_Stmt_Break(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4234
};
 
4235
 
 
4236
PHP.Parser.prototype.yyn39 = function ( attributes ) {
 
4237
     this.yyval = this.Node_Stmt_Continue(null, attributes); 
 
4238
};
 
4239
 
 
4240
PHP.Parser.prototype.yyn40 = function ( attributes ) {
 
4241
     this.yyval = this.Node_Stmt_Continue(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4242
};
 
4243
 
 
4244
PHP.Parser.prototype.yyn41 = function ( attributes ) {
 
4245
     this.yyval = this.Node_Stmt_Return(null, attributes); 
 
4246
};
 
4247
 
 
4248
PHP.Parser.prototype.yyn42 = function ( attributes ) {
 
4249
     this.yyval = this.Node_Stmt_Return(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4250
};
 
4251
 
 
4252
PHP.Parser.prototype.yyn43 = function ( attributes ) {
 
4253
     this.yyval = this.Node_Stmt_Global(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4254
};
 
4255
 
 
4256
PHP.Parser.prototype.yyn44 = function ( attributes ) {
 
4257
     this.yyval = this.Node_Stmt_Static(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4258
};
 
4259
 
 
4260
PHP.Parser.prototype.yyn45 = function ( attributes ) {
 
4261
     this.yyval = this.Node_Stmt_Echo(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4262
};
 
4263
 
 
4264
PHP.Parser.prototype.yyn46 = function ( attributes ) {
 
4265
     this.yyval = this.Node_Stmt_InlineHTML(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
4266
};
 
4267
 
 
4268
PHP.Parser.prototype.yyn47 = function ( attributes ) {
 
4269
     this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4270
};
 
4271
 
 
4272
PHP.Parser.prototype.yyn48 = function ( attributes ) {
 
4273
     this.yyval = this.Node_Stmt_Unset(this.yyastk[ this.stackPos-(5-3) ], attributes); 
 
4274
};
 
4275
 
 
4276
PHP.Parser.prototype.yyn49 = function ( attributes ) {
 
4277
     this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(7-3) ], this.yyastk[ this.stackPos-(7-5) ], {'keyVar':  null, 'byRef':  false, 'stmts':  this.yyastk[ this.stackPos-(7-7) ]}, attributes); 
 
4278
};
 
4279
 
 
4280
PHP.Parser.prototype.yyn50 = function ( attributes ) {
 
4281
     this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(8-3) ], this.yyastk[ this.stackPos-(8-6) ], {'keyVar':  null, 'byRef':  true, 'stmts':  this.yyastk[ this.stackPos-(8-8) ]}, attributes); 
 
4282
};
 
4283
 
 
4284
PHP.Parser.prototype.yyn51 = function ( attributes ) {
 
4285
     this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(10-3) ], this.yyastk[ this.stackPos-(10-8) ], {'keyVar':  this.yyastk[ this.stackPos-(10-5) ], 'byRef':  this.yyastk[ this.stackPos-(10-7) ], 'stmts':  this.yyastk[ this.stackPos-(10-10) ]}, attributes); 
 
4286
};
 
4287
 
 
4288
PHP.Parser.prototype.yyn52 = function ( attributes ) {
 
4289
     this.yyval = this.Node_Stmt_Declare(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); 
 
4290
};
 
4291
 
 
4292
PHP.Parser.prototype.yyn53 = function ( attributes ) {
 
4293
     this.yyval = []; 
 
4294
};
 
4295
 
 
4296
PHP.Parser.prototype.yyn54 = function ( attributes ) {
 
4297
     this.yyval = this.Node_Stmt_TryCatch(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); 
 
4298
};
 
4299
 
 
4300
PHP.Parser.prototype.yyn55 = function ( attributes ) {
 
4301
     this.yyval = this.Node_Stmt_Throw(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4302
};
 
4303
 
 
4304
PHP.Parser.prototype.yyn56 = function ( attributes ) {
 
4305
     this.yyval = this.Node_Stmt_Goto(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4306
};
 
4307
 
 
4308
PHP.Parser.prototype.yyn57 = function ( attributes ) {
 
4309
     this.yyval = this.Node_Stmt_Label(this.yyastk[ this.stackPos-(2-1) ], attributes); 
 
4310
};
 
4311
 
 
4312
PHP.Parser.prototype.yyn58 = function ( attributes ) {
 
4313
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4314
};
 
4315
 
 
4316
PHP.Parser.prototype.yyn59 = function ( attributes ) {
 
4317
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4318
};
 
4319
 
 
4320
PHP.Parser.prototype.yyn60 = function ( attributes ) {
 
4321
     this.yyval = this.Node_Stmt_Catch(this.yyastk[ this.stackPos-(8-3) ], this.yyastk[ this.stackPos-(8-4) ].substring( 1 ), this.yyastk[ this.stackPos-(8-7) ], attributes); 
 
4322
};
 
4323
 
 
4324
PHP.Parser.prototype.yyn61 = function ( attributes ) {
 
4325
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4326
};
 
4327
 
 
4328
PHP.Parser.prototype.yyn62 = function ( attributes ) {
 
4329
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4330
};
 
4331
 
 
4332
PHP.Parser.prototype.yyn63 = function ( attributes ) {
 
4333
     this.yyval = false; 
 
4334
};
 
4335
 
 
4336
PHP.Parser.prototype.yyn64 = function ( attributes ) {
 
4337
     this.yyval = true; 
 
4338
};
 
4339
 
 
4340
PHP.Parser.prototype.yyn65 = function ( attributes ) {
 
4341
     this.yyval = this.Node_Stmt_Function(this.yyastk[ this.stackPos-(9-3) ], {'byRef':  this.yyastk[ this.stackPos-(9-2) ], 'params':  this.yyastk[ this.stackPos-(9-5) ], 'stmts':  this.yyastk[ this.stackPos-(9-8) ]}, attributes); 
 
4342
};
 
4343
 
 
4344
PHP.Parser.prototype.yyn66 = function ( attributes ) {
 
4345
     this.yyval = this.Node_Stmt_Class(this.yyastk[ this.stackPos-(7-2) ], {'type':  this.yyastk[ this.stackPos-(7-1) ], 'Extends':  this.yyastk[ this.stackPos-(7-3) ], 'Implements':  this.yyastk[ this.stackPos-(7-4) ], 'stmts':  this.yyastk[ this.stackPos-(7-6) ]}, attributes); 
 
4346
};
 
4347
 
 
4348
PHP.Parser.prototype.yyn67 = function ( attributes ) {
 
4349
     this.yyval = this.Node_Stmt_Interface(this.yyastk[ this.stackPos-(6-2) ], {'Extends':  this.yyastk[ this.stackPos-(6-3) ], 'stmts':  this.yyastk[ this.stackPos-(6-5) ]}, attributes); 
 
4350
};
 
4351
 
 
4352
PHP.Parser.prototype.yyn68 = function ( attributes ) {
 
4353
     this.yyval = this.Node_Stmt_Trait(this.yyastk[ this.stackPos-(5-2) ], this.yyastk[ this.stackPos-(5-4) ], attributes); 
 
4354
};
 
4355
 
 
4356
PHP.Parser.prototype.yyn69 = function ( attributes ) {
 
4357
     this.yyval = 0; 
 
4358
};
 
4359
 
 
4360
PHP.Parser.prototype.yyn70 = function ( attributes ) {
 
4361
     this.yyval = this.MODIFIER_ABSTRACT; 
 
4362
};
 
4363
 
 
4364
PHP.Parser.prototype.yyn71 = function ( attributes ) {
 
4365
     this.yyval = this.MODIFIER_FINAL; 
 
4366
};
 
4367
 
 
4368
PHP.Parser.prototype.yyn72 = function ( attributes ) {
 
4369
     this.yyval = null; 
 
4370
};
 
4371
 
 
4372
PHP.Parser.prototype.yyn73 = function ( attributes ) {
 
4373
     this.yyval = this.yyastk[ this.stackPos-(2-2) ]; 
 
4374
};
 
4375
 
 
4376
PHP.Parser.prototype.yyn74 = function ( attributes ) {
 
4377
     this.yyval = []; 
 
4378
};
 
4379
 
 
4380
PHP.Parser.prototype.yyn75 = function ( attributes ) {
 
4381
     this.yyval = this.yyastk[ this.stackPos-(2-2) ]; 
 
4382
};
 
4383
 
 
4384
PHP.Parser.prototype.yyn76 = function ( attributes ) {
 
4385
     this.yyval = []; 
 
4386
};
 
4387
 
 
4388
PHP.Parser.prototype.yyn77 = function ( attributes ) {
 
4389
     this.yyval = this.yyastk[ this.stackPos-(2-2) ]; 
 
4390
};
 
4391
 
 
4392
PHP.Parser.prototype.yyn78 = function ( attributes ) {
 
4393
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4394
};
 
4395
 
 
4396
PHP.Parser.prototype.yyn79 = function ( attributes ) {
 
4397
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4398
};
 
4399
 
 
4400
PHP.Parser.prototype.yyn80 = function ( attributes ) {
 
4401
     this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4402
};
 
4403
 
 
4404
PHP.Parser.prototype.yyn81 = function ( attributes ) {
 
4405
     this.yyval = this.yyastk[ this.stackPos-(4-2) ]; 
 
4406
};
 
4407
 
 
4408
PHP.Parser.prototype.yyn82 = function ( attributes ) {
 
4409
     this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4410
};
 
4411
 
 
4412
PHP.Parser.prototype.yyn83 = function ( attributes ) {
 
4413
     this.yyval = this.yyastk[ this.stackPos-(4-2) ]; 
 
4414
};
 
4415
 
 
4416
PHP.Parser.prototype.yyn84 = function ( attributes ) {
 
4417
     this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4418
};
 
4419
 
 
4420
PHP.Parser.prototype.yyn85 = function ( attributes ) {
 
4421
     this.yyval = this.yyastk[ this.stackPos-(4-2) ]; 
 
4422
};
 
4423
 
 
4424
PHP.Parser.prototype.yyn86 = function ( attributes ) {
 
4425
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4426
};
 
4427
 
 
4428
PHP.Parser.prototype.yyn87 = function ( attributes ) {
 
4429
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4430
};
 
4431
 
 
4432
PHP.Parser.prototype.yyn88 = function ( attributes ) {
 
4433
     this.yyval = this.Node_Stmt_DeclareDeclare(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4434
};
 
4435
 
 
4436
PHP.Parser.prototype.yyn89 = function ( attributes ) {
 
4437
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4438
};
 
4439
 
 
4440
PHP.Parser.prototype.yyn90 = function ( attributes ) {
 
4441
     this.yyval = this.yyastk[ this.stackPos-(4-3) ]; 
 
4442
};
 
4443
 
 
4444
PHP.Parser.prototype.yyn91 = function ( attributes ) {
 
4445
     this.yyval = this.yyastk[ this.stackPos-(4-2) ]; 
 
4446
};
 
4447
 
 
4448
PHP.Parser.prototype.yyn92 = function ( attributes ) {
 
4449
     this.yyval = this.yyastk[ this.stackPos-(5-3) ]; 
 
4450
};
 
4451
 
 
4452
PHP.Parser.prototype.yyn93 = function ( attributes ) {
 
4453
     this.yyval = []; 
 
4454
};
 
4455
 
 
4456
PHP.Parser.prototype.yyn94 = function ( attributes ) {
 
4457
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4458
};
 
4459
 
 
4460
PHP.Parser.prototype.yyn95 = function ( attributes ) {
 
4461
     this.yyval = this.Node_Stmt_Case(this.yyastk[ this.stackPos-(4-2) ], this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
4462
};
 
4463
 
 
4464
PHP.Parser.prototype.yyn96 = function ( attributes ) {
 
4465
     this.yyval = this.Node_Stmt_Case(null, this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4466
};
 
4467
 
 
4468
PHP.Parser.prototype.yyn97 = function () {
 
4469
    this.yyval = this.yyastk[ this.stackPos ];
 
4470
};
 
4471
 
 
4472
PHP.Parser.prototype.yyn98 = function () {
 
4473
    this.yyval = this.yyastk[ this.stackPos ];
 
4474
};
 
4475
 
 
4476
PHP.Parser.prototype.yyn99 = function ( attributes ) {
 
4477
     this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4478
};
 
4479
 
 
4480
PHP.Parser.prototype.yyn100 = function ( attributes ) {
 
4481
     this.yyval = this.yyastk[ this.stackPos-(4-2) ]; 
 
4482
};
 
4483
 
 
4484
PHP.Parser.prototype.yyn101 = function ( attributes ) {
 
4485
     this.yyval = []; 
 
4486
};
 
4487
 
 
4488
PHP.Parser.prototype.yyn102 = function ( attributes ) {
 
4489
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4490
};
 
4491
 
 
4492
PHP.Parser.prototype.yyn103 = function ( attributes ) {
 
4493
     this.yyval = this.Node_Stmt_ElseIf(this.yyastk[ this.stackPos-(5-3) ], Array.isArray(this.yyastk[ this.stackPos-(5-5) ]) ? this.yyastk[ this.stackPos-(5-5) ] : [this.yyastk[ this.stackPos-(5-5) ]], attributes); 
 
4494
};
 
4495
 
 
4496
PHP.Parser.prototype.yyn104 = function ( attributes ) {
 
4497
     this.yyval = []; 
 
4498
};
 
4499
 
 
4500
PHP.Parser.prototype.yyn105 = function ( attributes ) {
 
4501
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4502
};
 
4503
 
 
4504
PHP.Parser.prototype.yyn106 = function ( attributes ) {
 
4505
     this.yyval = this.Node_Stmt_ElseIf(this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-6) ], attributes); 
 
4506
};
 
4507
 
 
4508
PHP.Parser.prototype.yyn107 = function ( attributes ) {
 
4509
     this.yyval = null; 
 
4510
};
 
4511
 
 
4512
PHP.Parser.prototype.yyn108 = function ( attributes ) {
 
4513
     this.yyval = this.Node_Stmt_Else(Array.isArray(this.yyastk[ this.stackPos-(2-2) ]) ? this.yyastk[ this.stackPos-(2-2) ] : [this.yyastk[ this.stackPos-(2-2) ]], attributes); 
 
4514
};
 
4515
 
 
4516
PHP.Parser.prototype.yyn109 = function ( attributes ) {
 
4517
     this.yyval = null; 
 
4518
};
 
4519
 
 
4520
PHP.Parser.prototype.yyn110 = function ( attributes ) {
 
4521
     this.yyval = this.Node_Stmt_Else(this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4522
};
 
4523
 
 
4524
PHP.Parser.prototype.yyn111 = function ( attributes ) {
 
4525
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4526
};
 
4527
 
 
4528
PHP.Parser.prototype.yyn112 = function ( attributes ) {
 
4529
     this.yyval = []; 
 
4530
};
 
4531
 
 
4532
PHP.Parser.prototype.yyn113 = function ( attributes ) {
 
4533
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4534
};
 
4535
 
 
4536
PHP.Parser.prototype.yyn114 = function ( attributes ) {
 
4537
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4538
};
 
4539
 
 
4540
PHP.Parser.prototype.yyn115 = function ( attributes ) {
 
4541
     this.yyval = this.Node_Param(this.yyastk[ this.stackPos-(3-3) ].substring( 1 ), null, this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4542
};
 
4543
 
 
4544
PHP.Parser.prototype.yyn116 = function ( attributes ) {
 
4545
     this.yyval = this.Node_Param(this.yyastk[ this.stackPos-(5-3) ].substring( 1 ), this.yyastk[ this.stackPos-(5-5) ], this.yyastk[ this.stackPos-(5-1) ], this.yyastk[ this.stackPos-(5-2) ], attributes); 
 
4546
};
 
4547
 
 
4548
PHP.Parser.prototype.yyn117 = function ( attributes ) {
 
4549
     this.yyval = null; 
 
4550
};
 
4551
 
 
4552
PHP.Parser.prototype.yyn118 = function ( attributes ) {
 
4553
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4554
};
 
4555
 
 
4556
PHP.Parser.prototype.yyn119 = function ( attributes ) {
 
4557
     this.yyval = 'array'; 
 
4558
};
 
4559
 
 
4560
PHP.Parser.prototype.yyn120 = function ( attributes ) {
 
4561
     this.yyval = 'callable'; 
 
4562
};
 
4563
 
 
4564
PHP.Parser.prototype.yyn121 = function ( attributes ) {
 
4565
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4566
};
 
4567
 
 
4568
PHP.Parser.prototype.yyn122 = function ( attributes ) {
 
4569
     this.yyval = []; 
 
4570
};
 
4571
 
 
4572
PHP.Parser.prototype.yyn123 = function ( attributes ) {
 
4573
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4574
};
 
4575
 
 
4576
PHP.Parser.prototype.yyn124 = function ( attributes ) {
 
4577
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4578
};
 
4579
 
 
4580
PHP.Parser.prototype.yyn125 = function ( attributes ) {
 
4581
     this.yyval = this.Node_Arg(this.yyastk[ this.stackPos-(1-1) ], false, attributes); 
 
4582
};
 
4583
 
 
4584
PHP.Parser.prototype.yyn126 = function ( attributes ) {
 
4585
     this.yyval = this.Node_Arg(this.yyastk[ this.stackPos-(2-2) ], true, attributes); 
 
4586
};
 
4587
 
 
4588
PHP.Parser.prototype.yyn127 = function ( attributes ) {
 
4589
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4590
};
 
4591
 
 
4592
PHP.Parser.prototype.yyn128 = function ( attributes ) {
 
4593
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4594
};
 
4595
 
 
4596
PHP.Parser.prototype.yyn129 = function ( attributes ) {
 
4597
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); 
 
4598
};
 
4599
 
 
4600
PHP.Parser.prototype.yyn130 = function ( attributes ) {
 
4601
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4602
};
 
4603
 
 
4604
PHP.Parser.prototype.yyn131 = function ( attributes ) {
 
4605
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
4606
};
 
4607
 
 
4608
PHP.Parser.prototype.yyn132 = function ( attributes ) {
 
4609
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4610
};
 
4611
 
 
4612
PHP.Parser.prototype.yyn133 = function ( attributes ) {
 
4613
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4614
};
 
4615
 
 
4616
PHP.Parser.prototype.yyn134 = function ( attributes ) {
 
4617
     this.yyval = this.Node_Stmt_StaticVar(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), null, attributes); 
 
4618
};
 
4619
 
 
4620
PHP.Parser.prototype.yyn135 = function ( attributes ) {
 
4621
     this.yyval = this.Node_Stmt_StaticVar(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4622
};
 
4623
 
 
4624
PHP.Parser.prototype.yyn136 = function ( attributes ) {
 
4625
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4626
};
 
4627
 
 
4628
PHP.Parser.prototype.yyn137 = function ( attributes ) {
 
4629
     this.yyval = []; 
 
4630
};
 
4631
 
 
4632
PHP.Parser.prototype.yyn138 = function ( attributes ) {
 
4633
     this.yyval = this.Node_Stmt_Property(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4634
};
 
4635
 
 
4636
PHP.Parser.prototype.yyn139 = function ( attributes ) {
 
4637
     this.yyval = this.Node_Stmt_ClassConst(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
4638
};
 
4639
 
 
4640
PHP.Parser.prototype.yyn140 = function ( attributes ) {
 
4641
     this.yyval = this.Node_Stmt_ClassMethod(this.yyastk[ this.stackPos-(8-4) ], {'type':  this.yyastk[ this.stackPos-(8-1) ], 'byRef':  this.yyastk[ this.stackPos-(8-3) ], 'params':  this.yyastk[ this.stackPos-(8-6) ], 'stmts':  this.yyastk[ this.stackPos-(8-8) ]}, attributes); 
 
4642
};
 
4643
 
 
4644
PHP.Parser.prototype.yyn141 = function ( attributes ) {
 
4645
     this.yyval = this.Node_Stmt_TraitUse(this.yyastk[ this.stackPos-(3-2) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4646
};
 
4647
 
 
4648
PHP.Parser.prototype.yyn142 = function ( attributes ) {
 
4649
     this.yyval = []; 
 
4650
};
 
4651
 
 
4652
PHP.Parser.prototype.yyn143 = function ( attributes ) {
 
4653
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4654
};
 
4655
 
 
4656
PHP.Parser.prototype.yyn144 = function ( attributes ) {
 
4657
     this.yyval = []; 
 
4658
};
 
4659
 
 
4660
PHP.Parser.prototype.yyn145 = function ( attributes ) {
 
4661
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
4662
};
 
4663
 
 
4664
PHP.Parser.prototype.yyn146 = function ( attributes ) {
 
4665
     this.yyval = this.Node_Stmt_TraitUseAdaptation_Precedence(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
4666
};
 
4667
 
 
4668
PHP.Parser.prototype.yyn147 = function ( attributes ) {
 
4669
     this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(5-1) ][0], this.yyastk[ this.stackPos-(5-1) ][1], this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-4) ], attributes); 
 
4670
};
 
4671
 
 
4672
PHP.Parser.prototype.yyn148 = function ( attributes ) {
 
4673
     this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], this.yyastk[ this.stackPos-(4-3) ], null, attributes); 
 
4674
};
 
4675
 
 
4676
PHP.Parser.prototype.yyn149 = function ( attributes ) {
 
4677
     this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], null, this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
4678
};
 
4679
 
 
4680
PHP.Parser.prototype.yyn150 = function ( attributes ) {
 
4681
     this.yyval = array(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ]); 
 
4682
};
 
4683
 
 
4684
PHP.Parser.prototype.yyn151 = function ( attributes ) {
 
4685
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4686
};
 
4687
 
 
4688
PHP.Parser.prototype.yyn152 = function ( attributes ) {
 
4689
     this.yyval = array(null, this.yyastk[ this.stackPos-(1-1) ]); 
 
4690
};
 
4691
 
 
4692
PHP.Parser.prototype.yyn153 = function ( attributes ) {
 
4693
     this.yyval = null; 
 
4694
};
 
4695
 
 
4696
PHP.Parser.prototype.yyn154 = function ( attributes ) {
 
4697
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4698
};
 
4699
 
 
4700
PHP.Parser.prototype.yyn155 = function ( attributes ) {
 
4701
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4702
};
 
4703
 
 
4704
PHP.Parser.prototype.yyn156 = function ( attributes ) {
 
4705
     this.yyval = this.MODIFIER_PUBLIC; 
 
4706
};
 
4707
 
 
4708
PHP.Parser.prototype.yyn157 = function ( attributes ) {
 
4709
     this.yyval = this.MODIFIER_PUBLIC; 
 
4710
};
 
4711
 
 
4712
PHP.Parser.prototype.yyn158 = function ( attributes ) {
 
4713
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4714
};
 
4715
 
 
4716
PHP.Parser.prototype.yyn159 = function ( attributes ) {
 
4717
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4718
};
 
4719
 
 
4720
PHP.Parser.prototype.yyn160 = function ( attributes ) {
 
4721
     this.Stmt_Class_verifyModifier(this.yyastk[ this.stackPos-(2-1) ], this.yyastk[ this.stackPos-(2-2) ]); this.yyval = this.yyastk[ this.stackPos-(2-1) ] | this.yyastk[ this.stackPos-(2-2) ]; 
 
4722
};
 
4723
 
 
4724
PHP.Parser.prototype.yyn161 = function ( attributes ) {
 
4725
     this.yyval = this.MODIFIER_PUBLIC; 
 
4726
};
 
4727
 
 
4728
PHP.Parser.prototype.yyn162 = function ( attributes ) {
 
4729
     this.yyval = this.MODIFIER_PROTECTED; 
 
4730
};
 
4731
 
 
4732
PHP.Parser.prototype.yyn163 = function ( attributes ) {
 
4733
     this.yyval = this.MODIFIER_PRIVATE; 
 
4734
};
 
4735
 
 
4736
PHP.Parser.prototype.yyn164 = function ( attributes ) {
 
4737
     this.yyval = this.MODIFIER_STATIC; 
 
4738
};
 
4739
 
 
4740
PHP.Parser.prototype.yyn165 = function ( attributes ) {
 
4741
     this.yyval = this.MODIFIER_ABSTRACT; 
 
4742
};
 
4743
 
 
4744
PHP.Parser.prototype.yyn166 = function ( attributes ) {
 
4745
     this.yyval = this.MODIFIER_FINAL; 
 
4746
};
 
4747
 
 
4748
PHP.Parser.prototype.yyn167 = function ( attributes ) {
 
4749
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4750
};
 
4751
 
 
4752
PHP.Parser.prototype.yyn168 = function ( attributes ) {
 
4753
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4754
};
 
4755
 
 
4756
PHP.Parser.prototype.yyn169 = function ( attributes ) {
 
4757
     this.yyval = this.Node_Stmt_PropertyProperty(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), null, attributes); 
 
4758
};
 
4759
 
 
4760
PHP.Parser.prototype.yyn170 = function ( attributes ) {
 
4761
     this.yyval = this.Node_Stmt_PropertyProperty(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4762
};
 
4763
 
 
4764
PHP.Parser.prototype.yyn171 = function ( attributes ) {
 
4765
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
4766
};
 
4767
 
 
4768
PHP.Parser.prototype.yyn172 = function ( attributes ) {
 
4769
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
4770
};
 
4771
 
 
4772
PHP.Parser.prototype.yyn173 = function ( attributes ) {
 
4773
     this.yyval = []; 
 
4774
};
 
4775
 
 
4776
PHP.Parser.prototype.yyn174 = function ( attributes ) {
 
4777
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4778
};
 
4779
 
 
4780
PHP.Parser.prototype.yyn175 = function ( attributes ) {
 
4781
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4782
};
 
4783
 
 
4784
PHP.Parser.prototype.yyn176 = function ( attributes ) {
 
4785
     this.yyval = this.Node_Expr_AssignList(this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-6) ], attributes); 
 
4786
};
 
4787
 
 
4788
PHP.Parser.prototype.yyn177 = function ( attributes ) {
 
4789
     this.yyval = this.Node_Expr_Assign(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4790
};
 
4791
 
 
4792
PHP.Parser.prototype.yyn178 = function ( attributes ) {
 
4793
     this.yyval = this.Node_Expr_AssignRef(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
4794
};
 
4795
 
 
4796
PHP.Parser.prototype.yyn179 = function ( attributes ) {
 
4797
     this.yyval = this.Node_Expr_AssignRef(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
4798
};
 
4799
 
 
4800
PHP.Parser.prototype.yyn180 = function ( attributes ) {
 
4801
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
4802
};
 
4803
 
 
4804
PHP.Parser.prototype.yyn181 = function ( attributes ) {
 
4805
     this.yyval = this.Node_Expr_Clone(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4806
};
 
4807
 
 
4808
PHP.Parser.prototype.yyn182 = function ( attributes ) {
 
4809
     this.yyval = this.Node_Expr_AssignPlus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4810
};
 
4811
 
 
4812
PHP.Parser.prototype.yyn183 = function ( attributes ) {
 
4813
     this.yyval = this.Node_Expr_AssignMinus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4814
};
 
4815
 
 
4816
PHP.Parser.prototype.yyn184 = function ( attributes ) {
 
4817
     this.yyval = this.Node_Expr_AssignMul(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4818
};
 
4819
 
 
4820
PHP.Parser.prototype.yyn185 = function ( attributes ) {
 
4821
     this.yyval = this.Node_Expr_AssignDiv(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4822
};
 
4823
 
 
4824
PHP.Parser.prototype.yyn186 = function ( attributes ) {
 
4825
     this.yyval = this.Node_Expr_AssignConcat(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4826
};
 
4827
 
 
4828
PHP.Parser.prototype.yyn187 = function ( attributes ) {
 
4829
     this.yyval = this.Node_Expr_AssignMod(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4830
};
 
4831
 
 
4832
PHP.Parser.prototype.yyn188 = function ( attributes ) {
 
4833
     this.yyval = this.Node_Expr_AssignBitwiseAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4834
};
 
4835
 
 
4836
PHP.Parser.prototype.yyn189 = function ( attributes ) {
 
4837
     this.yyval = this.Node_Expr_AssignBitwiseOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4838
};
 
4839
 
 
4840
PHP.Parser.prototype.yyn190 = function ( attributes ) {
 
4841
     this.yyval = this.Node_Expr_AssignBitwiseXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4842
};
 
4843
 
 
4844
PHP.Parser.prototype.yyn191 = function ( attributes ) {
 
4845
     this.yyval = this.Node_Expr_AssignShiftLeft(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4846
};
 
4847
 
 
4848
PHP.Parser.prototype.yyn192 = function ( attributes ) {
 
4849
     this.yyval = this.Node_Expr_AssignShiftRight(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4850
};
 
4851
 
 
4852
PHP.Parser.prototype.yyn193 = function ( attributes ) {
 
4853
     this.yyval = this.Node_Expr_PostInc(this.yyastk[ this.stackPos-(2-1) ], attributes); 
 
4854
};
 
4855
 
 
4856
PHP.Parser.prototype.yyn194 = function ( attributes ) {
 
4857
     this.yyval = this.Node_Expr_PreInc(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4858
};
 
4859
 
 
4860
PHP.Parser.prototype.yyn195 = function ( attributes ) {
 
4861
     this.yyval = this.Node_Expr_PostDec(this.yyastk[ this.stackPos-(2-1) ], attributes); 
 
4862
};
 
4863
 
 
4864
PHP.Parser.prototype.yyn196 = function ( attributes ) {
 
4865
     this.yyval = this.Node_Expr_PreDec(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4866
};
 
4867
 
 
4868
PHP.Parser.prototype.yyn197 = function ( attributes ) {
 
4869
     this.yyval = this.Node_Expr_BooleanOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4870
};
 
4871
 
 
4872
PHP.Parser.prototype.yyn198 = function ( attributes ) {
 
4873
     this.yyval = this.Node_Expr_BooleanAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4874
};
 
4875
 
 
4876
PHP.Parser.prototype.yyn199 = function ( attributes ) {
 
4877
     this.yyval = this.Node_Expr_LogicalOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4878
};
 
4879
 
 
4880
PHP.Parser.prototype.yyn200 = function ( attributes ) {
 
4881
     this.yyval = this.Node_Expr_LogicalAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4882
};
 
4883
 
 
4884
PHP.Parser.prototype.yyn201 = function ( attributes ) {
 
4885
     this.yyval = this.Node_Expr_LogicalXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4886
};
 
4887
 
 
4888
PHP.Parser.prototype.yyn202 = function ( attributes ) {
 
4889
     this.yyval = this.Node_Expr_BitwiseOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4890
};
 
4891
 
 
4892
PHP.Parser.prototype.yyn203 = function ( attributes ) {
 
4893
     this.yyval = this.Node_Expr_BitwiseAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4894
};
 
4895
 
 
4896
PHP.Parser.prototype.yyn204 = function ( attributes ) {
 
4897
     this.yyval = this.Node_Expr_BitwiseXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4898
};
 
4899
 
 
4900
PHP.Parser.prototype.yyn205 = function ( attributes ) {
 
4901
     this.yyval = this.Node_Expr_Concat(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4902
};
 
4903
 
 
4904
PHP.Parser.prototype.yyn206 = function ( attributes ) {
 
4905
     this.yyval = this.Node_Expr_Plus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4906
};
 
4907
 
 
4908
PHP.Parser.prototype.yyn207 = function ( attributes ) {
 
4909
     this.yyval = this.Node_Expr_Minus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4910
};
 
4911
 
 
4912
PHP.Parser.prototype.yyn208 = function ( attributes ) {
 
4913
     this.yyval = this.Node_Expr_Mul(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4914
};
 
4915
 
 
4916
PHP.Parser.prototype.yyn209 = function ( attributes ) {
 
4917
     this.yyval = this.Node_Expr_Div(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4918
};
 
4919
 
 
4920
PHP.Parser.prototype.yyn210 = function ( attributes ) {
 
4921
     this.yyval = this.Node_Expr_Mod(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4922
};
 
4923
 
 
4924
PHP.Parser.prototype.yyn211 = function ( attributes ) {
 
4925
     this.yyval = this.Node_Expr_ShiftLeft(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4926
};
 
4927
 
 
4928
PHP.Parser.prototype.yyn212 = function ( attributes ) {
 
4929
     this.yyval = this.Node_Expr_ShiftRight(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4930
};
 
4931
 
 
4932
PHP.Parser.prototype.yyn213 = function ( attributes ) {
 
4933
     this.yyval = this.Node_Expr_UnaryPlus(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4934
};
 
4935
 
 
4936
PHP.Parser.prototype.yyn214 = function ( attributes ) {
 
4937
     this.yyval = this.Node_Expr_UnaryMinus(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4938
};
 
4939
 
 
4940
PHP.Parser.prototype.yyn215 = function ( attributes ) {
 
4941
     this.yyval = this.Node_Expr_BooleanNot(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4942
};
 
4943
 
 
4944
PHP.Parser.prototype.yyn216 = function ( attributes ) {
 
4945
     this.yyval = this.Node_Expr_BitwiseNot(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
4946
};
 
4947
 
 
4948
PHP.Parser.prototype.yyn217 = function ( attributes ) {
 
4949
     this.yyval = this.Node_Expr_Identical(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4950
};
 
4951
 
 
4952
PHP.Parser.prototype.yyn218 = function ( attributes ) {
 
4953
     this.yyval = this.Node_Expr_NotIdentical(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4954
};
 
4955
 
 
4956
PHP.Parser.prototype.yyn219 = function ( attributes ) {
 
4957
     this.yyval = this.Node_Expr_Equal(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4958
};
 
4959
 
 
4960
PHP.Parser.prototype.yyn220 = function ( attributes ) {
 
4961
     this.yyval = this.Node_Expr_NotEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4962
};
 
4963
 
 
4964
PHP.Parser.prototype.yyn221 = function ( attributes ) {
 
4965
     this.yyval = this.Node_Expr_Smaller(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4966
};
 
4967
 
 
4968
PHP.Parser.prototype.yyn222 = function ( attributes ) {
 
4969
     this.yyval = this.Node_Expr_SmallerOrEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4970
};
 
4971
 
 
4972
PHP.Parser.prototype.yyn223 = function ( attributes ) {
 
4973
     this.yyval = this.Node_Expr_Greater(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4974
};
 
4975
 
 
4976
PHP.Parser.prototype.yyn224 = function ( attributes ) {
 
4977
     this.yyval = this.Node_Expr_GreaterOrEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4978
};
 
4979
 
 
4980
PHP.Parser.prototype.yyn225 = function ( attributes ) {
 
4981
     this.yyval = this.Node_Expr_Instanceof(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
4982
};
 
4983
 
 
4984
PHP.Parser.prototype.yyn226 = function ( attributes ) {
 
4985
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4986
};
 
4987
 
 
4988
PHP.Parser.prototype.yyn227 = function ( attributes ) {
 
4989
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
4990
};
 
4991
 
 
4992
PHP.Parser.prototype.yyn228 = function ( attributes ) {
 
4993
     this.yyval = this.Node_Expr_Ternary(this.yyastk[ this.stackPos-(5-1) ], this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); 
 
4994
};
 
4995
 
 
4996
PHP.Parser.prototype.yyn229 = function ( attributes ) {
 
4997
     this.yyval = this.Node_Expr_Ternary(this.yyastk[ this.stackPos-(4-1) ], null, this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
4998
};
 
4999
 
 
5000
PHP.Parser.prototype.yyn230 = function ( attributes ) {
 
5001
     this.yyval = this.Node_Expr_Isset(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5002
};
 
5003
 
 
5004
PHP.Parser.prototype.yyn231 = function ( attributes ) {
 
5005
     this.yyval = this.Node_Expr_Empty(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5006
};
 
5007
 
 
5008
PHP.Parser.prototype.yyn232 = function ( attributes ) {
 
5009
     this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_Include", attributes); 
 
5010
};
 
5011
 
 
5012
PHP.Parser.prototype.yyn233 = function ( attributes ) {
 
5013
     this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_IncludeOnce", attributes); 
 
5014
};
 
5015
 
 
5016
PHP.Parser.prototype.yyn234 = function ( attributes ) {
 
5017
     this.yyval = this.Node_Expr_Eval(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5018
};
 
5019
 
 
5020
PHP.Parser.prototype.yyn235 = function ( attributes ) {
 
5021
     this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_Require", attributes); 
 
5022
};
 
5023
 
 
5024
PHP.Parser.prototype.yyn236 = function ( attributes ) {
 
5025
     this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_RequireOnce", attributes); 
 
5026
};
 
5027
 
 
5028
PHP.Parser.prototype.yyn237 = function ( attributes ) {
 
5029
     this.yyval = this.Node_Expr_Cast_Int(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5030
};
 
5031
 
 
5032
PHP.Parser.prototype.yyn238 = function ( attributes ) {
 
5033
     this.yyval = this.Node_Expr_Cast_Double(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5034
};
 
5035
 
 
5036
PHP.Parser.prototype.yyn239 = function ( attributes ) {
 
5037
     this.yyval = this.Node_Expr_Cast_String(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5038
};
 
5039
 
 
5040
PHP.Parser.prototype.yyn240 = function ( attributes ) {
 
5041
     this.yyval = this.Node_Expr_Cast_Array(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5042
};
 
5043
 
 
5044
PHP.Parser.prototype.yyn241 = function ( attributes ) {
 
5045
     this.yyval = this.Node_Expr_Cast_Object(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5046
};
 
5047
 
 
5048
PHP.Parser.prototype.yyn242 = function ( attributes ) {
 
5049
     this.yyval = this.Node_Expr_Cast_Bool(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5050
};
 
5051
 
 
5052
PHP.Parser.prototype.yyn243 = function ( attributes ) {
 
5053
     this.yyval = this.Node_Expr_Cast_Unset(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5054
};
 
5055
 
 
5056
PHP.Parser.prototype.yyn244 = function ( attributes ) {
 
5057
     this.yyval = this.Node_Expr_Exit(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5058
};
 
5059
 
 
5060
PHP.Parser.prototype.yyn245 = function ( attributes ) {
 
5061
     this.yyval = this.Node_Expr_ErrorSuppress(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5062
};
 
5063
 
 
5064
PHP.Parser.prototype.yyn246 = function ( attributes ) {
 
5065
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5066
};
 
5067
 
 
5068
PHP.Parser.prototype.yyn247 = function ( attributes ) {
 
5069
     this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5070
};
 
5071
 
 
5072
PHP.Parser.prototype.yyn248 = function ( attributes ) {
 
5073
     this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5074
};
 
5075
 
 
5076
PHP.Parser.prototype.yyn249 = function ( attributes ) {
 
5077
     this.yyval = this.Node_Expr_ShellExec(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5078
};
 
5079
 
 
5080
PHP.Parser.prototype.yyn250 = function ( attributes ) {
 
5081
     this.yyval = this.Node_Expr_Print(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5082
};
 
5083
 
 
5084
PHP.Parser.prototype.yyn251 = function ( attributes ) {
 
5085
     this.yyval = this.Node_Expr_Closure({'static':  false, 'byRef':  this.yyastk[ this.stackPos-(9-2) ], 'params':  this.yyastk[ this.stackPos-(9-4) ], 'uses':  this.yyastk[ this.stackPos-(9-6) ], 'stmts':  this.yyastk[ this.stackPos-(9-8) ]}, attributes); 
 
5086
};
 
5087
 
 
5088
PHP.Parser.prototype.yyn252 = function ( attributes ) {
 
5089
     this.yyval = this.Node_Expr_Closure({'static':  true, 'byRef':  this.yyastk[ this.stackPos-(10-3) ], 'params':  this.yyastk[ this.stackPos-(10-5) ], 'uses':  this.yyastk[ this.stackPos-(10-7) ], 'stmts':  this.yyastk[ this.stackPos-(10-9) ]}, attributes); 
 
5090
};
 
5091
 
 
5092
PHP.Parser.prototype.yyn253 = function ( attributes ) {
 
5093
     this.yyval = this.Node_Expr_New(this.yyastk[ this.stackPos-(3-2) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5094
};
 
5095
 
 
5096
PHP.Parser.prototype.yyn254 = function ( attributes ) {
 
5097
     this.yyval = []; 
 
5098
};
 
5099
 
 
5100
PHP.Parser.prototype.yyn255 = function ( attributes ) {
 
5101
     this.yyval = this.yyastk[ this.stackPos-(4-3) ]; 
 
5102
};
 
5103
 
 
5104
PHP.Parser.prototype.yyn256 = function ( attributes ) {
 
5105
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
5106
};
 
5107
 
 
5108
PHP.Parser.prototype.yyn257 = function ( attributes ) {
 
5109
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
5110
};
 
5111
 
 
5112
PHP.Parser.prototype.yyn258 = function ( attributes ) {
 
5113
     this.yyval = this.Node_Expr_ClosureUse(this.yyastk[ this.stackPos-(2-2) ].substring( 1 ), this.yyastk[ this.stackPos-(2-1) ], attributes); 
 
5114
};
 
5115
 
 
5116
PHP.Parser.prototype.yyn259 = function ( attributes ) {
 
5117
     this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5118
};
 
5119
 
 
5120
PHP.Parser.prototype.yyn260 = function ( attributes ) {
 
5121
     this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-5) ], attributes); 
 
5122
};
 
5123
 
 
5124
PHP.Parser.prototype.yyn261 = function ( attributes ) {
 
5125
     this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(8-1) ], this.yyastk[ this.stackPos-(8-4) ], this.yyastk[ this.stackPos-(8-7) ], attributes); 
 
5126
};
 
5127
 
 
5128
PHP.Parser.prototype.yyn262 = function ( attributes ) {
 
5129
    
 
5130
            if (this.yyastk[ this.stackPos-(4-1) ].type === "Node_Expr_StaticPropertyFetch") {
 
5131
                this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(4-1) ].Class, this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-1) ].name, attributes), this.yyastk[ this.stackPos-(4-3) ], attributes);
 
5132
            } else if (this.yyastk[ this.stackPos-(4-1) ].type === "Node_Expr_ArrayDimFetch") {
 
5133
                var tmp = this.yyastk[ this.stackPos-(4-1) ];
 
5134
                while (tmp.variable.type === "Node_Expr_ArrayDimFetch") {
 
5135
                    tmp = tmp.variable;
 
5136
                }
 
5137
 
 
5138
                this.yyval = this.Node_Expr_StaticCall(tmp.variable.Class, this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes);
 
5139
                tmp.variable = this.Node_Expr_Variable(tmp.variable.name, attributes);
 
5140
            } else {
 
5141
                throw new Exception;
 
5142
            }
 
5143
          
 
5144
};
 
5145
 
 
5146
PHP.Parser.prototype.yyn263 = function ( attributes ) {
 
5147
     this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5148
};
 
5149
 
 
5150
PHP.Parser.prototype.yyn264 = function ( attributes ) {
 
5151
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5152
};
 
5153
 
 
5154
PHP.Parser.prototype.yyn265 = function ( attributes ) {
 
5155
     this.yyval = this.Node_Name('static', attributes); 
 
5156
};
 
5157
 
 
5158
PHP.Parser.prototype.yyn266 = function ( attributes ) {
 
5159
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5160
};
 
5161
 
 
5162
PHP.Parser.prototype.yyn267 = function ( attributes ) {
 
5163
     this.yyval = this.Node_Name(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
5164
};
 
5165
 
 
5166
PHP.Parser.prototype.yyn268 = function ( attributes ) {
 
5167
     this.yyval = this.Node_Name_FullyQualified(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5168
};
 
5169
 
 
5170
PHP.Parser.prototype.yyn269 = function ( attributes ) {
 
5171
     this.yyval = this.Node_Name_Relative(this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5172
};
 
5173
 
 
5174
PHP.Parser.prototype.yyn270 = function ( attributes ) {
 
5175
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5176
};
 
5177
 
 
5178
PHP.Parser.prototype.yyn271 = function ( attributes ) {
 
5179
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5180
};
 
5181
 
 
5182
PHP.Parser.prototype.yyn272 = function ( attributes ) {
 
5183
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5184
};
 
5185
 
 
5186
PHP.Parser.prototype.yyn273 = function ( attributes ) {
 
5187
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5188
};
 
5189
 
 
5190
PHP.Parser.prototype.yyn274 = function ( attributes ) {
 
5191
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5192
};
 
5193
 
 
5194
PHP.Parser.prototype.yyn275 = function ( attributes ) {
 
5195
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5196
};
 
5197
 
 
5198
PHP.Parser.prototype.yyn276 = function () {
 
5199
    this.yyval = this.yyastk[ this.stackPos ];
 
5200
};
 
5201
 
 
5202
PHP.Parser.prototype.yyn277 = function ( attributes ) {
 
5203
     this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5204
};
 
5205
 
 
5206
PHP.Parser.prototype.yyn278 = function ( attributes ) {
 
5207
     this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5208
};
 
5209
 
 
5210
PHP.Parser.prototype.yyn279 = function ( attributes ) {
 
5211
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5212
};
 
5213
 
 
5214
PHP.Parser.prototype.yyn280 = function ( attributes ) {
 
5215
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5216
};
 
5217
 
 
5218
PHP.Parser.prototype.yyn281 = function ( attributes ) {
 
5219
     this.yyval = null; 
 
5220
};
 
5221
 
 
5222
PHP.Parser.prototype.yyn282 = function ( attributes ) {
 
5223
     this.yyval = null; 
 
5224
};
 
5225
 
 
5226
PHP.Parser.prototype.yyn283 = function ( attributes ) {
 
5227
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
5228
};
 
5229
 
 
5230
PHP.Parser.prototype.yyn284 = function ( attributes ) {
 
5231
     this.yyval = []; 
 
5232
};
 
5233
 
 
5234
PHP.Parser.prototype.yyn285 = function ( attributes ) {
 
5235
     this.yyval = [this.Scalar_String_parseEscapeSequences(this.yyastk[ this.stackPos-(1-1) ], '`')]; 
 
5236
};
 
5237
 
 
5238
PHP.Parser.prototype.yyn286 = function ( attributes ) {
 
5239
     ; this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5240
};
 
5241
 
 
5242
PHP.Parser.prototype.yyn287 = function ( attributes ) {
 
5243
     this.yyval = []; 
 
5244
};
 
5245
 
 
5246
PHP.Parser.prototype.yyn288 = function ( attributes ) {
 
5247
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
5248
};
 
5249
 
 
5250
PHP.Parser.prototype.yyn289 = function ( attributes ) {
 
5251
     this.yyval = this.Node_Scalar_LNumber(this.Scalar_LNumber_parse(this.yyastk[ this.stackPos-(1-1) ]), attributes); 
 
5252
};
 
5253
 
 
5254
PHP.Parser.prototype.yyn290 = function ( attributes ) {
 
5255
     this.yyval = this.Node_Scalar_DNumber(this.Scalar_DNumber_parse(this.yyastk[ this.stackPos-(1-1) ]), attributes); 
 
5256
};
 
5257
 
 
5258
PHP.Parser.prototype.yyn291 = function ( attributes ) {
 
5259
     this.yyval = this.Scalar_String_create(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
5260
};
 
5261
 
 
5262
PHP.Parser.prototype.yyn292 = function ( attributes ) {
 
5263
     this.yyval = {type: "Node_Scalar_LineConst", attributes: attributes}; 
 
5264
};
 
5265
 
 
5266
PHP.Parser.prototype.yyn293 = function ( attributes ) {
 
5267
     this.yyval = {type: "Node_Scalar_FileConst", attributes: attributes}; 
 
5268
};
 
5269
 
 
5270
PHP.Parser.prototype.yyn294 = function ( attributes ) {
 
5271
     this.yyval = {type: "Node_Scalar_DirConst", attributes: attributes}; 
 
5272
};
 
5273
 
 
5274
PHP.Parser.prototype.yyn295 = function ( attributes ) {
 
5275
     this.yyval = {type: "Node_Scalar_ClassConst", attributes: attributes}; 
 
5276
};
 
5277
 
 
5278
PHP.Parser.prototype.yyn296 = function ( attributes ) {
 
5279
     this.yyval = {type: "Node_Scalar_TraitConst", attributes: attributes}; 
 
5280
};
 
5281
 
 
5282
PHP.Parser.prototype.yyn297 = function ( attributes ) {
 
5283
     this.yyval = {type: "Node_Scalar_MethodConst", attributes: attributes}; 
 
5284
};
 
5285
 
 
5286
PHP.Parser.prototype.yyn298 = function ( attributes ) {
 
5287
     this.yyval = {type: "Node_Scalar_FuncConst", attributes: attributes}; 
 
5288
};
 
5289
 
 
5290
PHP.Parser.prototype.yyn299 = function ( attributes ) {
 
5291
     this.yyval = {type: "Node_Scalar_NSConst", attributes: attributes}; 
 
5292
};
 
5293
 
 
5294
PHP.Parser.prototype.yyn300 = function ( attributes ) {
 
5295
     this.yyval = this.Node_Scalar_String(this.Scalar_String_parseDocString(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ]), attributes); 
 
5296
};
 
5297
 
 
5298
PHP.Parser.prototype.yyn301 = function ( attributes ) {
 
5299
     this.yyval = this.Node_Scalar_String('', attributes); 
 
5300
};
 
5301
 
 
5302
PHP.Parser.prototype.yyn302 = function ( attributes ) {
 
5303
     this.yyval = this.Node_Expr_ConstFetch(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
5304
};
 
5305
 
 
5306
PHP.Parser.prototype.yyn303 = function ( attributes ) {
 
5307
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5308
};
 
5309
 
 
5310
PHP.Parser.prototype.yyn304 = function ( attributes ) {
 
5311
     this.yyval = this.Node_Expr_ClassConstFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5312
};
 
5313
 
 
5314
PHP.Parser.prototype.yyn305 = function ( attributes ) {
 
5315
     this.yyval = this.Node_Expr_UnaryPlus(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5316
};
 
5317
 
 
5318
PHP.Parser.prototype.yyn306 = function ( attributes ) {
 
5319
     this.yyval = this.Node_Expr_UnaryMinus(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5320
};
 
5321
 
 
5322
PHP.Parser.prototype.yyn307 = function ( attributes ) {
 
5323
     this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5324
};
 
5325
 
 
5326
PHP.Parser.prototype.yyn308 = function ( attributes ) {
 
5327
     this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5328
};
 
5329
 
 
5330
PHP.Parser.prototype.yyn309 = function ( attributes ) {
 
5331
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5332
};
 
5333
 
 
5334
PHP.Parser.prototype.yyn310 = function ( attributes ) {
 
5335
     this.yyval = this.Node_Expr_ClassConstFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5336
};
 
5337
 
 
5338
PHP.Parser.prototype.yyn311 = function ( attributes ) {
 
5339
     ; this.yyval = this.Node_Scalar_Encapsed(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5340
};
 
5341
 
 
5342
PHP.Parser.prototype.yyn312 = function ( attributes ) {
 
5343
     ; this.yyval = this.Node_Scalar_Encapsed(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5344
};
 
5345
 
 
5346
PHP.Parser.prototype.yyn313 = function ( attributes ) {
 
5347
     this.yyval = []; 
 
5348
};
 
5349
 
 
5350
PHP.Parser.prototype.yyn314 = function ( attributes ) {
 
5351
     this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
5352
};
 
5353
 
 
5354
PHP.Parser.prototype.yyn315 = function () {
 
5355
    this.yyval = this.yyastk[ this.stackPos ];
 
5356
};
 
5357
 
 
5358
PHP.Parser.prototype.yyn316 = function () {
 
5359
    this.yyval = this.yyastk[ this.stackPos ];
 
5360
};
 
5361
 
 
5362
PHP.Parser.prototype.yyn317 = function ( attributes ) {
 
5363
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
5364
};
 
5365
 
 
5366
PHP.Parser.prototype.yyn318 = function ( attributes ) {
 
5367
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
5368
};
 
5369
 
 
5370
PHP.Parser.prototype.yyn319 = function ( attributes ) {
 
5371
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(3-3) ], this.yyastk[ this.stackPos-(3-1) ], false, attributes); 
 
5372
};
 
5373
 
 
5374
PHP.Parser.prototype.yyn320 = function ( attributes ) {
 
5375
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(1-1) ], null, false, attributes); 
 
5376
};
 
5377
 
 
5378
PHP.Parser.prototype.yyn321 = function ( attributes ) {
 
5379
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5380
};
 
5381
 
 
5382
PHP.Parser.prototype.yyn322 = function ( attributes ) {
 
5383
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5384
};
 
5385
 
 
5386
PHP.Parser.prototype.yyn323 = function ( attributes ) {
 
5387
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5388
};
 
5389
 
 
5390
PHP.Parser.prototype.yyn324 = function ( attributes ) {
 
5391
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5392
};
 
5393
 
 
5394
PHP.Parser.prototype.yyn325 = function ( attributes ) {
 
5395
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(6-2) ], this.yyastk[ this.stackPos-(6-5) ], attributes); 
 
5396
};
 
5397
 
 
5398
PHP.Parser.prototype.yyn326 = function ( attributes ) {
 
5399
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5400
};
 
5401
 
 
5402
PHP.Parser.prototype.yyn327 = function ( attributes ) {
 
5403
     this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5404
};
 
5405
 
 
5406
PHP.Parser.prototype.yyn328 = function ( attributes ) {
 
5407
     this.yyval = this.Node_Expr_MethodCall(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-5) ], attributes); 
 
5408
};
 
5409
 
 
5410
PHP.Parser.prototype.yyn329 = function ( attributes ) {
 
5411
     this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5412
};
 
5413
 
 
5414
PHP.Parser.prototype.yyn330 = function ( attributes ) {
 
5415
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5416
};
 
5417
 
 
5418
PHP.Parser.prototype.yyn331 = function ( attributes ) {
 
5419
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5420
};
 
5421
 
 
5422
PHP.Parser.prototype.yyn332 = function ( attributes ) {
 
5423
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5424
};
 
5425
 
 
5426
PHP.Parser.prototype.yyn333 = function ( attributes ) {
 
5427
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
5428
};
 
5429
 
 
5430
PHP.Parser.prototype.yyn334 = function ( attributes ) {
 
5431
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5432
};
 
5433
 
 
5434
PHP.Parser.prototype.yyn335 = function ( attributes ) {
 
5435
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(2-2) ], attributes); 
 
5436
};
 
5437
 
 
5438
PHP.Parser.prototype.yyn336 = function ( attributes ) {
 
5439
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5440
};
 
5441
 
 
5442
PHP.Parser.prototype.yyn337 = function ( attributes ) {
 
5443
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5444
};
 
5445
 
 
5446
PHP.Parser.prototype.yyn338 = function ( attributes ) {
 
5447
     this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); 
 
5448
};
 
5449
 
 
5450
PHP.Parser.prototype.yyn339 = function ( attributes ) {
 
5451
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5452
};
 
5453
 
 
5454
PHP.Parser.prototype.yyn340 = function ( attributes ) {
 
5455
     this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ].substring( 1 ), attributes); 
 
5456
};
 
5457
 
 
5458
PHP.Parser.prototype.yyn341 = function ( attributes ) {
 
5459
     this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-5) ], attributes); 
 
5460
};
 
5461
 
 
5462
PHP.Parser.prototype.yyn342 = function ( attributes ) {
 
5463
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5464
};
 
5465
 
 
5466
PHP.Parser.prototype.yyn343 = function ( attributes ) {
 
5467
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5468
};
 
5469
 
 
5470
PHP.Parser.prototype.yyn344 = function ( attributes ) {
 
5471
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5472
};
 
5473
 
 
5474
PHP.Parser.prototype.yyn345 = function ( attributes ) {
 
5475
     this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5476
};
 
5477
 
 
5478
PHP.Parser.prototype.yyn346 = function ( attributes ) {
 
5479
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); 
 
5480
};
 
5481
 
 
5482
PHP.Parser.prototype.yyn347 = function ( attributes ) {
 
5483
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5484
};
 
5485
 
 
5486
PHP.Parser.prototype.yyn348 = function ( attributes ) {
 
5487
     this.yyval = null; 
 
5488
};
 
5489
 
 
5490
PHP.Parser.prototype.yyn349 = function ( attributes ) {
 
5491
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5492
};
 
5493
 
 
5494
PHP.Parser.prototype.yyn350 = function ( attributes ) {
 
5495
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5496
};
 
5497
 
 
5498
PHP.Parser.prototype.yyn351 = function ( attributes ) {
 
5499
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
5500
};
 
5501
 
 
5502
PHP.Parser.prototype.yyn352 = function ( attributes ) {
 
5503
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5504
};
 
5505
 
 
5506
PHP.Parser.prototype.yyn353 = function ( attributes ) {
 
5507
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
5508
};
 
5509
 
 
5510
PHP.Parser.prototype.yyn354 = function ( attributes ) {
 
5511
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
5512
};
 
5513
 
 
5514
PHP.Parser.prototype.yyn355 = function ( attributes ) {
 
5515
     this.yyval = this.yyastk[ this.stackPos-(1-1) ]; 
 
5516
};
 
5517
 
 
5518
PHP.Parser.prototype.yyn356 = function ( attributes ) {
 
5519
     this.yyval = this.yyastk[ this.stackPos-(4-3) ]; 
 
5520
};
 
5521
 
 
5522
PHP.Parser.prototype.yyn357 = function ( attributes ) {
 
5523
     this.yyval = null; 
 
5524
};
 
5525
 
 
5526
PHP.Parser.prototype.yyn358 = function ( attributes ) {
 
5527
     this.yyval = []; 
 
5528
};
 
5529
 
 
5530
PHP.Parser.prototype.yyn359 = function ( attributes ) {
 
5531
     this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
5532
};
 
5533
 
 
5534
PHP.Parser.prototype.yyn360 = function ( attributes ) {
 
5535
     this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; 
 
5536
};
 
5537
 
 
5538
PHP.Parser.prototype.yyn361 = function ( attributes ) {
 
5539
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
5540
};
 
5541
 
 
5542
PHP.Parser.prototype.yyn362 = function ( attributes ) {
 
5543
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(3-3) ], this.yyastk[ this.stackPos-(3-1) ], false, attributes); 
 
5544
};
 
5545
 
 
5546
PHP.Parser.prototype.yyn363 = function ( attributes ) {
 
5547
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(1-1) ], null, false, attributes); 
 
5548
};
 
5549
 
 
5550
PHP.Parser.prototype.yyn364 = function ( attributes ) {
 
5551
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(4-4) ], this.yyastk[ this.stackPos-(4-1) ], true, attributes); 
 
5552
};
 
5553
 
 
5554
PHP.Parser.prototype.yyn365 = function ( attributes ) {
 
5555
     this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(2-2) ], null, true, attributes); 
 
5556
};
 
5557
 
 
5558
PHP.Parser.prototype.yyn366 = function ( attributes ) {
 
5559
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
5560
};
 
5561
 
 
5562
PHP.Parser.prototype.yyn367 = function ( attributes ) {
 
5563
     this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; 
 
5564
};
 
5565
 
 
5566
PHP.Parser.prototype.yyn368 = function ( attributes ) {
 
5567
     this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; 
 
5568
};
 
5569
 
 
5570
PHP.Parser.prototype.yyn369 = function ( attributes ) {
 
5571
     this.yyval = [this.yyastk[ this.stackPos-(2-1) ], this.yyastk[ this.stackPos-(2-2) ]]; 
 
5572
};
 
5573
 
 
5574
PHP.Parser.prototype.yyn370 = function ( attributes ) {
 
5575
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); 
 
5576
};
 
5577
 
 
5578
PHP.Parser.prototype.yyn371 = function ( attributes ) {
 
5579
     this.yyval = this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-1) ].substring( 1 ), attributes), this.yyastk[ this.stackPos-(4-3) ], attributes); 
 
5580
};
 
5581
 
 
5582
PHP.Parser.prototype.yyn372 = function ( attributes ) {
 
5583
     this.yyval = this.Node_Expr_PropertyFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), attributes), this.yyastk[ this.stackPos-(3-3) ], attributes); 
 
5584
};
 
5585
 
 
5586
PHP.Parser.prototype.yyn373 = function ( attributes ) {
 
5587
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5588
};
 
5589
 
 
5590
PHP.Parser.prototype.yyn374 = function ( attributes ) {
 
5591
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-2) ], attributes); 
 
5592
};
 
5593
 
 
5594
PHP.Parser.prototype.yyn375 = function ( attributes ) {
 
5595
     this.yyval = this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(6-2) ], attributes), this.yyastk[ this.stackPos-(6-4) ], attributes); 
 
5596
};
 
5597
 
 
5598
PHP.Parser.prototype.yyn376 = function ( attributes ) {
 
5599
     this.yyval = this.yyastk[ this.stackPos-(3-2) ]; 
 
5600
};
 
5601
 
 
5602
PHP.Parser.prototype.yyn377 = function ( attributes ) {
 
5603
     this.yyval = this.Node_Scalar_String(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
5604
};
 
5605
 
 
5606
PHP.Parser.prototype.yyn378 = function ( attributes ) {
 
5607
     this.yyval = this.Node_Scalar_String(this.yyastk[ this.stackPos-(1-1) ], attributes); 
 
5608
};
 
5609
 
 
5610
PHP.Parser.prototype.yyn379 = function ( attributes ) {
 
5611
     this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); 
 
5612
};
 
5613
 
 
5614
 
 
5615
PHP.Parser.prototype.Stmt_Namespace_postprocess = function( a ) {
 
5616
  return a;  
 
5617
};
 
5618
 
 
5619
 
 
5620
PHP.Parser.prototype.Node_Stmt_Echo = function() {
 
5621
    return {
 
5622
        type: "Node_Stmt_Echo",
 
5623
        exprs: arguments[ 0 ],
 
5624
        attributes: arguments[ 1 ]
 
5625
    };  
 
5626
 
 
5627
};
 
5628
 
 
5629
 
 
5630
PHP.Parser.prototype.Node_Stmt_If = function() {
 
5631
    return {
 
5632
        type: "Node_Stmt_If",
 
5633
        cond: arguments[ 0 ],
 
5634
        stmts: arguments[ 1 ].stmts,
 
5635
        elseifs: arguments[ 1 ].elseifs,
 
5636
        Else: arguments[ 1 ].Else || null,
 
5637
        attributes: arguments[ 2 ]
 
5638
    };  
 
5639
 
 
5640
};
 
5641
 
 
5642
 
 
5643
PHP.Parser.prototype.Node_Stmt_For = function() {
 
5644
    
 
5645
    return {
 
5646
        type: "Node_Stmt_For",
 
5647
        init: arguments[ 0 ].init,
 
5648
        cond: arguments[ 0 ].cond,
 
5649
        loop: arguments[ 0 ].loop,
 
5650
        stmts: arguments[ 0 ].stmts,
 
5651
        attributes: arguments[ 1 ]
 
5652
    };   
 
5653
 
 
5654
};
 
5655
 
 
5656
PHP.Parser.prototype.Node_Stmt_Function = function() {
 
5657
    return {
 
5658
        type: "Node_Stmt_Function",
 
5659
        name: arguments[ 0 ],
 
5660
        byRef: arguments[ 1 ].byRef,
 
5661
        params: arguments[ 1 ].params,
 
5662
        stmts: arguments[ 1 ].stmts,
 
5663
        attributes: arguments[ 2 ]
 
5664
    };  
 
5665
 
 
5666
};
 
5667
 
 
5668
PHP.Parser.prototype.Stmt_Class_verifyModifier = function() {
 
5669
  
 
5670
 
 
5671
};
 
5672
 
 
5673
PHP.Parser.prototype.Node_Stmt_Class = function() {
 
5674
    return {
 
5675
        type: "Node_Stmt_Class",
 
5676
        name: arguments[ 0 ],
 
5677
        Type: arguments[ 1 ].type,
 
5678
        Extends: arguments[ 1 ].Extends,
 
5679
        Implements: arguments[ 1 ].Implements,
 
5680
        stmts: arguments[ 1 ].stmts,
 
5681
        attributes: arguments[ 2 ]
 
5682
    };  
 
5683
 
 
5684
};
 
5685
 
 
5686
PHP.Parser.prototype.Node_Stmt_ClassMethod = function() {
 
5687
    return {
 
5688
        type: "Node_Stmt_ClassMethod",
 
5689
        name: arguments[ 0 ],
 
5690
        Type: arguments[ 1 ].type,
 
5691
        byRef: arguments[ 1 ].byRef,
 
5692
        params: arguments[ 1 ].params,
 
5693
        stmts: arguments[ 1 ].stmts,
 
5694
        attributes: arguments[ 2 ]
 
5695
    };  
 
5696
 
 
5697
};
 
5698
 
 
5699
 
 
5700
PHP.Parser.prototype.Node_Stmt_ClassConst = function() {
 
5701
    return {
 
5702
        type: "Node_Stmt_ClassConst",
 
5703
        consts: arguments[ 0 ],
 
5704
        attributes: arguments[ 1 ]
 
5705
    };  
 
5706
 
 
5707
};
 
5708
 
 
5709
PHP.Parser.prototype.Node_Stmt_Interface = function() {
 
5710
    return {
 
5711
        type: "Node_Stmt_Interface",
 
5712
        name: arguments[ 0 ],
 
5713
        Extends: arguments[ 1 ].Extends,
 
5714
        stmts: arguments[ 1 ].stmts,
 
5715
        attributes: arguments[ 2 ]
 
5716
    };  
 
5717
 
 
5718
};
 
5719
 
 
5720
PHP.Parser.prototype.Node_Stmt_Throw = function() {
 
5721
    return {
 
5722
        type: "Node_Stmt_Throw",
 
5723
        expr: arguments[ 0 ],
 
5724
        attributes: arguments[ 1 ]
 
5725
    };  
 
5726
 
 
5727
};
 
5728
 
 
5729
PHP.Parser.prototype.Node_Stmt_Catch = function() {
 
5730
    return {
 
5731
        type: "Node_Stmt_Catch",
 
5732
        Type: arguments[ 0 ],
 
5733
        variable: arguments[ 1 ],
 
5734
        stmts: arguments[ 2 ],
 
5735
        attributes: arguments[ 3 ]
 
5736
    };  
 
5737
 
 
5738
};
 
5739
 
 
5740
 
 
5741
PHP.Parser.prototype.Node_Stmt_TryCatch = function() {
 
5742
    return {
 
5743
        type: "Node_Stmt_TryCatch",
 
5744
        stmts: arguments[ 0 ],
 
5745
        catches: arguments[ 1 ],
 
5746
        attributes: arguments[ 2 ]
 
5747
    };  
 
5748
 
 
5749
};
 
5750
 
 
5751
 
 
5752
PHP.Parser.prototype.Node_Stmt_Foreach = function() {
 
5753
    return {
 
5754
        type: "Node_Stmt_Foreach",
 
5755
        expr: arguments[ 0 ],
 
5756
        valueVar: arguments[ 1 ],
 
5757
        keyVar: arguments[ 2 ].keyVar,
 
5758
        byRef: arguments[ 2 ].byRef,
 
5759
        stmts: arguments[ 2 ].stmts,
 
5760
        attributes: arguments[ 3 ]
 
5761
    };  
 
5762
 
 
5763
};
 
5764
 
 
5765
PHP.Parser.prototype.Node_Stmt_While = function() {
 
5766
    return {
 
5767
        type: "Node_Stmt_While",
 
5768
        cond: arguments[ 0 ],
 
5769
        stmts: arguments[ 1 ],
 
5770
        attributes: arguments[ 2 ]
 
5771
    };  
 
5772
 
 
5773
};
 
5774
 
 
5775
PHP.Parser.prototype.Node_Stmt_Do = function() {
 
5776
    return {
 
5777
        type: "Node_Stmt_Do",
 
5778
        cond: arguments[ 0 ],
 
5779
        stmts: arguments[ 1 ],
 
5780
        attributes: arguments[ 2 ]
 
5781
    };  
 
5782
 
 
5783
};
 
5784
 
 
5785
PHP.Parser.prototype.Node_Stmt_Break = function() {
 
5786
    return {
 
5787
        type: "Node_Stmt_Break",
 
5788
        num: arguments[ 0 ],
 
5789
        attributes: arguments[ 1 ]
 
5790
    };  
 
5791
 
 
5792
};
 
5793
 
 
5794
PHP.Parser.prototype.Node_Stmt_Continue = function() {
 
5795
    return {
 
5796
        type: "Node_Stmt_Continue",
 
5797
        num: arguments[ 0 ],
 
5798
        attributes: arguments[ 1 ]
 
5799
    };  
 
5800
 
 
5801
};
 
5802
 
 
5803
PHP.Parser.prototype.Node_Stmt_Return = function() {
 
5804
    return {
 
5805
        type: "Node_Stmt_Return",
 
5806
        expr: arguments[ 0 ],
 
5807
        attributes: arguments[ 1 ]
 
5808
    };  
 
5809
 
 
5810
};
 
5811
 
 
5812
PHP.Parser.prototype.Node_Stmt_Case = function() {
 
5813
    return {
 
5814
        type: "Node_Stmt_Case",
 
5815
        cond: arguments[ 0 ],
 
5816
        stmts: arguments[ 1 ],
 
5817
        attributes: arguments[ 2 ]
 
5818
    };  
 
5819
 
 
5820
};
 
5821
 
 
5822
PHP.Parser.prototype.Node_Stmt_Switch = function() {
 
5823
    return {
 
5824
        type: "Node_Stmt_Switch",
 
5825
        cond: arguments[ 0 ],
 
5826
        cases: arguments[ 1 ],
 
5827
        attributes: arguments[ 2 ]
 
5828
    };  
 
5829
 
 
5830
};
 
5831
 
 
5832
PHP.Parser.prototype.Node_Stmt_Else = function() {
 
5833
   
 
5834
    return {
 
5835
        type: "Node_Stmt_Else",
 
5836
        stmts: arguments[ 0 ],
 
5837
        attributes: arguments[ 1 ]
 
5838
    };  
 
5839
 
 
5840
};
 
5841
 
 
5842
PHP.Parser.prototype.Node_Stmt_ElseIf = function() {
 
5843
    return {
 
5844
        type: "Node_Stmt_ElseIf",
 
5845
        cond: arguments[ 0 ],
 
5846
        stmts: arguments[ 1 ],
 
5847
        attributes: arguments[ 1 ]
 
5848
    };  
 
5849
 
 
5850
};
 
5851
 
 
5852
PHP.Parser.prototype.Node_Stmt_InlineHTML = function() {
 
5853
    return {
 
5854
        type: "Node_Stmt_InlineHTML",
 
5855
        value: arguments[ 0 ],
 
5856
        attributes: arguments[ 1 ]
 
5857
    };  
 
5858
 
 
5859
};
 
5860
 
 
5861
 
 
5862
PHP.Parser.prototype.Node_Stmt_StaticVar = function() {
 
5863
    return {
 
5864
        type: "Node_Stmt_StaticVar",
 
5865
        name: arguments[ 0 ],
 
5866
        def: arguments[ 1 ],
 
5867
        attributes: arguments[ 2 ]
 
5868
    };  
 
5869
 
 
5870
};
 
5871
 
 
5872
 
 
5873
PHP.Parser.prototype.Node_Stmt_Static = function() {
 
5874
    return {
 
5875
        type: "Node_Stmt_Static",
 
5876
        vars: arguments[ 0 ],
 
5877
        attributes: arguments[ 1 ]
 
5878
    };  
 
5879
 
 
5880
};
 
5881
 
 
5882
PHP.Parser.prototype.Node_Stmt_Global = function() {
 
5883
    return {
 
5884
        type: "Node_Stmt_Global",
 
5885
        vars: arguments[ 0 ],
 
5886
        attributes: arguments[ 1 ]
 
5887
    };  
 
5888
 
 
5889
};
 
5890
 
 
5891
 
 
5892
PHP.Parser.prototype.Node_Stmt_PropertyProperty = function() {
 
5893
    return {
 
5894
        type: "Node_Stmt_PropertyProperty",
 
5895
        name: arguments[ 0 ],
 
5896
        def: arguments[ 1 ],
 
5897
        attributes: arguments[ 2 ]
 
5898
    };  
 
5899
 
 
5900
};
 
5901
 
 
5902
 
 
5903
PHP.Parser.prototype.Node_Stmt_Property = function() {
 
5904
    return {
 
5905
        type: "Node_Stmt_Property",
 
5906
        Type: arguments[ 0 ],
 
5907
        props: arguments[ 1 ],
 
5908
        attributes: arguments[ 2 ]
 
5909
    };  
 
5910
 
 
5911
};
 
5912
 
 
5913
PHP.Parser.prototype.Node_Stmt_Unset = function() {
 
5914
    return {
 
5915
        type: "Node_Stmt_Unset",
 
5916
        variables: arguments[ 0 ],
 
5917
        attributes: arguments[ 1 ]
 
5918
    };  
 
5919
 
 
5920
};
 
5921
 
 
5922
 
 
5923
PHP.Parser.prototype.Node_Expr_Variable = function( a ) {
 
5924
    return {
 
5925
        type: "Node_Expr_Variable",
 
5926
        name: arguments[ 0 ],
 
5927
        attributes: arguments[ 1 ]
 
5928
    };
 
5929
};
 
5930
 
 
5931
PHP.Parser.prototype.Node_Expr_FuncCall = function() {
 
5932
 
 
5933
    return {
 
5934
        type: "Node_Expr_FuncCall",
 
5935
        func: arguments[ 0 ],
 
5936
        args: arguments[ 1 ],
 
5937
        attributes: arguments[ 2 ]
 
5938
    };
 
5939
 
 
5940
};
 
5941
 
 
5942
PHP.Parser.prototype.Node_Expr_MethodCall = function() {
 
5943
 
 
5944
    return {
 
5945
        type: "Node_Expr_MethodCall",
 
5946
        variable: arguments[ 0 ],
 
5947
        name: arguments[ 1 ],
 
5948
        args: arguments[ 2 ],
 
5949
        attributes: arguments[ 3 ]
 
5950
    };
 
5951
 
 
5952
};
 
5953
 
 
5954
PHP.Parser.prototype.Node_Expr_StaticCall = function() {
 
5955
 
 
5956
    return {
 
5957
        type: "Node_Expr_StaticCall",
 
5958
        Class: arguments[ 0 ],
 
5959
        func: arguments[ 1 ],
 
5960
        args: arguments[ 2 ],
 
5961
        attributes: arguments[ 3 ]
 
5962
    };
 
5963
 
 
5964
};
 
5965
 
 
5966
 
 
5967
PHP.Parser.prototype.Node_Expr_Ternary = function() {
 
5968
 
 
5969
    return {
 
5970
        type: "Node_Expr_Ternary",
 
5971
        cond: arguments[ 0 ],
 
5972
        If: arguments[ 1 ],
 
5973
        Else: arguments[ 2 ],
 
5974
        attributes: arguments[ 3 ]
 
5975
    };
 
5976
 
 
5977
};
 
5978
 
 
5979
PHP.Parser.prototype.Node_Expr_AssignList = function() {
 
5980
 
 
5981
    return {
 
5982
        type: "Node_Expr_AssignList",
 
5983
        assignList: arguments[ 0 ],
 
5984
        expr: arguments[ 1 ],
 
5985
        attributes: arguments[ 2 ]
 
5986
    };
 
5987
 
 
5988
};
 
5989
 
 
5990
 
 
5991
PHP.Parser.prototype.Node_Expr_Assign = function() {
 
5992
 
 
5993
    return {
 
5994
        type: "Node_Expr_Assign",
 
5995
        variable: arguments[ 0 ],
 
5996
        expr: arguments[ 1 ],
 
5997
        attributes: arguments[ 2 ]
 
5998
    };
 
5999
 
 
6000
};
 
6001
 
 
6002
PHP.Parser.prototype.Node_Expr_AssignConcat = function() {
 
6003
 
 
6004
    return {
 
6005
        type: "Node_Expr_AssignConcat",
 
6006
        variable: arguments[ 0 ],
 
6007
        expr: arguments[ 1 ],
 
6008
        attributes: arguments[ 2 ]
 
6009
    };
 
6010
 
 
6011
};
 
6012
 
 
6013
PHP.Parser.prototype.Node_Expr_AssignMinus = function() {
 
6014
 
 
6015
    return {
 
6016
        type: "Node_Expr_AssignMinus",
 
6017
        variable: arguments[ 0 ],
 
6018
        expr: arguments[ 1 ],
 
6019
        attributes: arguments[ 2 ]
 
6020
    };
 
6021
 
 
6022
};
 
6023
 
 
6024
PHP.Parser.prototype.Node_Expr_AssignPlus = function() {
 
6025
 
 
6026
    return {
 
6027
        type: "Node_Expr_AssignPlus",
 
6028
        variable: arguments[ 0 ],
 
6029
        expr: arguments[ 1 ],
 
6030
        attributes: arguments[ 2 ]
 
6031
    };
 
6032
 
 
6033
};
 
6034
 
 
6035
PHP.Parser.prototype.Node_Expr_AssignDiv = function() {
 
6036
 
 
6037
    return {
 
6038
        type: "Node_Expr_AssignDiv",
 
6039
        variable: arguments[ 0 ],
 
6040
        expr: arguments[ 1 ],
 
6041
        attributes: arguments[ 2 ]
 
6042
    };
 
6043
 
 
6044
};
 
6045
 
 
6046
PHP.Parser.prototype.Node_Expr_AssignRef = function() {
 
6047
 
 
6048
    return {
 
6049
        type: "Node_Expr_AssignRef",
 
6050
        variable: arguments[ 0 ],
 
6051
        refVar: arguments[ 1 ],
 
6052
        attributes: arguments[ 2 ]
 
6053
    };
 
6054
 
 
6055
};
 
6056
 
 
6057
PHP.Parser.prototype.Node_Expr_AssignMul = function() {
 
6058
 
 
6059
    return {
 
6060
        type: "Node_Expr_AssignMul",
 
6061
        variable: arguments[ 0 ],
 
6062
        expr: arguments[ 1 ],
 
6063
        attributes: arguments[ 2 ]
 
6064
    };
 
6065
 
 
6066
};
 
6067
 
 
6068
PHP.Parser.prototype.Node_Expr_AssignMod = function() {
 
6069
 
 
6070
    return {
 
6071
        type: "Node_Expr_AssignMod",
 
6072
        variable: arguments[ 0 ],
 
6073
        expr: arguments[ 1 ],
 
6074
        attributes: arguments[ 2 ]
 
6075
    };
 
6076
 
 
6077
};
 
6078
 
 
6079
PHP.Parser.prototype.Node_Expr_Plus = function() {
 
6080
 
 
6081
    return {
 
6082
        type: "Node_Expr_Plus",
 
6083
        left: arguments[ 0 ],
 
6084
        right: arguments[ 1 ],
 
6085
        attributes: arguments[ 2 ]
 
6086
    };
 
6087
 
 
6088
};
 
6089
 
 
6090
PHP.Parser.prototype.Node_Expr_Minus = function() {
 
6091
 
 
6092
    return {
 
6093
        type: "Node_Expr_Minus",
 
6094
        left: arguments[ 0 ],
 
6095
        right: arguments[ 1 ],
 
6096
        attributes: arguments[ 2 ]
 
6097
    };
 
6098
 
 
6099
};
 
6100
 
 
6101
 
 
6102
PHP.Parser.prototype.Node_Expr_Mul = function() {
 
6103
 
 
6104
    return {
 
6105
        type: "Node_Expr_Mul",
 
6106
        left: arguments[ 0 ],
 
6107
        right: arguments[ 1 ],
 
6108
        attributes: arguments[ 2 ]
 
6109
    };
 
6110
 
 
6111
};
 
6112
 
 
6113
 
 
6114
PHP.Parser.prototype.Node_Expr_Div = function() {
 
6115
 
 
6116
    return {
 
6117
        type: "Node_Expr_Div",
 
6118
        left: arguments[ 0 ],
 
6119
        right: arguments[ 1 ],
 
6120
        attributes: arguments[ 2 ]
 
6121
    };
 
6122
 
 
6123
};
 
6124
 
 
6125
 
 
6126
PHP.Parser.prototype.Node_Expr_Mod = function() {
 
6127
 
 
6128
    return {
 
6129
        type: "Node_Expr_Mod",
 
6130
        left: arguments[ 0 ],
 
6131
        right: arguments[ 1 ],
 
6132
        attributes: arguments[ 2 ]
 
6133
    };
 
6134
 
 
6135
};
 
6136
 
 
6137
PHP.Parser.prototype.Node_Expr_Greater = function() {
 
6138
 
 
6139
    return {
 
6140
        type: "Node_Expr_Greater",
 
6141
        left: arguments[ 0 ],
 
6142
        right: arguments[ 1 ],
 
6143
        attributes: arguments[ 2 ]
 
6144
    };
 
6145
 
 
6146
};
 
6147
 
 
6148
PHP.Parser.prototype.Node_Expr_Equal = function() {
 
6149
 
 
6150
    return {
 
6151
        type: "Node_Expr_Equal",
 
6152
        left: arguments[ 0 ],
 
6153
        right: arguments[ 1 ],
 
6154
        attributes: arguments[ 2 ]
 
6155
    };
 
6156
 
 
6157
};
 
6158
 
 
6159
PHP.Parser.prototype.Node_Expr_NotEqual = function() {
 
6160
 
 
6161
    return {
 
6162
        type: "Node_Expr_NotEqual",
 
6163
        left: arguments[ 0 ],
 
6164
        right: arguments[ 1 ],
 
6165
        attributes: arguments[ 2 ]
 
6166
    };
 
6167
 
 
6168
};
 
6169
 
 
6170
 
 
6171
PHP.Parser.prototype.Node_Expr_Identical = function() {
 
6172
 
 
6173
    return {
 
6174
        type: "Node_Expr_Identical",
 
6175
        left: arguments[ 0 ],
 
6176
        right: arguments[ 1 ],
 
6177
        attributes: arguments[ 2 ]
 
6178
    };
 
6179
 
 
6180
};
 
6181
 
 
6182
 
 
6183
PHP.Parser.prototype.Node_Expr_NotIdentical = function() {
 
6184
 
 
6185
    return {
 
6186
        type: "Node_Expr_NotIdentical",
 
6187
        left: arguments[ 0 ],
 
6188
        right: arguments[ 1 ],
 
6189
        attributes: arguments[ 2 ]
 
6190
    };
 
6191
 
 
6192
};
 
6193
 
 
6194
PHP.Parser.prototype.Node_Expr_GreaterOrEqual = function() {
 
6195
 
 
6196
    return {
 
6197
        type: "Node_Expr_GreaterOrEqual",
 
6198
        left: arguments[ 0 ],
 
6199
        right: arguments[ 1 ],
 
6200
        attributes: arguments[ 2 ]
 
6201
    };
 
6202
 
 
6203
};
 
6204
 
 
6205
PHP.Parser.prototype.Node_Expr_SmallerOrEqual = function() {
 
6206
 
 
6207
    return {
 
6208
        type: "Node_Expr_SmallerOrEqual",
 
6209
        left: arguments[ 0 ],
 
6210
        right: arguments[ 1 ],
 
6211
        attributes: arguments[ 2 ]
 
6212
    };
 
6213
 
 
6214
};
 
6215
 
 
6216
PHP.Parser.prototype.Node_Expr_Concat = function() {
 
6217
 
 
6218
    return {
 
6219
        type: "Node_Expr_Concat",
 
6220
        left: arguments[ 0 ],
 
6221
        right: arguments[ 1 ],
 
6222
        attributes: arguments[ 2 ]
 
6223
    };
 
6224
 
 
6225
};
 
6226
 
 
6227
PHP.Parser.prototype.Node_Expr_Smaller = function() {
 
6228
 
 
6229
    return {
 
6230
        type: "Node_Expr_Smaller",
 
6231
        left: arguments[ 0 ],
 
6232
        right: arguments[ 1 ],
 
6233
        attributes: arguments[ 2 ]
 
6234
    };
 
6235
 
 
6236
};
 
6237
 
 
6238
PHP.Parser.prototype.Node_Expr_PostInc = function() {
 
6239
 
 
6240
    return {
 
6241
        type: "Node_Expr_PostInc",
 
6242
        variable: arguments[ 0 ],
 
6243
        attributes: arguments[ 1 ]
 
6244
    };
 
6245
 
 
6246
};
 
6247
 
 
6248
PHP.Parser.prototype.Node_Expr_PostDec = function() {
 
6249
 
 
6250
    return {
 
6251
        type: "Node_Expr_PostDec",
 
6252
        variable: arguments[ 0 ],
 
6253
        attributes: arguments[ 1 ]
 
6254
    };
 
6255
 
 
6256
};
 
6257
 
 
6258
PHP.Parser.prototype.Node_Expr_PreInc = function() {
 
6259
 
 
6260
    return {
 
6261
        type: "Node_Expr_PreInc",
 
6262
        variable: arguments[ 0 ],
 
6263
        attributes: arguments[ 1 ]
 
6264
    };
 
6265
 
 
6266
};
 
6267
 
 
6268
PHP.Parser.prototype.Node_Expr_PreDec = function() {
 
6269
 
 
6270
    return {
 
6271
        type: "Node_Expr_PreDec",
 
6272
        variable: arguments[ 0 ],
 
6273
        attributes: arguments[ 1 ]
 
6274
    };
 
6275
 
 
6276
};
 
6277
 
 
6278
PHP.Parser.prototype.Node_Expr_Include = function() {
 
6279
    return {
 
6280
        expr: arguments[ 0 ],
 
6281
        type: arguments[ 1 ],
 
6282
        attributes: arguments[ 2 ]
 
6283
    };
 
6284
};
 
6285
 
 
6286
PHP.Parser.prototype.Node_Expr_ArrayDimFetch = function() {
 
6287
 
 
6288
    return {
 
6289
        type: "Node_Expr_ArrayDimFetch",
 
6290
        variable: arguments[ 0 ],
 
6291
        dim: arguments[ 1 ],
 
6292
        attributes: arguments[ 2 ]
 
6293
    };
 
6294
 
 
6295
};
 
6296
 
 
6297
PHP.Parser.prototype.Node_Expr_StaticPropertyFetch = function() {
 
6298
 
 
6299
    return {
 
6300
        type: "Node_Expr_StaticPropertyFetch",
 
6301
        Class: arguments[ 0 ],
 
6302
        name: arguments[ 1 ],
 
6303
        attributes: arguments[ 2 ]
 
6304
    };
 
6305
 
 
6306
};
 
6307
 
 
6308
PHP.Parser.prototype.Node_Expr_ClassConstFetch = function() {
 
6309
 
 
6310
    return {
 
6311
        type: "Node_Expr_ClassConstFetch",
 
6312
        Class: arguments[ 0 ],
 
6313
        name: arguments[ 1 ],
 
6314
        attributes: arguments[ 2 ]
 
6315
    };
 
6316
 
 
6317
};
 
6318
 
 
6319
 
 
6320
PHP.Parser.prototype.Node_Expr_StaticPropertyFetch = function() {
 
6321
 
 
6322
    return {
 
6323
        type: "Node_Expr_StaticPropertyFetch",
 
6324
        Class: arguments[ 0 ],
 
6325
        name: arguments[ 1 ],
 
6326
        attributes: arguments[ 2 ]
 
6327
    };
 
6328
 
 
6329
};
 
6330
 
 
6331
PHP.Parser.prototype.Node_Expr_ConstFetch = function() {
 
6332
 
 
6333
    return {
 
6334
        type: "Node_Expr_ConstFetch",
 
6335
        name: arguments[ 0 ],
 
6336
        attributes: arguments[ 1 ]
 
6337
    };
 
6338
 
 
6339
};
 
6340
 
 
6341
PHP.Parser.prototype.Node_Expr_ArrayItem = function() {
 
6342
 
 
6343
    return {
 
6344
        type: "Node_Expr_ArrayItem",
 
6345
        value: arguments[ 0 ],
 
6346
        key: arguments[ 1 ],
 
6347
        byRef: arguments[ 2 ],
 
6348
        attributes: arguments[ 3 ]
 
6349
    };
 
6350
 
 
6351
};
 
6352
 
 
6353
PHP.Parser.prototype.Node_Expr_Array = function() {
 
6354
 
 
6355
    return {
 
6356
        type: "Node_Expr_Array",
 
6357
        items: arguments[ 0 ],
 
6358
        attributes: arguments[ 1 ]
 
6359
    };
 
6360
 
 
6361
};
 
6362
 
 
6363
PHP.Parser.prototype.Node_Expr_PropertyFetch = function() {
 
6364
 
 
6365
    return {
 
6366
        type: "Node_Expr_PropertyFetch",
 
6367
        variable: arguments[ 0 ],
 
6368
        name: arguments[ 1 ],
 
6369
        attributes: arguments[ 2 ]
 
6370
    };
 
6371
 
 
6372
};
 
6373
 
 
6374
PHP.Parser.prototype.Node_Expr_New = function() {
 
6375
 
 
6376
    return {
 
6377
        type: "Node_Expr_New",
 
6378
        Class: arguments[ 0 ],
 
6379
        args: arguments[ 1 ],
 
6380
        attributes: arguments[ 2 ]
 
6381
    };
 
6382
 
 
6383
};
 
6384
 
 
6385
 
 
6386
PHP.Parser.prototype.Node_Expr_Print = function() {
 
6387
    return {
 
6388
        type: "Node_Expr_Print",
 
6389
        expr: arguments[ 0 ],
 
6390
        attributes: arguments[ 1 ]
 
6391
    };
 
6392
 
 
6393
};
 
6394
 
 
6395
 
 
6396
PHP.Parser.prototype.Node_Expr_Exit = function() {
 
6397
    return {
 
6398
        type: "Node_Expr_Exit",
 
6399
        expr: arguments[ 0 ],
 
6400
        attributes: arguments[ 1 ]
 
6401
    };
 
6402
 
 
6403
};
 
6404
 
 
6405
 
 
6406
PHP.Parser.prototype.Node_Expr_Cast_Bool = function() {
 
6407
    return {
 
6408
        type: "Node_Expr_Cast_Bool",
 
6409
        expr: arguments[ 0 ],
 
6410
        attributes: arguments[ 1 ]
 
6411
    };
 
6412
 
 
6413
};
 
6414
 
 
6415
PHP.Parser.prototype.Node_Expr_Cast_Int = function() {
 
6416
    return {
 
6417
        type: "Node_Expr_Cast_Int",
 
6418
        expr: arguments[ 0 ],
 
6419
        attributes: arguments[ 1 ]
 
6420
    };
 
6421
 
 
6422
};
 
6423
 
 
6424
PHP.Parser.prototype.Node_Expr_Cast_String = function() {
 
6425
    return {
 
6426
        type: "Node_Expr_Cast_String",
 
6427
        expr: arguments[ 0 ],
 
6428
        attributes: arguments[ 1 ]
 
6429
    };
 
6430
 
 
6431
};
 
6432
 
 
6433
PHP.Parser.prototype.Node_Expr_Cast_Double = function() {
 
6434
    return {
 
6435
        type: "Node_Expr_Cast_Double",
 
6436
        expr: arguments[ 0 ],
 
6437
        attributes: arguments[ 1 ]
 
6438
    };
 
6439
 
 
6440
};
 
6441
 
 
6442
PHP.Parser.prototype.Node_Expr_Cast_Array = function() {
 
6443
    return {
 
6444
        type: "Node_Expr_Cast_Array",
 
6445
        expr: arguments[ 0 ],
 
6446
        attributes: arguments[ 1 ]
 
6447
    };
 
6448
 
 
6449
};
 
6450
 
 
6451
PHP.Parser.prototype.Node_Expr_Cast_Object = function() {
 
6452
    return {
 
6453
        type: "Node_Expr_Cast_Object",
 
6454
        expr: arguments[ 0 ],
 
6455
        attributes: arguments[ 1 ]
 
6456
    };
 
6457
 
 
6458
};
 
6459
 
 
6460
 
 
6461
PHP.Parser.prototype.Node_Expr_ErrorSuppress = function() {
 
6462
    return {
 
6463
        type: "Node_Expr_ErrorSuppress",
 
6464
        expr: arguments[ 0 ],
 
6465
        attributes: arguments[ 1 ]
 
6466
    };
 
6467
 
 
6468
};
 
6469
 
 
6470
 
 
6471
PHP.Parser.prototype.Node_Expr_Isset = function() {
 
6472
    return {
 
6473
        type: "Node_Expr_Isset",
 
6474
        variables: arguments[ 0 ],
 
6475
        attributes: arguments[ 1 ]
 
6476
    };
 
6477
 
 
6478
};
 
6479
 
 
6480
 
 
6481
 
 
6482
 
 
6483
PHP.Parser.prototype.Node_Expr_UnaryMinus = function() {
 
6484
    return {
 
6485
        type: "Node_Expr_UnaryMinus",
 
6486
        expr: arguments[ 0 ],
 
6487
        attributes: arguments[ 1 ]
 
6488
    };
 
6489
 
 
6490
};
 
6491
 
 
6492
 
 
6493
PHP.Parser.prototype.Node_Expr_UnaryPlus = function() {
 
6494
    return {
 
6495
        type: "Node_Expr_UnaryPlus",
 
6496
        expr: arguments[ 0 ],
 
6497
        attributes: arguments[ 1 ]
 
6498
    };
 
6499
 
 
6500
};
 
6501
 
 
6502
PHP.Parser.prototype.Node_Expr_Empty = function() {
 
6503
    return {
 
6504
        type: "Node_Expr_Empty",
 
6505
        variable: arguments[ 0 ],
 
6506
        attributes: arguments[ 1 ]
 
6507
    };
 
6508
 
 
6509
};
 
6510
 
 
6511
PHP.Parser.prototype.Node_Expr_BooleanOr = function() {
 
6512
    return {
 
6513
        type: "Node_Expr_BooleanOr",
 
6514
        left: arguments[ 0 ],
 
6515
        right: arguments[ 1 ],
 
6516
        attributes: arguments[ 2 ]
 
6517
    };
 
6518
 
 
6519
};
 
6520
 
 
6521
PHP.Parser.prototype.Node_Expr_LogicalOr = function() {
 
6522
    return {
 
6523
        type: "Node_Expr_LogicalOr",
 
6524
        left: arguments[ 0 ],
 
6525
        right: arguments[ 1 ],
 
6526
        attributes: arguments[ 2 ]
 
6527
    };
 
6528
 
 
6529
};
 
6530
 
 
6531
PHP.Parser.prototype.Node_Expr_LogicalAnd = function() {
 
6532
    return {
 
6533
        type: "Node_Expr_LogicalAnd",
 
6534
        left: arguments[ 0 ],
 
6535
        right: arguments[ 1 ],
 
6536
        attributes: arguments[ 2 ]
 
6537
    };
 
6538
 
 
6539
};
 
6540
 
 
6541
 
 
6542
PHP.Parser.prototype.Node_Expr_LogicalXor = function() {
 
6543
    return {
 
6544
        type: "Node_Expr_LogicalXor",
 
6545
        left: arguments[ 0 ],
 
6546
        right: arguments[ 1 ],
 
6547
        attributes: arguments[ 2 ]
 
6548
    };
 
6549
 
 
6550
};
 
6551
 
 
6552
PHP.Parser.prototype.Node_Expr_BitwiseAnd = function() {
 
6553
    return {
 
6554
        type: "Node_Expr_BitwiseAnd",
 
6555
        left: arguments[ 0 ],
 
6556
        right: arguments[ 1 ],
 
6557
        attributes: arguments[ 2 ]
 
6558
    };
 
6559
 
 
6560
};
 
6561
 
 
6562
PHP.Parser.prototype.Node_Expr_BitwiseOr = function() {
 
6563
    return {
 
6564
        type: "Node_Expr_BitwiseOr",
 
6565
        left: arguments[ 0 ],
 
6566
        right: arguments[ 1 ],
 
6567
        attributes: arguments[ 2 ]
 
6568
    };
 
6569
 
 
6570
};
 
6571
 
 
6572
PHP.Parser.prototype.Node_Expr_BitwiseNot = function() {
 
6573
    return {
 
6574
        type: "Node_Expr_BitwiseNot",
 
6575
        expr: arguments[ 0 ],
 
6576
        attributes: arguments[ 1 ]
 
6577
    };
 
6578
 
 
6579
};
 
6580
 
 
6581
PHP.Parser.prototype.Node_Expr_BooleanNot = function() {
 
6582
    return {
 
6583
        type: "Node_Expr_BooleanNot",
 
6584
        expr: arguments[ 0 ],
 
6585
        attributes: arguments[ 1 ]
 
6586
    };
 
6587
 
 
6588
};
 
6589
 
 
6590
PHP.Parser.prototype.Node_Expr_BooleanAnd = function() {
 
6591
    return {
 
6592
        type: "Node_Expr_BooleanAnd",
 
6593
        left: arguments[ 0 ],
 
6594
        right: arguments[ 1 ],
 
6595
        attributes: arguments[ 2 ]
 
6596
    };
 
6597
 
 
6598
};
 
6599
 
 
6600
PHP.Parser.prototype.Node_Expr_Instanceof = function() {
 
6601
 
 
6602
    return {
 
6603
        type: "Node_Expr_Instanceof",
 
6604
        left: arguments[ 0 ],
 
6605
        right: arguments[ 1 ],
 
6606
        attributes: arguments[ 2 ]
 
6607
    };
 
6608
 
 
6609
};
 
6610
 
 
6611
PHP.Parser.prototype.Node_Expr_Clone = function() {
 
6612
 
 
6613
    return {
 
6614
        type: "Node_Expr_Clone",
 
6615
        expr: arguments[ 0 ],
 
6616
        attributes: arguments[ 1 ]
 
6617
    };
 
6618
 
 
6619
};
 
6620
 
 
6621
 
 
6622
 
 
6623
PHP.Parser.prototype.Scalar_LNumber_parse = function( a ) {
 
6624
   
 
6625
    return a;  
 
6626
};
 
6627
 
 
6628
PHP.Parser.prototype.Scalar_DNumber_parse = function( a ) {
 
6629
   
 
6630
    return a;  
 
6631
};
 
6632
 
 
6633
PHP.Parser.prototype.Scalar_String_parseDocString = function() {
 
6634
    
 
6635
    return '"' + arguments[ 1 ].replace(/([^"\\]*(?:\\.[^"\\]*)*)"/g, '$1\\"') + '"';
 
6636
};
 
6637
 
 
6638
 
 
6639
PHP.Parser.prototype.Node_Scalar_String = function( ) {
 
6640
   
 
6641
    return {
 
6642
        type: "Node_Scalar_String",
 
6643
        value: arguments[ 0 ],
 
6644
        attributes: arguments[ 1 ]
 
6645
    };  
 
6646
 
 
6647
};
 
6648
 
 
6649
PHP.Parser.prototype.Scalar_String_create = function( ) {
 
6650
    return {
 
6651
        type: "Node_Scalar_String",
 
6652
        value: arguments[ 0 ],
 
6653
        attributes: arguments[ 1 ]
 
6654
    };  
 
6655
 
 
6656
};
 
6657
 
 
6658
PHP.Parser.prototype.Node_Scalar_LNumber = function() {
 
6659
   
 
6660
    return {
 
6661
        type: "Node_Scalar_LNumber",
 
6662
        value: arguments[ 0 ],
 
6663
        attributes: arguments[ 1 ]
 
6664
    };  
 
6665
  
 
6666
};
 
6667
 
 
6668
 
 
6669
PHP.Parser.prototype.Node_Scalar_DNumber = function() {
 
6670
   
 
6671
    return {
 
6672
        type: "Node_Scalar_DNumber",
 
6673
        value: arguments[ 0 ],
 
6674
        attributes: arguments[ 1 ]
 
6675
    };  
 
6676
  
 
6677
};
 
6678
 
 
6679
 
 
6680
PHP.Parser.prototype.Node_Scalar_Encapsed = function() {
 
6681
   
 
6682
    return {
 
6683
        type: "Node_Scalar_Encapsed",
 
6684
        parts: arguments[ 0 ],
 
6685
        attributes: arguments[ 1 ]
 
6686
    };  
 
6687
  
 
6688
};
 
6689
 
 
6690
PHP.Parser.prototype.Node_Name = function() {
 
6691
   
 
6692
    return {
 
6693
        type: "Node_Name",
 
6694
        parts: arguments[ 0 ],
 
6695
        attributes: arguments[ 1 ]
 
6696
    };  
 
6697
  
 
6698
};
 
6699
 
 
6700
PHP.Parser.prototype.Node_Param = function() {
 
6701
   
 
6702
    return {
 
6703
        type: "Node_Param",
 
6704
        name: arguments[ 0 ],
 
6705
        def: arguments[ 1 ],
 
6706
        Type: arguments[ 2 ],
 
6707
        byRef: arguments[ 3 ],
 
6708
        attributes: arguments[ 4 ]
 
6709
    };  
 
6710
  
 
6711
};
 
6712
 
 
6713
PHP.Parser.prototype.Node_Arg = function() {
 
6714
   
 
6715
    return {
 
6716
        type: "Node_Name",
 
6717
        value: arguments[ 0 ],
 
6718
        byRef: arguments[ 1 ],
 
6719
        attributes: arguments[ 2 ]
 
6720
    };  
 
6721
  
 
6722
};
 
6723
 
 
6724
 
 
6725
PHP.Parser.prototype.Node_Const = function() {
 
6726
   
 
6727
    return {
 
6728
        type: "Node_Const",
 
6729
        name: arguments[ 0 ],
 
6730
        value: arguments[ 1 ],
 
6731
        attributes: arguments[ 2 ]
 
6732
    };  
 
6733
  
 
6734
};
 
6735
 
 
6736
 
 
6737
exports.PHP = PHP;
 
6738
});