/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
15.1.1 by galaxyAbstractor
Started implementation of a new codeviewer using Ace
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
});