-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathast.js.html
714 lines (653 loc) · 66.3 KB
/
ast.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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
ast.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">
ast.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";
const Location = require("./ast/location");
const Position = require("./ast/position");
/**
* ## Class hierarchy
*
* - [Location](#location)
* - [Position](#position)
* - [Node](#node)
* - [Noop](#noop)
* - [StaticVariable](#staticvariable)
* - [EncapsedPart](#encapsedpart)
* - [Constant](#constant)
* - [Identifier](#identifier)
* - [Reference](#reference)
* - [TypeReference](#classreference)
* - [ParentReference](#classreference)
* - [StaticReference](#classreference)
* - [SelfReference](#classreference)
* - [ClassReference](#classreference)
* - [TraitUse](#traituse)
* - [TraitAlias](#traitalias)
* - [TraitPrecedence](#traitprecedence)
* - [Comment](#comment)
* - [CommentLine](#commentline)
* - [CommentBlock](#commentblock)
* - [Error](#error)
* - [Expression](#expression)
* - [Entry](#entry)
* - [Closure](#closure)
* - [Silent](#silent)
* - [RetIf](#retif)
* - [New](#new)
* - [Include](#include)
* - [Call](#call)
* - [Eval](#eval)
* - [Exit](#exit)
* - [Clone](#clone)
* - [Assign](#assign)
* - [Array](#array)
* - [List](#list)
* - [Variable](#variable)
* - [Variadic](#variadic)
* - [Yield](#yield)
* - [YieldFrom](#yieldfrom)
* - [Print](#print)
* - [Isset](#isset)
* - [Empty](#empty)
* - [Lookup](#lookup)
* - [PropertyLookup](#propertylookup)
* - [StaticLookup](#staticlookup)
* - [OffsetLookup](#offsetlookup)
* - [Operation](#operation)
* - [Pre](#pre)
* - [Post](#post)
* - [Bin](#bin)
* - [Unary](#unary)
* - [Cast](#cast)
* - [Literal](#literal)
* - [Boolean](#boolean)
* - [String](#string)
* - [Number](#number)
* - [Inline](#inline)
* - [Magic](#magic)
* - [Nowdoc](#nowdoc)
* - [Encapsed](#encapsed)
* - [Statement](#statement)
* - [ConstantStatement](#constantstatement)
* - [ClassConstant](#classconstant)
* - [Return](#return)
* - [Label](#label)
* - [Continue](#continue)
* - [Case](#case)
* - [Break](#break)
* - [Echo](#echo)
* - [Unset](#unset)
* - [Halt](#halt)
* - [Declare](#declare)
* - [Global](#global)
* - [Static](#static)
* - [If](#if)
* - [Do](#do)
* - [While](#while)
* - [For](#for)
* - [Foreach](#foreach)
* - [Switch](#switch)
* - [Goto](#goto)
* - [Try](#try)
* - [Catch](#catch)
* - [Throw](#throw)
* - [UseGroup](#usegroup)
* - [UseItem](#useitem)
* - [Block](#block)
* - [Program](#program)
* - [Namespace](#namespace)
* - [PropertyStatement](#propertystatement)
* - [Property](#property)
* - [Declaration](#declaration)
* - [Class](#class)
* - [Interface](#interface)
* - [Trait](#trait)
* - [Function](#function)
* - [Method](#method)
* - [Parameter](#parameter)
* ---
*/
/**
* The AST builder class
* @constructor AST
* @tutorial AST
* @property {Boolean} withPositions - Should locate any node (by default false)
* @property {Boolean} withSource - Should extract the node original code (by default false)
*/
const AST = function(withPositions, withSource) {
this.withPositions = withPositions;
this.withSource = withSource;
};
/**
* Create a position node from specified parser
* including it's lexer current state
* @param {Parser}
* @return {Position}
* @private
*/
AST.prototype.position = function(parser) {
return new Position(
parser.lexer.yylloc.first_line,
parser.lexer.yylloc.first_column,
parser.lexer.yylloc.first_offset
);
};
// operators in ascending order of precedence
AST.precedence = {};
[
["or"],
["xor"],
["and"],
["="],
["?"],
["??"],
["||"],
["&&"],
["|"],
["^"],
["&"],
["==", "!=", "===", "!==", /* '<>', */ "<=>"],
["<", "<=", ">", ">="],
["<<", ">>"],
["+", "-", "."],
["*", "/", "%"],
["!"],
["instanceof"],
["cast"]
// TODO: typecasts
// TODO: [ (array)
// TODO: clone, new
].forEach(function(list, index) {
list.forEach(function(operator) {
AST.precedence[operator] = index + 1;
});
});
/**
* Change parent node informations after swapping childs
*/
AST.prototype.swapLocations = function(target, first, last, parser) {
if (this.withPositions) {
target.loc.start = first.loc.start;
target.loc.end = last.loc.end;
if (this.withSource) {
target.loc.source = parser.lexer._input.substring(
target.loc.start.offset,
target.loc.end.offset
);
}
}
};
/**
* Includes locations from first & last into the target
*/
AST.prototype.resolveLocations = function(target, first, last, parser) {
if (this.withPositions) {
if (target.loc.start.offset > first.loc.start.offset) {
target.loc.start = first.loc.start;
}
if (target.loc.end.offset < last.loc.end.offset) {
target.loc.end = last.loc.end;
}
if (this.withSource) {
target.loc.source = parser.lexer._input.substring(
target.loc.start.offset,
target.loc.end.offset
);
}
}
};
/**
* Check and fix precence, by default using right
*/
AST.prototype.resolvePrecedence = function(result, parser) {
let buffer, lLevel, rLevel;
// handling precendence
if (result.kind === "call") {
// including what argument into location
this.resolveLocations(result, result.what, result, parser);
} else if (
result.kind === "propertylookup" ||
result.kind === "staticlookup" ||
(result.kind === "offsetlookup" && result.offset)
) {
// including what argument into location
this.resolveLocations(result, result.what, result.offset, parser);
} else if (result.kind === "bin") {
if (result.right && !result.right.parenthesizedExpression) {
if (result.right.kind === "bin") {
lLevel = AST.precedence[result.type];
rLevel = AST.precedence[result.right.type];
if (lLevel && rLevel && rLevel <= lLevel) {
// https://github.com/glayzzle/php-parser/issues/79
// shift precedence
buffer = result.right;
result.right = result.right.left;
this.swapLocations(result, result.left, result.right, parser);
buffer.left = this.resolvePrecedence(result, parser);
result = buffer;
}
} else if (result.right.kind === "retif") {
lLevel = AST.precedence[result.type];
rLevel = AST.precedence["?"];
if (lLevel && rLevel && rLevel <= lLevel) {
buffer = result.right;
result.right = result.right.test;
this.swapLocations(result, result.left, result.right, parser);
buffer.test = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.test, buffer.falseExpr, parser);
result = buffer;
}
}
}
} else if (
result.kind === "cast" &&
result.what &&
!result.what.parenthesizedExpression
) {
// https://github.com/glayzzle/php-parser/issues/172
if (result.what.kind === "bin") {
buffer = result.what;
result.what = result.what.left;
this.swapLocations(result, result, result.what, parser);
buffer.left = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.left, buffer.right, parser);
result = buffer;
} else if (result.what.kind === "retif") {
buffer = result.what;
result.what = result.what.test;
this.swapLocations(result, result, result.what, parser);
buffer.test = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.test, buffer.falseExpr, parser);
result = buffer;
}
} else if (result.kind === "unary") {
// https://github.com/glayzzle/php-parser/issues/75
if (result.what && !result.what.parenthesizedExpression) {
// unary precedence is always lower
if (result.what.kind === "bin") {
buffer = result.what;
result.what = result.what.left;
this.swapLocations(result, result, result.what, parser);
buffer.left = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.left, buffer.right, parser);
result = buffer;
} else if (result.what.kind === "retif") {
buffer = result.what;
result.what = result.what.test;
this.swapLocations(result, result, result.what, parser);
buffer.test = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.test, buffer.falseExpr, parser);
result = buffer;
}
}
} else if (result.kind === "retif") {
// https://github.com/glayzzle/php-parser/issues/77
if (
result.falseExpr &&
result.falseExpr.kind === "retif" &&
!result.falseExpr.parenthesizedExpression
) {
buffer = result.falseExpr;
result.falseExpr = buffer.test;
this.swapLocations(result, result.test, result.falseExpr, parser);
buffer.test = this.resolvePrecedence(result, parser);
this.swapLocations(buffer, buffer.test, buffer.falseExpr, parser);
result = buffer;
}
} else if (result.kind === "assign") {
// https://github.com/glayzzle/php-parser/issues/81
if (
result.right &&
result.right.kind === "bin" &&
!result.right.parenthesizedExpression
) {
lLevel = AST.precedence["="];
rLevel = AST.precedence[result.right.type];
// only shifts with and, xor, or
if (lLevel && rLevel && rLevel < lLevel) {
buffer = result.right;
result.right = result.right.left;
buffer.left = result;
this.swapLocations(buffer, buffer.left, result.right, parser);
result = buffer;
}
}
} else if (
result.kind === "silent" &&
result.expr.right &&
!result.expr.parenthesizedExpression
) {
// overall least precedence
buffer = result.expr;
result.expr = buffer.left;
buffer.left = result;
this.swapLocations(buffer, buffer.left, buffer.right, parser);
result = buffer;
}
return result;
};
/**
* Prepares an AST node
* @param {String|null} kind - Defines the node type
* (if null, the kind must be passed at the function call)
* @param {Parser} parser - The parser instance (use for extracting locations)
* @return {Function}
*/
AST.prototype.prepare = function(kind, docs, parser) {
let start = null;
if (this.withPositions || this.withSource) {
start = this.position(parser);
}
const self = this;
// returns the node
const result = function() {
let location = null;
const args = Array.prototype.slice.call(arguments);
args.push(docs);
if (typeof result.preBuild === "function") {
result.preBuild(arguments);
}
if (self.withPositions || self.withSource) {
let src = null;
if (self.withSource) {
src = parser.lexer._input.substring(start.offset, parser.prev[2]);
}
if (self.withPositions) {
location = new Location(
src,
start,
new Position(parser.prev[0], parser.prev[1], parser.prev[2])
);
} else {
location = new Location(src, null, null);
}
// last argument is always the location
args.push(location);
}
// handle lazy kind definitions
if (!kind) {
kind = args.shift();
}
// build the object
const node = self[kind];
if (typeof node !== "function") {
throw new Error('Undefined node "' + kind + '"');
}
const astNode = Object.create(node.prototype);
node.apply(astNode, args);
result.instance = astNode;
if (result.trailingComments) {
// buffer of trailingComments
astNode.trailingComments = result.trailingComments;
}
if (typeof result.postBuild === "function") {
result.postBuild(astNode);
}
if (parser.debug) {
delete AST.stack[result.stackUid];
}
return self.resolvePrecedence(astNode, parser);
};
if (parser.debug) {
if (!AST.stack) {
AST.stack = {};
AST.stackUid = 1;
}
AST.stack[++AST.stackUid] = {
position: start,
stack: new Error().stack.split("\n").slice(3, 5)
};
result.stackUid = AST.stackUid;
}
/**
* Helper to change a node kind
* @param {String} newKind
*/
result.setKind = function(newKind) {
kind = newKind;
};
/**
* Sets a list of trailing comments
* @param {*} docs
*/
result.setTrailingComments = function(docs) {
if (result.instance) {
// already created
result.instance.setTrailingComments(docs);
} else {
result.trailingComments = docs;
}
};
/**
* Release a node without using it on the AST
*/
result.destroy = function(target) {
if (docs) {
// release current docs stack
if (target) {
if (!target.leadingComments) {
target.leadingComments = docs;
} else {
target.leadingComments = docs.concat(target.leadingComments);
}
} else {
parser._docIndex = parser._docs.length - docs.length;
}
}
if (parser.debug) {
delete AST.stack[result.stackUid];
}
};
return result;
};
AST.prototype.checkNodes = function() {
const errors = [];
for (const k in AST.stack) {
if (AST.stack.hasOwnProperty(k)) {
errors.push(AST.stack[k]);
}
}
AST.stack = {};
return errors;
};
// Define all AST nodes
[
require("./ast/array"),
require("./ast/assign"),
require("./ast/bin"),
require("./ast/block"),
require("./ast/boolean"),
require("./ast/break"),
require("./ast/call"),
require("./ast/case"),
require("./ast/cast"),
require("./ast/catch"),
require("./ast/class"),
require("./ast/classconstant"),
require("./ast/classreference"),
require("./ast/clone"),
require("./ast/closure"),
require("./ast/comment"),
require("./ast/commentblock"),
require("./ast/commentline"),
require("./ast/constant"),
require("./ast/constantstatement"),
require("./ast/continue"),
require("./ast/declaration"),
require("./ast/declare"),
require("./ast/declaredirective"),
require("./ast/do"),
require("./ast/echo"),
require("./ast/empty"),
require("./ast/encapsed"),
require("./ast/encapsedpart"),
require("./ast/entry"),
require("./ast/error"),
require("./ast/eval"),
require("./ast/exit"),
require("./ast/expression"),
require("./ast/expressionstatement"),
require("./ast/for"),
require("./ast/foreach"),
require("./ast/function"),
require("./ast/global"),
require("./ast/goto"),
require("./ast/halt"),
require("./ast/identifier"),
require("./ast/if"),
require("./ast/include"),
require("./ast/inline"),
require("./ast/interface"),
require("./ast/isset"),
require("./ast/label"),
require("./ast/list"),
require("./ast/literal"),
require("./ast/lookup"),
require("./ast/magic"),
require("./ast/method"),
require("./ast/namespace"),
require("./ast/new"),
require("./ast/node"),
require("./ast/noop"),
require("./ast/nowdoc"),
require("./ast/number"),
require("./ast/offsetlookup"),
require("./ast/operation"),
require("./ast/parameter"),
require("./ast/parentreference"),
require("./ast/post"),
require("./ast/pre"),
require("./ast/print"),
require("./ast/program"),
require("./ast/property"),
require("./ast/propertylookup"),
require("./ast/propertystatement"),
require("./ast/reference"),
require("./ast/retif"),
require("./ast/return"),
require("./ast/selfreference"),
require("./ast/silent"),
require("./ast/statement"),
require("./ast/static"),
require("./ast/staticvariable"),
require("./ast/staticlookup"),
require("./ast/staticreference"),
require("./ast/string"),
require("./ast/switch"),
require("./ast/throw"),
require("./ast/trait"),
require("./ast/traitalias"),
require("./ast/traitprecedence"),
require("./ast/traituse"),
require("./ast/try"),
require("./ast/typereference"),
require("./ast/unary"),
require("./ast/unset"),
require("./ast/usegroup"),
require("./ast/useitem"),
require("./ast/variable"),
require("./ast/variadic"),
require("./ast/while"),
require("./ast/yield"),
require("./ast/yieldfrom")
].forEach(function(ctor) {
AST.prototype[ctor.kind] = ctor;
});
module.exports = AST;
</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>