-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathparser.js.html
804 lines (736 loc) · 67 KB
/
parser.js.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
parser.js - Documentation
</title>
<link href="https://www.braintreepayments.com/images/favicon-ccda0b14.png" rel="icon" type="image/png">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
<!-- start Mixpanel -->
<script type="text/javascript">(function(e,a){if(!a.__SV){var b=window;try{var c,l,i,j=b.location,g=j.hash;c=function(a,b){return(l=a.match(RegExp(b+"=([^&]*)")))?l[1]:null};g&&c(g,"state")&&(i=JSON.parse(decodeURIComponent(c(g,"state"))),"mpeditor"===i.action&&(b.sessionStorage.setItem("_mpcehash",g),history.replaceState(i.desiredHash||"",e.title,j.pathname+j.search)))}catch(m){}var k,h;window.mixpanel=a;a._i=[];a.init=function(b,c,f){function e(b,a){var c=a.split(".");2==c.length&&(b=b[c[0]],a=c[1]);b[a]=function(){b.push([a].concat(Array.prototype.slice.call(arguments,
0)))}}var d=a;"undefined"!==typeof f?d=a[f]=[]:f="mixpanel";d.people=d.people||[];d.toString=function(b){var a="mixpanel";"mixpanel"!==f&&(a+="."+f);b||(a+=" (stub)");return a};d.people.toString=function(){return d.toString(1)+".people (stub)"};k="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
for(h=0;h<k.length;h++)e(d,k[h]);a._i.push([b,c,f])};a.__SV=1.2;b=e.createElement("script");b.type="text/javascript";b.async=!0;b.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";c=e.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c)}})(document,window.mixpanel||[]);
mixpanel.init("1919205b2da72e4da3b9b6639b444d59");</script>
<!-- end Mixpanel -->
</head>
<body>
<svg style="display: none;">
<defs>
<symbol id="linkIcon" fill="#706d77" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/>
</symbol>
</defs>
</svg>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<div class="top-nav-wrapper">
<ul>
<li >
<a href="index.html">
<svg fill="#6D6D6D" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
</a>
</li>
<li>
<div class="search-wrapper">
<svg fill="#6D6D6D" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
<input type="text" placeholder="Search" class="search-input">
</div>
</li>
</ul>
</div>
<nav>
<h3 class="reference-title">
php-parser
</h3>
<h3>Classes</h3><ul><li id="Array-nav"><a href="Array.html">Array</a><ul class='methods'><li data-type="method" id="Array-destroy-nav"><a href="Array.html#destroy">destroy</a></li><li data-type="method" id="Array-includeToken-nav"><a href="Array.html#includeToken">includeToken</a></li><li data-type="method" id="Array-setTrailingComments-nav"><a href="Array.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Assign-nav"><a href="Assign.html">Assign</a><ul class='methods'><li data-type="method" id="Assign-destroy-nav"><a href="Assign.html#destroy">destroy</a></li><li data-type="method" id="Assign-includeToken-nav"><a href="Assign.html#includeToken">includeToken</a></li><li data-type="method" id="Assign-setTrailingComments-nav"><a href="Assign.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="AST-nav"><a href="AST.html">AST</a><ul class='methods'><li data-type="method" id="AST-prepare-nav"><a href="AST.html#prepare">prepare</a></li><li data-type="method" id="AST-resolveLocations-nav"><a href="AST.html#resolveLocations">resolveLocations</a></li><li data-type="method" id="AST-resolvePrecedence-nav"><a href="AST.html#resolvePrecedence">resolvePrecedence</a></li><li data-type="method" id="AST-swapLocations-nav"><a href="AST.html#swapLocations">swapLocations</a></li></ul></li><li id="Bin-nav"><a href="Bin.html">Bin</a><ul class='methods'><li data-type="method" id="Bin-destroy-nav"><a href="Bin.html#destroy">destroy</a></li><li data-type="method" id="Bin-includeToken-nav"><a href="Bin.html#includeToken">includeToken</a></li><li data-type="method" id="Bin-setTrailingComments-nav"><a href="Bin.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Block-nav"><a href="Block.html">Block</a><ul class='methods'><li data-type="method" id="Block-destroy-nav"><a href="Block.html#destroy">destroy</a></li><li data-type="method" id="Block-includeToken-nav"><a href="Block.html#includeToken">includeToken</a></li><li data-type="method" id="Block-setTrailingComments-nav"><a href="Block.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Boolean-nav"><a href="Boolean.html">Boolean</a><ul class='methods'><li data-type="method" id="Boolean-destroy-nav"><a href="Boolean.html#destroy">destroy</a></li><li data-type="method" id="Boolean-includeToken-nav"><a href="Boolean.html#includeToken">includeToken</a></li><li data-type="method" id="Boolean-setTrailingComments-nav"><a href="Boolean.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Break-nav"><a href="Break.html">Break</a><ul class='methods'><li data-type="method" id="Break-destroy-nav"><a href="Break.html#destroy">destroy</a></li><li data-type="method" id="Break-includeToken-nav"><a href="Break.html#includeToken">includeToken</a></li><li data-type="method" id="Break-setTrailingComments-nav"><a href="Break.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Call-nav"><a href="Call.html">Call</a><ul class='methods'><li data-type="method" id="Call-destroy-nav"><a href="Call.html#destroy">destroy</a></li><li data-type="method" id="Call-includeToken-nav"><a href="Call.html#includeToken">includeToken</a></li><li data-type="method" id="Call-setTrailingComments-nav"><a href="Call.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Case-nav"><a href="Case.html">Case</a><ul class='methods'><li data-type="method" id="Case-destroy-nav"><a href="Case.html#destroy">destroy</a></li><li data-type="method" id="Case-includeToken-nav"><a href="Case.html#includeToken">includeToken</a></li><li data-type="method" id="Case-setTrailingComments-nav"><a href="Case.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Cast-nav"><a href="Cast.html">Cast</a><ul class='methods'><li data-type="method" id="Cast-destroy-nav"><a href="Cast.html#destroy">destroy</a></li><li data-type="method" id="Cast-includeToken-nav"><a href="Cast.html#includeToken">includeToken</a></li><li data-type="method" id="Cast-setTrailingComments-nav"><a href="Cast.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Catch-nav"><a href="Catch.html">Catch</a><ul class='methods'><li data-type="method" id="Catch-destroy-nav"><a href="Catch.html#destroy">destroy</a></li><li data-type="method" id="Catch-includeToken-nav"><a href="Catch.html#includeToken">includeToken</a></li><li data-type="method" id="Catch-setTrailingComments-nav"><a href="Catch.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Class-nav"><a href="Class.html">Class</a><ul class='methods'><li data-type="method" id="Class-destroy-nav"><a href="Class.html#destroy">destroy</a></li><li data-type="method" id="Class-includeToken-nav"><a href="Class.html#includeToken">includeToken</a></li><li data-type="method" id="Class-parseFlags-nav"><a href="Class.html#parseFlags">parseFlags</a></li><li data-type="method" id="Class-setTrailingComments-nav"><a href="Class.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="ClassConstant-nav"><a href="ClassConstant.html">ClassConstant</a><ul class='methods'><li data-type="method" id="ClassConstant-destroy-nav"><a href="ClassConstant.html#destroy">destroy</a></li><li data-type="method" id="ClassConstant-includeToken-nav"><a href="ClassConstant.html#includeToken">includeToken</a></li><li data-type="method" id="ClassConstant-parseFlags-nav"><a href="ClassConstant.html#parseFlags">parseFlags</a></li><li data-type="method" id="ClassConstant-setTrailingComments-nav"><a href="ClassConstant.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="ClassReference-nav"><a href="ClassReference.html">ClassReference</a><ul class='methods'><li data-type="method" id="ClassReference-destroy-nav"><a href="ClassReference.html#destroy">destroy</a></li><li data-type="method" id="ClassReference-includeToken-nav"><a href="ClassReference.html#includeToken">includeToken</a></li><li data-type="method" id="ClassReference-setTrailingComments-nav"><a href="ClassReference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Clone-nav"><a href="Clone.html">Clone</a><ul class='methods'><li data-type="method" id="Clone-destroy-nav"><a href="Clone.html#destroy">destroy</a></li><li data-type="method" id="Clone-includeToken-nav"><a href="Clone.html#includeToken">includeToken</a></li><li data-type="method" id="Clone-setTrailingComments-nav"><a href="Clone.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Closure-nav"><a href="Closure.html">Closure</a><ul class='methods'><li data-type="method" id="Closure-destroy-nav"><a href="Closure.html#destroy">destroy</a></li><li data-type="method" id="Closure-includeToken-nav"><a href="Closure.html#includeToken">includeToken</a></li><li data-type="method" id="Closure-setTrailingComments-nav"><a href="Closure.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Comment-nav"><a href="Comment.html">Comment</a><ul class='methods'><li data-type="method" id="Comment-destroy-nav"><a href="Comment.html#destroy">destroy</a></li><li data-type="method" id="Comment-includeToken-nav"><a href="Comment.html#includeToken">includeToken</a></li><li data-type="method" id="Comment-setTrailingComments-nav"><a href="Comment.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="CommentBlock-nav"><a href="CommentBlock.html">CommentBlock</a><ul class='methods'><li data-type="method" id="CommentBlock-destroy-nav"><a href="CommentBlock.html#destroy">destroy</a></li><li data-type="method" id="CommentBlock-includeToken-nav"><a href="CommentBlock.html#includeToken">includeToken</a></li><li data-type="method" id="CommentBlock-setTrailingComments-nav"><a href="CommentBlock.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="CommentLine-nav"><a href="CommentLine.html">CommentLine</a><ul class='methods'><li data-type="method" id="CommentLine-destroy-nav"><a href="CommentLine.html#destroy">destroy</a></li><li data-type="method" id="CommentLine-includeToken-nav"><a href="CommentLine.html#includeToken">includeToken</a></li><li data-type="method" id="CommentLine-setTrailingComments-nav"><a href="CommentLine.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Constant-nav"><a href="Constant.html">Constant</a><ul class='methods'><li data-type="method" id="Constant-destroy-nav"><a href="Constant.html#destroy">destroy</a></li><li data-type="method" id="Constant-includeToken-nav"><a href="Constant.html#includeToken">includeToken</a></li><li data-type="method" id="Constant-setTrailingComments-nav"><a href="Constant.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="ConstantStatement-nav"><a href="ConstantStatement.html">ConstantStatement</a><ul class='methods'><li data-type="method" id="ConstantStatement-destroy-nav"><a href="ConstantStatement.html#destroy">destroy</a></li><li data-type="method" id="ConstantStatement-includeToken-nav"><a href="ConstantStatement.html#includeToken">includeToken</a></li><li data-type="method" id="ConstantStatement-setTrailingComments-nav"><a href="ConstantStatement.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Continue-nav"><a href="Continue.html">Continue</a><ul class='methods'><li data-type="method" id="Continue-destroy-nav"><a href="Continue.html#destroy">destroy</a></li><li data-type="method" id="Continue-includeToken-nav"><a href="Continue.html#includeToken">includeToken</a></li><li data-type="method" id="Continue-setTrailingComments-nav"><a href="Continue.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Declaration-nav"><a href="Declaration.html">Declaration</a><ul class='methods'><li data-type="method" id="Declaration-destroy-nav"><a href="Declaration.html#destroy">destroy</a></li><li data-type="method" id="Declaration-includeToken-nav"><a href="Declaration.html#includeToken">includeToken</a></li><li data-type="method" id="Declaration-parseFlags-nav"><a href="Declaration.html#parseFlags">parseFlags</a></li><li data-type="method" id="Declaration-setTrailingComments-nav"><a href="Declaration.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Declare-nav"><a href="Declare.html">Declare</a><ul class='methods'><li data-type="method" id="Declare-destroy-nav"><a href="Declare.html#destroy">destroy</a></li><li data-type="method" id="Declare-includeToken-nav"><a href="Declare.html#includeToken">includeToken</a></li><li data-type="method" id="Declare-setTrailingComments-nav"><a href="Declare.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="DeclareDirective-nav"><a href="DeclareDirective.html">DeclareDirective</a><ul class='methods'><li data-type="method" id="DeclareDirective-destroy-nav"><a href="DeclareDirective.html#destroy">destroy</a></li><li data-type="method" id="DeclareDirective-includeToken-nav"><a href="DeclareDirective.html#includeToken">includeToken</a></li><li data-type="method" id="DeclareDirective-setTrailingComments-nav"><a href="DeclareDirective.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Do-nav"><a href="Do.html">Do</a><ul class='methods'><li data-type="method" id="Do-destroy-nav"><a href="Do.html#destroy">destroy</a></li><li data-type="method" id="Do-includeToken-nav"><a href="Do.html#includeToken">includeToken</a></li><li data-type="method" id="Do-setTrailingComments-nav"><a href="Do.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Echo-nav"><a href="Echo.html">Echo</a><ul class='methods'><li data-type="method" id="Echo-destroy-nav"><a href="Echo.html#destroy">destroy</a></li><li data-type="method" id="Echo-includeToken-nav"><a href="Echo.html#includeToken">includeToken</a></li><li data-type="method" id="Echo-setTrailingComments-nav"><a href="Echo.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Empty-nav"><a href="Empty.html">Empty</a><ul class='methods'><li data-type="method" id="Empty-destroy-nav"><a href="Empty.html#destroy">destroy</a></li><li data-type="method" id="Empty-includeToken-nav"><a href="Empty.html#includeToken">includeToken</a></li><li data-type="method" id="Empty-setTrailingComments-nav"><a href="Empty.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Encapsed-nav"><a href="Encapsed.html">Encapsed</a><ul class='methods'><li data-type="method" id="Encapsed-destroy-nav"><a href="Encapsed.html#destroy">destroy</a></li><li data-type="method" id="Encapsed-includeToken-nav"><a href="Encapsed.html#includeToken">includeToken</a></li><li data-type="method" id="Encapsed-setTrailingComments-nav"><a href="Encapsed.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="EncapsedPart-nav"><a href="EncapsedPart.html">EncapsedPart</a><ul class='methods'><li data-type="method" id="EncapsedPart-destroy-nav"><a href="EncapsedPart.html#destroy">destroy</a></li><li data-type="method" id="EncapsedPart-includeToken-nav"><a href="EncapsedPart.html#includeToken">includeToken</a></li><li data-type="method" id="EncapsedPart-setTrailingComments-nav"><a href="EncapsedPart.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="engine-nav"><a href="engine.html">engine</a><ul class='methods'><li data-type="method" id="engine-parseCode-nav"><a href="engine.html#parseCode">parseCode</a></li><li data-type="method" id="engine-parseEval-nav"><a href="engine.html#parseEval">parseEval</a></li><li data-type="method" id="engine-tokenGetAll-nav"><a href="engine.html#tokenGetAll">tokenGetAll</a></li></ul></li><li id="Entry-nav"><a href="Entry.html">Entry</a><ul class='methods'><li data-type="method" id="Entry-destroy-nav"><a href="Entry.html#destroy">destroy</a></li><li data-type="method" id="Entry-includeToken-nav"><a href="Entry.html#includeToken">includeToken</a></li><li data-type="method" id="Entry-setTrailingComments-nav"><a href="Entry.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Error-nav"><a href="Error.html">Error</a><ul class='methods'><li data-type="method" id="Error-destroy-nav"><a href="Error.html#destroy">destroy</a></li><li data-type="method" id="Error-includeToken-nav"><a href="Error.html#includeToken">includeToken</a></li><li data-type="method" id="Error-setTrailingComments-nav"><a href="Error.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Eval-nav"><a href="Eval.html">Eval</a><ul class='methods'><li data-type="method" id="Eval-destroy-nav"><a href="Eval.html#destroy">destroy</a></li><li data-type="method" id="Eval-includeToken-nav"><a href="Eval.html#includeToken">includeToken</a></li><li data-type="method" id="Eval-setTrailingComments-nav"><a href="Eval.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Exit-nav"><a href="Exit.html">Exit</a><ul class='methods'><li data-type="method" id="Exit-destroy-nav"><a href="Exit.html#destroy">destroy</a></li><li data-type="method" id="Exit-includeToken-nav"><a href="Exit.html#includeToken">includeToken</a></li><li data-type="method" id="Exit-setTrailingComments-nav"><a href="Exit.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Expression-nav"><a href="Expression.html">Expression</a><ul class='methods'><li data-type="method" id="Expression-destroy-nav"><a href="Expression.html#destroy">destroy</a></li><li data-type="method" id="Expression-includeToken-nav"><a href="Expression.html#includeToken">includeToken</a></li><li data-type="method" id="Expression-setTrailingComments-nav"><a href="Expression.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="ExpressionStatement-nav"><a href="ExpressionStatement.html">ExpressionStatement</a><ul class='methods'><li data-type="method" id="ExpressionStatement-destroy-nav"><a href="ExpressionStatement.html#destroy">destroy</a></li><li data-type="method" id="ExpressionStatement-includeToken-nav"><a href="ExpressionStatement.html#includeToken">includeToken</a></li><li data-type="method" id="ExpressionStatement-setTrailingComments-nav"><a href="ExpressionStatement.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="For-nav"><a href="For.html">For</a><ul class='methods'><li data-type="method" id="For-destroy-nav"><a href="For.html#destroy">destroy</a></li><li data-type="method" id="For-includeToken-nav"><a href="For.html#includeToken">includeToken</a></li><li data-type="method" id="For-setTrailingComments-nav"><a href="For.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Foreach-nav"><a href="Foreach.html">Foreach</a><ul class='methods'><li data-type="method" id="Foreach-destroy-nav"><a href="Foreach.html#destroy">destroy</a></li><li data-type="method" id="Foreach-includeToken-nav"><a href="Foreach.html#includeToken">includeToken</a></li><li data-type="method" id="Foreach-setTrailingComments-nav"><a href="Foreach.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Function-nav"><a href="Function.html">Function</a><ul class='methods'><li data-type="method" id="Function-destroy-nav"><a href="Function.html#destroy">destroy</a></li><li data-type="method" id="Function-includeToken-nav"><a href="Function.html#includeToken">includeToken</a></li><li data-type="method" id="Function-parseFlags-nav"><a href="Function.html#parseFlags">parseFlags</a></li><li data-type="method" id="Function-setTrailingComments-nav"><a href="Function.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Global-nav"><a href="Global_.html">Global</a><ul class='methods'><li data-type="method" id="Global-destroy-nav"><a href="Global_.html#destroy">destroy</a></li><li data-type="method" id="Global-includeToken-nav"><a href="Global_.html#includeToken">includeToken</a></li><li data-type="method" id="Global-setTrailingComments-nav"><a href="Global_.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Goto-nav"><a href="Goto.html">Goto</a><ul class='methods'><li data-type="method" id="Goto-destroy-nav"><a href="Goto.html#destroy">destroy</a></li><li data-type="method" id="Goto-includeToken-nav"><a href="Goto.html#includeToken">includeToken</a></li><li data-type="method" id="Goto-setTrailingComments-nav"><a href="Goto.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Halt-nav"><a href="Halt.html">Halt</a><ul class='methods'><li data-type="method" id="Halt-destroy-nav"><a href="Halt.html#destroy">destroy</a></li><li data-type="method" id="Halt-includeToken-nav"><a href="Halt.html#includeToken">includeToken</a></li><li data-type="method" id="Halt-setTrailingComments-nav"><a href="Halt.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Identifier-nav"><a href="Identifier.html">Identifier</a><ul class='methods'><li data-type="method" id="Identifier-destroy-nav"><a href="Identifier.html#destroy">destroy</a></li><li data-type="method" id="Identifier-includeToken-nav"><a href="Identifier.html#includeToken">includeToken</a></li><li data-type="method" id="Identifier-setTrailingComments-nav"><a href="Identifier.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="If-nav"><a href="If.html">If</a><ul class='methods'><li data-type="method" id="If-destroy-nav"><a href="If.html#destroy">destroy</a></li><li data-type="method" id="If-includeToken-nav"><a href="If.html#includeToken">includeToken</a></li><li data-type="method" id="If-setTrailingComments-nav"><a href="If.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Include-nav"><a href="Include.html">Include</a><ul class='methods'><li data-type="method" id="Include-destroy-nav"><a href="Include.html#destroy">destroy</a></li><li data-type="method" id="Include-includeToken-nav"><a href="Include.html#includeToken">includeToken</a></li><li data-type="method" id="Include-setTrailingComments-nav"><a href="Include.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Inline-nav"><a href="Inline.html">Inline</a><ul class='methods'><li data-type="method" id="Inline-destroy-nav"><a href="Inline.html#destroy">destroy</a></li><li data-type="method" id="Inline-includeToken-nav"><a href="Inline.html#includeToken">includeToken</a></li><li data-type="method" id="Inline-setTrailingComments-nav"><a href="Inline.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Interface-nav"><a href="Interface.html">Interface</a><ul class='methods'><li data-type="method" id="Interface-destroy-nav"><a href="Interface.html#destroy">destroy</a></li><li data-type="method" id="Interface-includeToken-nav"><a href="Interface.html#includeToken">includeToken</a></li><li data-type="method" id="Interface-parseFlags-nav"><a href="Interface.html#parseFlags">parseFlags</a></li><li data-type="method" id="Interface-setTrailingComments-nav"><a href="Interface.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Isset-nav"><a href="Isset.html">Isset</a><ul class='methods'><li data-type="method" id="Isset-destroy-nav"><a href="Isset.html#destroy">destroy</a></li><li data-type="method" id="Isset-includeToken-nav"><a href="Isset.html#includeToken">includeToken</a></li><li data-type="method" id="Isset-setTrailingComments-nav"><a href="Isset.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Label-nav"><a href="Label.html">Label</a><ul class='methods'><li data-type="method" id="Label-destroy-nav"><a href="Label.html#destroy">destroy</a></li><li data-type="method" id="Label-includeToken-nav"><a href="Label.html#includeToken">includeToken</a></li><li data-type="method" id="Label-setTrailingComments-nav"><a href="Label.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="lexer-nav"><a href="lexer.html">lexer</a><ul class='methods'><li data-type="method" id="lexer-getState-nav"><a href="lexer.html#getState">getState</a></li><li data-type="method" id="lexer-input-nav"><a href="lexer.html#input">input</a></li><li data-type="method" id="lexer-setInput-nav"><a href="lexer.html#setInput">setInput</a></li><li data-type="method" id="lexer-setState-nav"><a href="lexer.html#setState">setState</a></li><li data-type="method" id="lexer-unput-nav"><a href="lexer.html#unput">unput</a></li></ul></li><li id="List-nav"><a href="List.html">List</a><ul class='methods'><li data-type="method" id="List-destroy-nav"><a href="List.html#destroy">destroy</a></li><li data-type="method" id="List-includeToken-nav"><a href="List.html#includeToken">includeToken</a></li><li data-type="method" id="List-setTrailingComments-nav"><a href="List.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Literal-nav"><a href="Literal.html">Literal</a><ul class='methods'><li data-type="method" id="Literal-destroy-nav"><a href="Literal.html#destroy">destroy</a></li><li data-type="method" id="Literal-includeToken-nav"><a href="Literal.html#includeToken">includeToken</a></li><li data-type="method" id="Literal-setTrailingComments-nav"><a href="Literal.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Location-nav"><a href="Location.html">Location</a></li><li id="Lookup-nav"><a href="Lookup.html">Lookup</a><ul class='methods'><li data-type="method" id="Lookup-destroy-nav"><a href="Lookup.html#destroy">destroy</a></li><li data-type="method" id="Lookup-includeToken-nav"><a href="Lookup.html#includeToken">includeToken</a></li><li data-type="method" id="Lookup-setTrailingComments-nav"><a href="Lookup.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Magic-nav"><a href="Magic.html">Magic</a><ul class='methods'><li data-type="method" id="Magic-destroy-nav"><a href="Magic.html#destroy">destroy</a></li><li data-type="method" id="Magic-includeToken-nav"><a href="Magic.html#includeToken">includeToken</a></li><li data-type="method" id="Magic-setTrailingComments-nav"><a href="Magic.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Method-nav"><a href="Method.html">Method</a></li><li id="Namespace-nav"><a href="Namespace.html">Namespace</a><ul class='methods'><li data-type="method" id="Namespace-destroy-nav"><a href="Namespace.html#destroy">destroy</a></li><li data-type="method" id="Namespace-includeToken-nav"><a href="Namespace.html#includeToken">includeToken</a></li><li data-type="method" id="Namespace-setTrailingComments-nav"><a href="Namespace.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="New-nav"><a href="New.html">New</a><ul class='methods'><li data-type="method" id="New-destroy-nav"><a href="New.html#destroy">destroy</a></li><li data-type="method" id="New-includeToken-nav"><a href="New.html#includeToken">includeToken</a></li><li data-type="method" id="New-setTrailingComments-nav"><a href="New.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Node-nav"><a href="Node.html">Node</a><ul class='methods'><li data-type="method" id="Node-extends-nav"><a href="Node.html#.extends">extends</a></li><li data-type="method" id="Node-destroy-nav"><a href="Node.html#destroy">destroy</a></li><li data-type="method" id="Node-includeToken-nav"><a href="Node.html#includeToken">includeToken</a></li><li data-type="method" id="Node-setTrailingComments-nav"><a href="Node.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Noop-nav"><a href="Noop.html">Noop</a><ul class='methods'><li data-type="method" id="Noop-destroy-nav"><a href="Noop.html#destroy">destroy</a></li><li data-type="method" id="Noop-includeToken-nav"><a href="Noop.html#includeToken">includeToken</a></li><li data-type="method" id="Noop-setTrailingComments-nav"><a href="Noop.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="NowDoc-nav"><a href="NowDoc.html">NowDoc</a><ul class='methods'><li data-type="method" id="NowDoc-destroy-nav"><a href="NowDoc.html#destroy">destroy</a></li><li data-type="method" id="NowDoc-includeToken-nav"><a href="NowDoc.html#includeToken">includeToken</a></li><li data-type="method" id="NowDoc-setTrailingComments-nav"><a href="NowDoc.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Number-nav"><a href="Number.html">Number</a><ul class='methods'><li data-type="method" id="Number-destroy-nav"><a href="Number.html#destroy">destroy</a></li><li data-type="method" id="Number-includeToken-nav"><a href="Number.html#includeToken">includeToken</a></li><li data-type="method" id="Number-setTrailingComments-nav"><a href="Number.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="OffsetLookup-nav"><a href="OffsetLookup.html">OffsetLookup</a><ul class='methods'><li data-type="method" id="OffsetLookup-destroy-nav"><a href="OffsetLookup.html#destroy">destroy</a></li><li data-type="method" id="OffsetLookup-includeToken-nav"><a href="OffsetLookup.html#includeToken">includeToken</a></li><li data-type="method" id="OffsetLookup-setTrailingComments-nav"><a href="OffsetLookup.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Operation-nav"><a href="Operation.html">Operation</a><ul class='methods'><li data-type="method" id="Operation-destroy-nav"><a href="Operation.html#destroy">destroy</a></li><li data-type="method" id="Operation-includeToken-nav"><a href="Operation.html#includeToken">includeToken</a></li><li data-type="method" id="Operation-setTrailingComments-nav"><a href="Operation.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Parameter-nav"><a href="Parameter.html">Parameter</a><ul class='methods'><li data-type="method" id="Parameter-destroy-nav"><a href="Parameter.html#destroy">destroy</a></li><li data-type="method" id="Parameter-includeToken-nav"><a href="Parameter.html#includeToken">includeToken</a></li><li data-type="method" id="Parameter-parseFlags-nav"><a href="Parameter.html#parseFlags">parseFlags</a></li><li data-type="method" id="Parameter-setTrailingComments-nav"><a href="Parameter.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="ParentReference-nav"><a href="ParentReference.html">ParentReference</a><ul class='methods'><li data-type="method" id="ParentReference-destroy-nav"><a href="ParentReference.html#destroy">destroy</a></li><li data-type="method" id="ParentReference-includeToken-nav"><a href="ParentReference.html#includeToken">includeToken</a></li><li data-type="method" id="ParentReference-setTrailingComments-nav"><a href="ParentReference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="parser-nav"><a href="parser.html">parser</a><ul class='methods'><li data-type="method" id="parser-error-nav"><a href="parser.html#error">error</a></li><li data-type="method" id="parser-expect-nav"><a href="parser.html#expect">expect</a></li><li data-type="method" id="parser-expectEndOfStatement-nav"><a href="parser.html#expectEndOfStatement">expectEndOfStatement</a></li><li data-type="method" id="parser-getTokenName-nav"><a href="parser.html#getTokenName">getTokenName</a></li><li data-type="method" id="parser-is-nav"><a href="parser.html#is">is</a></li><li data-type="method" id="parser-lex-nav"><a href="parser.html#lex">lex</a></li><li data-type="method" id="parser-next-nav"><a href="parser.html#next">next</a></li><li data-type="method" id="parser-node-nav"><a href="parser.html#node">node</a></li><li data-type="method" id="parser-parse-nav"><a href="parser.html#parse">parse</a></li><li data-type="method" id="parser-raiseError-nav"><a href="parser.html#raiseError">raiseError</a></li><li data-type="method" id="parser-text-nav"><a href="parser.html#text">text</a></li></ul></li><li id="Position-nav"><a href="Position.html">Position</a></li><li id="Post-nav"><a href="Post.html">Post</a><ul class='methods'><li data-type="method" id="Post-destroy-nav"><a href="Post.html#destroy">destroy</a></li><li data-type="method" id="Post-includeToken-nav"><a href="Post.html#includeToken">includeToken</a></li><li data-type="method" id="Post-setTrailingComments-nav"><a href="Post.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Pre-nav"><a href="Pre.html">Pre</a><ul class='methods'><li data-type="method" id="Pre-destroy-nav"><a href="Pre.html#destroy">destroy</a></li><li data-type="method" id="Pre-includeToken-nav"><a href="Pre.html#includeToken">includeToken</a></li><li data-type="method" id="Pre-setTrailingComments-nav"><a href="Pre.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Print-nav"><a href="Print.html">Print</a><ul class='methods'><li data-type="method" id="Print-destroy-nav"><a href="Print.html#destroy">destroy</a></li><li data-type="method" id="Print-includeToken-nav"><a href="Print.html#includeToken">includeToken</a></li><li data-type="method" id="Print-setTrailingComments-nav"><a href="Print.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Program-nav"><a href="Program.html">Program</a><ul class='methods'><li data-type="method" id="Program-destroy-nav"><a href="Program.html#destroy">destroy</a></li><li data-type="method" id="Program-includeToken-nav"><a href="Program.html#includeToken">includeToken</a></li><li data-type="method" id="Program-setTrailingComments-nav"><a href="Program.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Property-nav"><a href="Property.html">Property</a><ul class='methods'><li data-type="method" id="Property-destroy-nav"><a href="Property.html#destroy">destroy</a></li><li data-type="method" id="Property-includeToken-nav"><a href="Property.html#includeToken">includeToken</a></li><li data-type="method" id="Property-setTrailingComments-nav"><a href="Property.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="PropertyLookup-nav"><a href="PropertyLookup.html">PropertyLookup</a><ul class='methods'><li data-type="method" id="PropertyLookup-destroy-nav"><a href="PropertyLookup.html#destroy">destroy</a></li><li data-type="method" id="PropertyLookup-includeToken-nav"><a href="PropertyLookup.html#includeToken">includeToken</a></li><li data-type="method" id="PropertyLookup-setTrailingComments-nav"><a href="PropertyLookup.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="PropertyStatement-nav"><a href="PropertyStatement.html">PropertyStatement</a><ul class='methods'><li data-type="method" id="PropertyStatement-destroy-nav"><a href="PropertyStatement.html#destroy">destroy</a></li><li data-type="method" id="PropertyStatement-includeToken-nav"><a href="PropertyStatement.html#includeToken">includeToken</a></li><li data-type="method" id="PropertyStatement-parseFlags-nav"><a href="PropertyStatement.html#parseFlags">parseFlags</a></li><li data-type="method" id="PropertyStatement-setTrailingComments-nav"><a href="PropertyStatement.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Reference-nav"><a href="Reference.html">Reference</a><ul class='methods'><li data-type="method" id="Reference-destroy-nav"><a href="Reference.html#destroy">destroy</a></li><li data-type="method" id="Reference-includeToken-nav"><a href="Reference.html#includeToken">includeToken</a></li><li data-type="method" id="Reference-setTrailingComments-nav"><a href="Reference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="RetIf-nav"><a href="RetIf.html">RetIf</a><ul class='methods'><li data-type="method" id="RetIf-destroy-nav"><a href="RetIf.html#destroy">destroy</a></li><li data-type="method" id="RetIf-includeToken-nav"><a href="RetIf.html#includeToken">includeToken</a></li><li data-type="method" id="RetIf-setTrailingComments-nav"><a href="RetIf.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Return-nav"><a href="Return.html">Return</a><ul class='methods'><li data-type="method" id="Return-destroy-nav"><a href="Return.html#destroy">destroy</a></li><li data-type="method" id="Return-includeToken-nav"><a href="Return.html#includeToken">includeToken</a></li><li data-type="method" id="Return-setTrailingComments-nav"><a href="Return.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="SelfReference-nav"><a href="SelfReference.html">SelfReference</a><ul class='methods'><li data-type="method" id="SelfReference-destroy-nav"><a href="SelfReference.html#destroy">destroy</a></li><li data-type="method" id="SelfReference-includeToken-nav"><a href="SelfReference.html#includeToken">includeToken</a></li><li data-type="method" id="SelfReference-setTrailingComments-nav"><a href="SelfReference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Silent-nav"><a href="Silent.html">Silent</a><ul class='methods'><li data-type="method" id="Silent-destroy-nav"><a href="Silent.html#destroy">destroy</a></li><li data-type="method" id="Silent-includeToken-nav"><a href="Silent.html#includeToken">includeToken</a></li><li data-type="method" id="Silent-setTrailingComments-nav"><a href="Silent.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Statement-nav"><a href="Statement.html">Statement</a><ul class='methods'><li data-type="method" id="Statement-destroy-nav"><a href="Statement.html#destroy">destroy</a></li><li data-type="method" id="Statement-includeToken-nav"><a href="Statement.html#includeToken">includeToken</a></li><li data-type="method" id="Statement-setTrailingComments-nav"><a href="Statement.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Static-nav"><a href="Static.html">Static</a><ul class='methods'><li data-type="method" id="Static-destroy-nav"><a href="Static.html#destroy">destroy</a></li><li data-type="method" id="Static-includeToken-nav"><a href="Static.html#includeToken">includeToken</a></li><li data-type="method" id="Static-setTrailingComments-nav"><a href="Static.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="StaticLookup-nav"><a href="StaticLookup.html">StaticLookup</a><ul class='methods'><li data-type="method" id="StaticLookup-destroy-nav"><a href="StaticLookup.html#destroy">destroy</a></li><li data-type="method" id="StaticLookup-includeToken-nav"><a href="StaticLookup.html#includeToken">includeToken</a></li><li data-type="method" id="StaticLookup-setTrailingComments-nav"><a href="StaticLookup.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="StaticReference-nav"><a href="StaticReference.html">StaticReference</a><ul class='methods'><li data-type="method" id="StaticReference-destroy-nav"><a href="StaticReference.html#destroy">destroy</a></li><li data-type="method" id="StaticReference-includeToken-nav"><a href="StaticReference.html#includeToken">includeToken</a></li><li data-type="method" id="StaticReference-setTrailingComments-nav"><a href="StaticReference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="StaticVariable-nav"><a href="StaticVariable.html">StaticVariable</a><ul class='methods'><li data-type="method" id="StaticVariable-destroy-nav"><a href="StaticVariable.html#destroy">destroy</a></li><li data-type="method" id="StaticVariable-includeToken-nav"><a href="StaticVariable.html#includeToken">includeToken</a></li><li data-type="method" id="StaticVariable-setTrailingComments-nav"><a href="StaticVariable.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="String-nav"><a href="String.html">String</a><ul class='methods'><li data-type="method" id="String-destroy-nav"><a href="String.html#destroy">destroy</a></li><li data-type="method" id="String-includeToken-nav"><a href="String.html#includeToken">includeToken</a></li><li data-type="method" id="String-setTrailingComments-nav"><a href="String.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Switch-nav"><a href="Switch.html">Switch</a><ul class='methods'><li data-type="method" id="Switch-destroy-nav"><a href="Switch.html#destroy">destroy</a></li><li data-type="method" id="Switch-includeToken-nav"><a href="Switch.html#includeToken">includeToken</a></li><li data-type="method" id="Switch-setTrailingComments-nav"><a href="Switch.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Throw-nav"><a href="Throw.html">Throw</a><ul class='methods'><li data-type="method" id="Throw-destroy-nav"><a href="Throw.html#destroy">destroy</a></li><li data-type="method" id="Throw-includeToken-nav"><a href="Throw.html#includeToken">includeToken</a></li><li data-type="method" id="Throw-setTrailingComments-nav"><a href="Throw.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Trait-nav"><a href="Trait.html">Trait</a><ul class='methods'><li data-type="method" id="Trait-destroy-nav"><a href="Trait.html#destroy">destroy</a></li><li data-type="method" id="Trait-includeToken-nav"><a href="Trait.html#includeToken">includeToken</a></li><li data-type="method" id="Trait-parseFlags-nav"><a href="Trait.html#parseFlags">parseFlags</a></li><li data-type="method" id="Trait-setTrailingComments-nav"><a href="Trait.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="TraitAlias-nav"><a href="TraitAlias.html">TraitAlias</a><ul class='methods'><li data-type="method" id="TraitAlias-destroy-nav"><a href="TraitAlias.html#destroy">destroy</a></li><li data-type="method" id="TraitAlias-includeToken-nav"><a href="TraitAlias.html#includeToken">includeToken</a></li><li data-type="method" id="TraitAlias-setTrailingComments-nav"><a href="TraitAlias.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="TraitPrecedence-nav"><a href="TraitPrecedence.html">TraitPrecedence</a><ul class='methods'><li data-type="method" id="TraitPrecedence-destroy-nav"><a href="TraitPrecedence.html#destroy">destroy</a></li><li data-type="method" id="TraitPrecedence-includeToken-nav"><a href="TraitPrecedence.html#includeToken">includeToken</a></li><li data-type="method" id="TraitPrecedence-setTrailingComments-nav"><a href="TraitPrecedence.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="TraitUse-nav"><a href="TraitUse.html">TraitUse</a><ul class='methods'><li data-type="method" id="TraitUse-destroy-nav"><a href="TraitUse.html#destroy">destroy</a></li><li data-type="method" id="TraitUse-includeToken-nav"><a href="TraitUse.html#includeToken">includeToken</a></li><li data-type="method" id="TraitUse-setTrailingComments-nav"><a href="TraitUse.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Try-nav"><a href="Try.html">Try</a><ul class='methods'><li data-type="method" id="Try-destroy-nav"><a href="Try.html#destroy">destroy</a></li><li data-type="method" id="Try-includeToken-nav"><a href="Try.html#includeToken">includeToken</a></li><li data-type="method" id="Try-setTrailingComments-nav"><a href="Try.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="TypeReference-nav"><a href="TypeReference.html">TypeReference</a><ul class='methods'><li data-type="method" id="TypeReference-destroy-nav"><a href="TypeReference.html#destroy">destroy</a></li><li data-type="method" id="TypeReference-includeToken-nav"><a href="TypeReference.html#includeToken">includeToken</a></li><li data-type="method" id="TypeReference-setTrailingComments-nav"><a href="TypeReference.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Unary-nav"><a href="Unary.html">Unary</a><ul class='methods'><li data-type="method" id="Unary-destroy-nav"><a href="Unary.html#destroy">destroy</a></li><li data-type="method" id="Unary-includeToken-nav"><a href="Unary.html#includeToken">includeToken</a></li><li data-type="method" id="Unary-setTrailingComments-nav"><a href="Unary.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Unset-nav"><a href="Unset.html">Unset</a><ul class='methods'><li data-type="method" id="Unset-destroy-nav"><a href="Unset.html#destroy">destroy</a></li><li data-type="method" id="Unset-includeToken-nav"><a href="Unset.html#includeToken">includeToken</a></li><li data-type="method" id="Unset-setTrailingComments-nav"><a href="Unset.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="UseGroup-nav"><a href="UseGroup.html">UseGroup</a><ul class='methods'><li data-type="method" id="UseGroup-destroy-nav"><a href="UseGroup.html#destroy">destroy</a></li><li data-type="method" id="UseGroup-includeToken-nav"><a href="UseGroup.html#includeToken">includeToken</a></li><li data-type="method" id="UseGroup-setTrailingComments-nav"><a href="UseGroup.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="UseItem-nav"><a href="UseItem.html">UseItem</a><ul class='methods'><li data-type="method" id="UseItem-destroy-nav"><a href="UseItem.html#destroy">destroy</a></li><li data-type="method" id="UseItem-includeToken-nav"><a href="UseItem.html#includeToken">includeToken</a></li><li data-type="method" id="UseItem-setTrailingComments-nav"><a href="UseItem.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Variable-nav"><a href="Variable.html">Variable</a><ul class='methods'><li data-type="method" id="Variable-destroy-nav"><a href="Variable.html#destroy">destroy</a></li><li data-type="method" id="Variable-includeToken-nav"><a href="Variable.html#includeToken">includeToken</a></li><li data-type="method" id="Variable-setTrailingComments-nav"><a href="Variable.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="variadic-nav"><a href="variadic.html">variadic</a><ul class='methods'><li data-type="method" id="variadic-destroy-nav"><a href="variadic.html#destroy">destroy</a></li><li data-type="method" id="variadic-includeToken-nav"><a href="variadic.html#includeToken">includeToken</a></li><li data-type="method" id="variadic-setTrailingComments-nav"><a href="variadic.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="While-nav"><a href="While.html">While</a><ul class='methods'><li data-type="method" id="While-destroy-nav"><a href="While.html#destroy">destroy</a></li><li data-type="method" id="While-includeToken-nav"><a href="While.html#includeToken">includeToken</a></li><li data-type="method" id="While-setTrailingComments-nav"><a href="While.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="Yield-nav"><a href="Yield.html">Yield</a><ul class='methods'><li data-type="method" id="Yield-destroy-nav"><a href="Yield.html#destroy">destroy</a></li><li data-type="method" id="Yield-includeToken-nav"><a href="Yield.html#includeToken">includeToken</a></li><li data-type="method" id="Yield-setTrailingComments-nav"><a href="Yield.html#setTrailingComments">setTrailingComments</a></li></ul></li><li id="YieldFrom-nav"><a href="YieldFrom.html">YieldFrom</a><ul class='methods'><li data-type="method" id="YieldFrom-destroy-nav"><a href="YieldFrom.html#destroy">destroy</a></li><li data-type="method" id="YieldFrom-includeToken-nav"><a href="YieldFrom.html#includeToken">includeToken</a></li><li data-type="method" id="YieldFrom-setTrailingComments-nav"><a href="YieldFrom.html#setTrailingComments">setTrailingComments</a></li></ul></li></ul><h3 id="global-nav">Global</h3><ul><li><a href="global.html#FULL_QUALIFIED_NAME">FULL_QUALIFIED_NAME</a></li><li><a href="global.html#getStringBuffer">getStringBuffer</a></li><li><a href="global.html#ignoreStack">ignoreStack</a></li><li><a href="global.html#MODE_BLOCK">MODE_BLOCK</a></li><li><a href="global.html#MODE_NONE">MODE_NONE</a></li><li><a href="global.html#MODE_SHORT">MODE_SHORT</a></li><li><a href="global.html#QUALIFIED_NAME">QUALIFIED_NAME</a></li><li><a href="global.html#RELATIVE_NAME">RELATIVE_NAME</a></li><li><a href="global.html#TYPE_CONST">TYPE_CONST</a></li><li><a href="global.html#TYPE_FUNC">TYPE_FUNC</a></li><li><a href="global.html#TYPE_HEREDOC">TYPE_HEREDOC</a></li><li><a href="global.html#TYPE_OFFSET">TYPE_OFFSET</a></li><li><a href="global.html#TYPE_SHELL">TYPE_SHELL</a></li><li><a href="global.html#TYPE_STRING">TYPE_STRING</a></li><li><a href="global.html#UNQUALIFIED_NAME">UNQUALIFIED_NAME</a></li></ul>
</nav>
<div id="main">
<h1 class="page-title">
parser.js
</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* Copyright (C) 2018 Glayzzle (BSD3 License)
* @authors https://github.com/glayzzle/php-parser/graphs/contributors
* @url http://glayzzle.com
*/
"use strict";
/**
* @private
*/
function isNumber(n) {
return n != "." && n != "," && !isNaN(parseFloat(n)) && isFinite(n);
}
/**
* The PHP Parser class that build the AST tree from the lexer
*
* @class
* @tutorial Parser
* @property {Lexer} lexer - current lexer instance
* @property {AST} ast - the AST factory instance
* @property {Integer|String} token - current token
* @property {Boolean} extractDoc - should extract documentation as AST node
* @property {Boolean} extractTokens - should extract each token
* @property {Boolean} suppressErrors - should ignore parsing errors and continue
* @property {Boolean} debug - should output debug informations
*/
const parser = function(lexer, ast) {
this.lexer = lexer;
this.ast = ast;
this.tok = lexer.tok;
this.EOF = lexer.EOF;
this.token = null;
this.prev = null;
this.debug = false;
this.php7 = true;
this.php74 = true;
this.extractDoc = false;
this.extractTokens = false;
this.suppressErrors = false;
const mapIt = function(item) {
return [item, null];
};
this.entries = {
IDENTIFIER: new Map(
[
this.tok.T_ABSTRACT,
this.tok.T_ARRAY,
this.tok.T_AS,
this.tok.T_BREAK,
this.tok.T_CALLABLE,
this.tok.T_CASE,
this.tok.T_CATCH,
this.tok.T_CLASS,
this.tok.T_CLASS_C,
this.tok.T_CLONE,
this.tok.T_CONST,
this.tok.T_CONTINUE,
this.tok.T_DECLARE,
this.tok.T_DEFAULT,
this.tok.T_DIR,
this.tok.T_DO,
this.tok.T_ECHO,
this.tok.T_ELSE,
this.tok.T_ELSEIF,
this.tok.T_EMPTY,
this.tok.T_ENDDECLARE,
this.tok.T_ENDFOR,
this.tok.T_ENDFOREACH,
this.tok.T_ENDIF,
this.tok.T_ENDSWITCH,
this.tok.T_ENDWHILE,
this.tok.T_EVAL,
this.tok.T_EXIT,
this.tok.T_EXTENDS,
this.tok.T_FILE,
this.tok.T_FINAL,
this.tok.T_FINALLY,
this.tok.T_FUNC_C,
this.tok.T_FOR,
this.tok.T_FOREACH,
this.tok.T_FUNCTION,
this.tok.T_GLOBAL,
this.tok.T_GOTO,
this.tok.T_IF,
this.tok.T_IMPLEMENTS,
this.tok.T_INCLUDE,
this.tok.T_INCLUDE_ONCE,
this.tok.T_INSTANCEOF,
this.tok.T_INSTEADOF,
this.tok.T_INTERFACE,
this.tok.T_ISSET,
this.tok.T_LINE,
this.tok.T_LIST,
this.tok.T_LOGICAL_AND,
this.tok.T_LOGICAL_OR,
this.tok.T_LOGICAL_XOR,
this.tok.T_METHOD_C,
this.tok.T_NAMESPACE,
this.tok.T_NEW,
this.tok.T_NS_C,
this.tok.T_PRINT,
this.tok.T_PRIVATE,
this.tok.T_PROTECTED,
this.tok.T_PUBLIC,
this.tok.T_REQUIRE,
this.tok.T_REQUIRE_ONCE,
this.tok.T_RETURN,
this.tok.T_STATIC,
this.tok.T_SWITCH,
this.tok.T_THROW,
this.tok.T_TRAIT,
this.tok.T_TRY,
this.tok.T_UNSET,
this.tok.T_USE,
this.tok.T_VAR,
this.tok.T_WHILE,
this.tok.T_YIELD
].map(mapIt)
),
VARIABLE: new Map(
[
this.tok.T_VARIABLE,
"$",
"&",
this.tok.T_NS_SEPARATOR,
this.tok.T_STRING,
this.tok.T_NAMESPACE,
this.tok.T_STATIC
].map(mapIt)
),
SCALAR: new Map(
[
this.tok.T_CONSTANT_ENCAPSED_STRING,
this.tok.T_START_HEREDOC,
this.tok.T_LNUMBER,
this.tok.T_DNUMBER,
this.tok.T_ARRAY,
"[",
this.tok.T_CLASS_C,
this.tok.T_TRAIT_C,
this.tok.T_FUNC_C,
this.tok.T_METHOD_C,
this.tok.T_LINE,
this.tok.T_FILE,
this.tok.T_DIR,
this.tok.T_NS_C,
'"',
'b"',
'B"',
"-",
this.tok.T_NS_SEPARATOR
].map(mapIt)
),
T_MAGIC_CONST: new Map(
[
this.tok.T_CLASS_C,
this.tok.T_TRAIT_C,
this.tok.T_FUNC_C,
this.tok.T_METHOD_C,
this.tok.T_LINE,
this.tok.T_FILE,
this.tok.T_DIR,
this.tok.T_NS_C
].map(mapIt)
),
T_MEMBER_FLAGS: new Map(
[
this.tok.T_PUBLIC,
this.tok.T_PRIVATE,
this.tok.T_PROTECTED,
this.tok.T_STATIC,
this.tok.T_ABSTRACT,
this.tok.T_FINAL
].map(mapIt)
),
EOS: new Map([";", this.EOF, this.tok.T_INLINE_HTML].map(mapIt)),
EXPR: new Map(
[
"@",
"-",
"+",
"!",
"~",
"(",
"`",
this.tok.T_LIST,
this.tok.T_CLONE,
this.tok.T_INC,
this.tok.T_DEC,
this.tok.T_NEW,
this.tok.T_ISSET,
this.tok.T_EMPTY,
this.tok.T_INCLUDE,
this.tok.T_INCLUDE_ONCE,
this.tok.T_REQUIRE,
this.tok.T_REQUIRE_ONCE,
this.tok.T_EVAL,
this.tok.T_INT_CAST,
this.tok.T_DOUBLE_CAST,
this.tok.T_STRING_CAST,
this.tok.T_ARRAY_CAST,
this.tok.T_OBJECT_CAST,
this.tok.T_BOOL_CAST,
this.tok.T_UNSET_CAST,
this.tok.T_EXIT,
this.tok.T_PRINT,
this.tok.T_YIELD,
this.tok.T_STATIC,
this.tok.T_FUNCTION,
// using VARIABLES :
this.tok.T_VARIABLE,
"$",
this.tok.T_NS_SEPARATOR,
this.tok.T_STRING,
// using SCALAR :
this.tok.T_STRING, // @see variable.js line 45 > conflict with variable = shift/reduce :)
this.tok.T_CONSTANT_ENCAPSED_STRING,
this.tok.T_START_HEREDOC,
this.tok.T_LNUMBER,
this.tok.T_DNUMBER,
this.tok.T_ARRAY,
"[",
this.tok.T_CLASS_C,
this.tok.T_TRAIT_C,
this.tok.T_FUNC_C,
this.tok.T_METHOD_C,
this.tok.T_LINE,
this.tok.T_FILE,
this.tok.T_DIR,
this.tok.T_NS_C
].map(mapIt)
)
};
};
/**
* helper : gets a token name
*/
parser.prototype.getTokenName = function(token) {
if (!isNumber(token)) {
return "'" + token + "'";
} else {
if (token == this.EOF) return "the end of file (EOF)";
return this.lexer.engine.tokens.values[token];
}
};
/**
* main entry point : converts a source code to AST
*/
parser.prototype.parse = function(code, filename) {
this._errors = [];
this.filename = filename || "eval";
this.currentNamespace = [""];
if (this.extractDoc) {
this._docs = [];
} else {
this._docs = null;
}
if (this.extractTokens) {
this._tokens = [];
} else {
this._tokens = null;
}
if (!this.php7) {
this.php74 = false;
}
this._docIndex = 0;
this._lastNode = null;
this.lexer.setInput(code);
this.lexer.all_tokens = this.extractTokens;
this.lexer.comment_tokens = this.extractDoc;
this.length = this.lexer._input.length;
this.innerList = false;
this.innerListForm = false;
const program = this.node("program");
let childs = [];
this.next();
while (this.token != this.EOF) {
const node = this.read_start();
if (node !== null && node !== undefined) {
if (Array.isArray(node)) {
childs = childs.concat(node);
} else {
childs.push(node);
}
}
}
// #176 : register latest position
this.prev = [
this.lexer.yylloc.last_line,
this.lexer.yylloc.last_column,
this.lexer.offset
];
const result = program(childs, this._errors, this._docs, this._tokens);
if (this.debug) {
const errors = this.ast.checkNodes();
if (errors.length > 0) {
errors.forEach(function(error) {
if (error.position) {
// eslint-disable-next-line no-console
console.log(
"Node at line " +
error.position.line +
", column " +
error.position.column
);
}
// eslint-disable-next-line no-console
console.log(error.stack.join("\n"));
});
throw new Error("Some nodes are not closed");
}
}
return result;
};
/**
* Raise an error
*/
parser.prototype.raiseError = function(message, msgExpect, expect, token) {
message += " on line " + this.lexer.yylloc.first_line;
if (!this.suppressErrors) {
const err = new SyntaxError(
message,
this.filename,
this.lexer.yylloc.first_line
);
err.lineNumber = this.lexer.yylloc.first_line;
err.fileName = this.filename;
err.columnNumber = this.lexer.yylloc.first_column;
throw err;
}
// Error node :
const node = this.ast.prepare("error", null, this)(
message,
token,
this.lexer.yylloc.first_line,
expect
);
this._errors.push(node);
return node;
};
/**
* handling errors
*/
parser.prototype.error = function(expect) {
let msg = "Parse Error : syntax error";
let token = this.getTokenName(this.token);
let msgExpect = "";
if (this.token !== this.EOF) {
if (isNumber(this.token)) {
let symbol = this.text();
if (symbol.length > 10) {
symbol = symbol.substring(0, 7) + "...";
}
token = "'" + symbol + "' (" + token + ")";
}
msg += ", unexpected " + token;
}
if (expect && !Array.isArray(expect)) {
if (isNumber(expect) || expect.length === 1) {
msgExpect = ", expecting " + this.getTokenName(expect);
}
msg += msgExpect;
}
return this.raiseError(msg, msgExpect, expect, token);
};
/**
* Creates a new AST node
*/
parser.prototype.node = function(name) {
if (this.extractDoc) {
let docs = null;
if (this._docIndex < this._docs.length) {
docs = this._docs.slice(this._docIndex);
this._docIndex = this._docs.length;
if (this.debug) {
// eslint-disable-next-line no-console
console.log(new Error("Append docs on " + name));
// eslint-disable-next-line no-console
console.log(docs);
}
}
const node = this.ast.prepare(name, docs, this);
/**
* TOKENS :
* node1 commentA token commmentB node2 commentC token commentD node3 commentE token
*
* AST :
* structure:S1 [
* left: node1 ( trail: commentA ),
* right: structure:S2 [
* node2 (lead: commentB, trail: commentC),
* node3 (lead: commentD)
* ],
* trail: commentE
* ]
*
* Algorithm :
*
* Attach the last comments on parent of current node
* If a new node is started and the parent has a trailing comment
* the move it on previous node
*
* start S2
* start node1
* consume node1 & set commentA as trailingComment on S2
* start S2
* S1 has a trailingComment, attach it on node1
* ...
* NOTE : As the trailingComment Behavior depends on AST, it will be build on
* the AST layer - last child node will keep it's trailingComment nodes
*/
node.postBuild = function(self) {
if (this._docIndex < this._docs.length) {
if (this._lastNode) {
const offset = this.prev[2];
let max = this._docIndex;
for (; max < this._docs.length; max++) {
if (this._docs[max].offset > offset) {
break;
}
}
if (max > this._docIndex) {
// inject trailing comment on child node
this._lastNode.setTrailingComments(
this._docs.slice(this._docIndex, max)
);
this._docIndex = max;
}
} else if (this.token === this.EOF) {
// end of content
self.setTrailingComments(this._docs.slice(this._docIndex));
this._docIndex = this._docs.length;
}
}
this._lastNode = self;
}.bind(this);
return node;
}
return this.ast.prepare(name, null, this);
};
/**
* expects an end of statement or end of file
* @return {boolean}
*/
parser.prototype.expectEndOfStatement = function(node) {
if (this.token === ";") {
// include only real ';' statements
// https://github.com/glayzzle/php-parser/issues/164
if (node && this.lexer.yytext === ";") {
node.includeToken(this);
}
} else if (this.token !== this.tok.T_INLINE_HTML && this.token !== this.EOF) {
this.error(";");
return false;
}
this.next();
return true;
};
/** outputs some debug information on current token **/
const ignoreStack = ["parser.next", "parser.node", "parser.showlog"];
parser.prototype.showlog = function() {
const stack = new Error().stack.split("\n");
let line;
for (let offset = 2; offset < stack.length; offset++) {
line = stack[offset].trim();
let found = false;
for (let i = 0; i < ignoreStack.length; i++) {
if (line.substring(3, 3 + ignoreStack[i].length) === ignoreStack[i]) {
found = true;
break;
}
}
if (!found) {
break;
}
}
// eslint-disable-next-line no-console
console.log(
"Line " +
this.lexer.yylloc.first_line +
" : " +
this.getTokenName(this.token) +
">" +
this.lexer.yytext +
"<" +
" @-->" +
line
);
return this;
};
/**
* Force the parser to check the current token.
*
* If the current token does not match to expected token,
* the an error will be raised.
*
* If the suppressError mode is activated, then the error will
* be added to the program error stack and this function will return `false`.
*
* @param {String|Number} token
* @return {boolean}
* @throws Error
*/
parser.prototype.expect = function(token) {
if (Array.isArray(token)) {
if (token.indexOf(this.token) === -1) {
this.error(token);
return false;
}
} else if (this.token != token) {
this.error(token);
return false;
}
return true;
};
/**
* Returns the current token contents
* @return {String}
*/
parser.prototype.text = function() {
return this.lexer.yytext;
};
/** consume the next token **/
parser.prototype.next = function() {
// prepare the back command
if (this.token !== ";" || this.lexer.yytext === ";") {
// ignore '?>' from automated resolution
// https://github.com/glayzzle/php-parser/issues/168
this.prev = [
this.lexer.yylloc.last_line,
this.lexer.yylloc.last_column,
this.lexer.offset
];
}
// eating the token
this.lex();
// showing the debug
if (this.debug) {
this.showlog();
}
// handling comments
if (this.extractDoc) {
while (
this.token === this.tok.T_COMMENT ||
this.token === this.tok.T_DOC_COMMENT
) {
// APPEND COMMENTS
if (this.token === this.tok.T_COMMENT) {
this._docs.push(this.read_comment());
} else {
this._docs.push(this.read_doc_comment());
}
}
}
return this;
};
/**
* Eating a token
*/
parser.prototype.lex = function() {
// append on token stack
if (this.extractTokens) {
do {
// the token
this.token = this.lexer.lex() || this.EOF;
if (this.token === this.EOF) return this;
let entry = this.lexer.yytext;
if (this.lexer.engine.tokens.values.hasOwnProperty(this.token)) {
entry = [
this.lexer.engine.tokens.values[this.token],
entry,
this.lexer.yylloc.first_line,
this.lexer.yylloc.first_offset,
this.lexer.offset
];
} else {
entry = [
null,
entry,
this.lexer.yylloc.first_line,
this.lexer.yylloc.first_offset,
this.lexer.offset
];
}
this._tokens.push(entry);
if (this.token === this.tok.T_CLOSE_TAG) {
// https://github.com/php/php-src/blob/7ff186434e82ee7be7c59d0db9a976641cf7b09c/Zend/zend_compile.c#L1680
this.token = ";";
return this;
} else if (this.token === this.tok.T_OPEN_TAG_WITH_ECHO) {
this.token = this.tok.T_ECHO;
return this;
}
} while (
this.token === this.tok.T_WHITESPACE || // ignore white space
(!this.extractDoc &&
(this.token === this.tok.T_COMMENT || // ignore single lines comments
this.token === this.tok.T_DOC_COMMENT)) || // ignore doc comments
// ignore open tags
this.token === this.tok.T_OPEN_TAG
);
} else {
this.token = this.lexer.lex() || this.EOF;
}
return this;
};
/**
* Check if token is of specified type
*/
parser.prototype.is = function(type) {
if (Array.isArray(type)) {
return type.indexOf(this.token) !== -1;
}
return this.entries[type].has(this.token);
};
// extends the parser with syntax files
[
require("./parser/array.js"),
require("./parser/class.js"),
require("./parser/comment.js"),
require("./parser/expr.js"),
require("./parser/function.js"),
require("./parser/if.js"),
require("./parser/loops.js"),
require("./parser/main.js"),
require("./parser/namespace.js"),
require("./parser/scalar.js"),
require("./parser/statement.js"),
require("./parser/switch.js"),
require("./parser/try.js"),
require("./parser/utils.js"),
require("./parser/variable.js")
].forEach(function(ext) {
for (const k in ext) {
if (parser.prototype.hasOwnProperty(k)) {
// @see https://github.com/glayzzle/php-parser/issues/234
throw new Error("Function " + k + " is already defined - collision");
}
parser.prototype[k] = ext[k];
}
});
module.exports = parser;
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a>
</footer>
<script src="scripts/linenumber.js"></script>
<script src="scripts/pagelocation.js"></script>
<script>
$(function () {
window.docsearch({
apiKey: 'd7422763b31425c3da8b220f22ff04d2',
indexName: 'glayzzle',
inputSelector: '.search-input',
debug: false, // Set debug to true if you want to inspect the dropdown
algoliaOptions: {
hitsPerPage: 7
}
});
});
</script>
</body>
</html>