/lenasys/trunk

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

« back to all changes in this revision

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

  • Committer: Erik Wikström
  • Date: 2013-03-28 07:43:18 UTC
  • mto: This revision was merged to the branch mainline in revision 7.
  • Revision ID: wikxen@gmail.com-20130328074318-9v6krijkyap59nct
Removed trunk folder and moved its contents to the root

Show diffs side-by-side

added added

removed removed

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