package pfff

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file token_helpers_php.ml

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
(* Yoann Padioleau
 *
 * Copyright (C) 2010 Facebook
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * version 2.1 as published by the Free Software Foundation, with the
 * special exception on linking described in file license.txt.
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the file
 * license.txt for more details.
 *)

open Parser_php
module PI = Parse_info

(*****************************************************************************)
(* Token Helpers *)
(*****************************************************************************)

let is_eof = function
  | EOF _ -> true
  | _ -> false

let is_comment = function
  | T_COMMENT _ | T_DOC_COMMENT _
  | TSpaces _ | TNewline _ -> true
  | TCommentPP _ -> true
  | _ -> false

let is_just_comment = function
  | T_COMMENT _ -> true
  | _ -> false

let token_kind_of_tok t =
  match t with
  | TOBRACE _ -> PI.LBrace
  | TCBRACE _ -> PI.RBrace
  | TOPAR _ | T_LAMBDA_OPAR _ -> PI.LPar
  | TCPAR _ | T_LAMBDA_CPAR _ -> PI.RPar

  | T_COMMENT _ | T_DOC_COMMENT _ | TCommentPP _ -> PI.Esthet PI.Comment
  | TSpaces _ -> PI.Esthet PI.Space
  | TNewline _ -> PI.Esthet PI.Newline

  (* just after a ?>, the newline are not anymore TNewline but that *)
  | T_INLINE_HTML ("\n", _) -> PI.Esthet PI.Newline

  | _ -> PI.Other

(*****************************************************************************)
(* Visitors *)
(*****************************************************************************)

(* Ugly repetitive code but ocamlyacc force us to do it that way.
 * Indeed the ocamlyacc token  cant be a pair of a sum type, it must be
 * directly a sum type. Fortunately most of the code was generated via an
 * emacs macro working on the type definition of token in parser_php.mli
 *)

let info_of_tok = function
  | TUnknown ii -> ii
  | TSpaces ii -> ii
  | TNewline ii -> ii
  | TCommentPP ii -> ii
  | T_LNUMBER (_s, ii) -> ii
  | T_DNUMBER (_s, ii) -> ii
  | T_IDENT (_s, ii) -> ii
  | T_STRING_VARNAME (_s, ii) -> ii
  | T_VARIABLE (_s, ii) -> ii
  | T_NUM_STRING (_s, ii) -> ii
  | T_INLINE_HTML (_s, ii) -> ii
  | T_ENCAPSED_AND_WHITESPACE (_s, ii) -> ii
  | T_CONSTANT_ENCAPSED_STRING (_s, ii) -> ii
  | T_ECHO ii -> ii
  | T_PRINT ii -> ii
  | T_DO ii -> ii
  | T_WHILE ii -> ii
  | T_ENDWHILE ii -> ii
  | T_FOR ii -> ii
  | T_ENDFOR ii -> ii
  | T_FOREACH ii -> ii
  | T_ENDFOREACH ii -> ii
  | T_SWITCH ii -> ii
  | T_ENDSWITCH ii -> ii
  | T_CASE ii -> ii
  | T_DEFAULT ii -> ii
  | T_BREAK ii -> ii
  | T_CONTINUE ii -> ii
  | T_RETURN ii -> ii
  | T_TRY ii -> ii
  | T_CATCH ii -> ii
  | T_FINALLY ii -> ii
  | T_THROW ii -> ii
  | T_DECLARE ii -> ii
  | T_ENDDECLARE ii -> ii
  | T_USE ii -> ii
  | T_GLOBAL ii -> ii
  | T_AS ii -> ii
  | T_SUPER ii -> ii
  | T_FUNCTION ii -> ii
  | T_CONST ii -> ii
  | T_STATIC ii -> ii
  | T_ABSTRACT ii -> ii
  | T_FINAL ii -> ii
  | T_ASYNC ii -> ii
  | T_PRIVATE ii -> ii
  | T_PROTECTED ii -> ii
  | T_PUBLIC ii -> ii
  | T_VAR ii -> ii
  | T_UNSET ii -> ii
  | T_ISSET ii -> ii
  | T_EMPTY ii -> ii
  | T_CLASS ii -> ii
  | T_ENUM ii -> ii
  | T_INTERFACE ii -> ii
  | T_EXTENDS ii -> ii
  | T_IMPLEMENTS ii -> ii
  | T_OBJECT_OPERATOR ii -> ii
  | T_ARROW ii -> ii
  | T_DOUBLE_ARROW ii -> ii
  | T_LIST ii -> ii
  | T_ARRAY ii -> ii
  | T_CLASS_C ii -> ii
  | T_METHOD_C ii -> ii
  | T_FUNC_C ii -> ii
  | T_LINE ii -> ii
  | T_FILE ii -> ii
  | T_DIR ii -> ii
  | T_COMMENT ii -> ii
  | T_DOC_COMMENT ii -> ii
  | T_OPEN_TAG ii -> ii
  | T_OPEN_TAG_WITH_ECHO ii -> ii
  | T_CLOSE_TAG_OF_ECHO ii -> ii
  | T_CLOSE_TAG ii -> ii
  | T_START_HEREDOC ii -> ii
  | T_END_HEREDOC ii -> ii
  | T_DOLLAR_OPEN_CURLY_BRACES ii -> ii
  | T_CURLY_OPEN ii -> ii
  | TCOLCOL ii -> ii
  | T_EXIT ii -> ii
  | T_IF ii -> ii
  | TCOLON ii -> ii
  | TCOMMA ii -> ii
  | TDOT ii -> ii
  | TBANG ii -> ii
  | TTILDE ii -> ii
  | TQUESTION ii -> ii
  | TOBRA ii -> ii
  | TPLUS ii -> ii
  | TMINUS ii -> ii
  | TMUL ii -> ii
  | TDIV ii -> ii
  | TMOD ii -> ii
  | TAND ii -> ii
  | TOR ii -> ii
  | TEQ ii -> ii
  | TSMALLER ii -> ii
  | TGREATER ii -> ii
  | T_PLUS_EQUAL ii -> ii
  | T_MINUS_EQUAL ii -> ii
  | T_MUL_EQUAL ii -> ii
  | T_DIV_EQUAL ii -> ii
  | T_CONCAT_EQUAL ii -> ii
  | T_MOD_EQUAL ii -> ii
  | T_AND_EQUAL ii -> ii
  | T_OR_EQUAL ii -> ii
  | T_XOR_EQUAL ii -> ii
  | T_SL_EQUAL ii -> ii
  | T_SR_EQUAL ii -> ii
  | T_INC ii -> ii
  | T_DEC ii -> ii
  | T_BOOLEAN_OR ii -> ii
  | T_BOOLEAN_AND ii -> ii
  | T_BOOLEAN_PIPE ii -> ii
  | T_LOGICAL_OR ii -> ii
  | T_LOGICAL_AND ii -> ii
  | T_LOGICAL_XOR ii -> ii
  | T_SL ii -> ii
  | T_SR ii -> ii
  | T_IS_SMALLER_OR_EQUAL ii -> ii
  | T_IS_GREATER_OR_EQUAL ii -> ii
  | T_BOOL_CAST ii -> ii
  | T_INT_CAST ii -> ii
  | T_DOUBLE_CAST ii -> ii
  | T_STRING_CAST ii -> ii
  | T_ARRAY_CAST ii -> ii
  | T_OBJECT_CAST ii -> ii
  | T_UNSET_CAST ii -> ii
  | T_IS_IDENTICAL ii -> ii
  | T_IS_NOT_IDENTICAL ii -> ii
  | T_IS_EQUAL ii -> ii
  | T_IS_NOT_EQUAL ii -> ii
  | TXOR ii -> ii
  | T__AT ii -> ii
  | T_NEW ii -> ii
  | T_CLONE ii -> ii
  | T_INSTANCEOF ii -> ii
  | T_INCLUDE ii -> ii
  | T_INCLUDE_ONCE ii -> ii
  | T_REQUIRE ii -> ii
  | T_REQUIRE_ONCE ii -> ii
  | T_EVAL ii -> ii
  | T_ELSE ii -> ii
  | T_ELSEIF ii -> ii
  | T_ENDIF ii -> ii
  | TOPAR ii -> ii
  | TCPAR ii -> ii
  | T_LAMBDA_OPAR ii -> ii
  | T_LAMBDA_CPAR ii -> ii
  | TOBRACE ii -> ii
  | TCBRACE ii -> ii
  | TCBRA ii -> ii
  | TBACKQUOTE ii -> ii
  | TSEMICOLON ii -> ii
  | TDOLLAR ii -> ii
  | TDOLLARDOLLAR ii -> ii
  | TGUIL ii -> ii

  | T_ELLIPSIS (ii) -> ii
  | T_CLASS_XDEBUG (ii) -> ii
  | T_RESOURCE_XDEBUG (ii) -> ii

  | T_XHP_COLONID_DEF (_s, ii) -> ii
  | T_XHP_PERCENTID_DEF (_s, ii) -> ii

  | T_XHP_OPEN_TAG (_xs, ii) -> ii
  | T_XHP_CLOSE_TAG (_xs, ii) -> ii

  | T_XHP_GT (ii) -> ii
  | T_XHP_SLASH_GT (ii) -> ii

  | T_XHP_ATTR (_s, ii) -> ii
  | T_XHP_TEXT (_s, ii) -> ii

  | T_XHP_ATTRIBUTE (ii) -> ii
  | T_XHP_CHILDREN (ii) -> ii
  | T_XHP_CATEGORY (ii) -> ii


  | T_XHP_REQUIRED (ii) -> ii

  | T_XHP_ANY (ii) -> ii
  | T_XHP_PCDATA (ii) -> ii

  | T_YIELD (ii) -> ii
  | T_AWAIT (ii) -> ii
  | T_SELF(ii) -> ii
  | T_PARENT(ii) -> ii

  | T_TRAIT(ii) -> ii
  | T_INSTEADOF(ii) -> ii
  | T_TRAIT_C(ii) -> ii

  | T_TYPE(ii) -> ii
  | T_NEWTYPE(ii) -> ii
  | T_SHAPE(ii) -> ii

  | T_NAMESPACE(ii) -> ii
  | TANTISLASH(ii) -> ii
  | T_NAMESPACE_C(ii) -> ii

  | EOF ii -> ii
  | T_ROCKET ii -> ii

let visitor_info_of_tok f = function
  | TUnknown ii -> TUnknown(f ii)
  | TSpaces ii -> TSpaces(f ii)
  | TNewline ii -> TNewline(f ii)
  | TCommentPP ii -> TCommentPP(f ii)
  | T_LNUMBER (s,ii) -> T_LNUMBER(s, f ii)
  | T_DNUMBER (s,ii) -> T_DNUMBER(s, f ii)
  | T_IDENT (s, ii) -> T_IDENT(s, f ii)
  | T_STRING_VARNAME (s, ii) -> T_STRING_VARNAME(s, f ii)
  | T_VARIABLE (s, ii) -> T_VARIABLE(s, f ii)
  | T_NUM_STRING (s, ii) -> T_NUM_STRING(s, f ii)
  | T_INLINE_HTML (s, ii) -> T_INLINE_HTML(s, f ii)
  | T_ENCAPSED_AND_WHITESPACE (s, ii) -> T_ENCAPSED_AND_WHITESPACE(s, f ii)
  | T_CONSTANT_ENCAPSED_STRING (s,ii) -> T_CONSTANT_ENCAPSED_STRING(s, f ii)
  | T_ECHO ii -> T_ECHO(f ii)
  | T_PRINT ii -> T_PRINT(f ii)
  | T_DO ii -> T_DO(f ii)
  | T_WHILE ii -> T_WHILE(f ii)
  | T_ENDWHILE ii -> T_ENDWHILE(f ii)
  | T_FOR ii -> T_FOR(f ii)
  | T_ENDFOR ii -> T_ENDFOR(f ii)
  | T_FOREACH ii -> T_FOREACH(f ii)
  | T_ENDFOREACH ii -> T_ENDFOREACH(f ii)
  | T_SWITCH ii -> T_SWITCH(f ii)
  | T_ENDSWITCH ii -> T_ENDSWITCH(f ii)
  | T_CASE ii -> T_CASE(f ii)
  | T_DEFAULT ii -> T_DEFAULT(f ii)
  | T_BREAK ii -> T_BREAK(f ii)
  | T_CONTINUE ii -> T_CONTINUE(f ii)
  | T_RETURN ii -> T_RETURN(f ii)
  | T_TRY ii -> T_TRY(f ii)
  | T_CATCH ii -> T_CATCH(f ii)
  | T_FINALLY ii -> T_FINALLY(f ii)
  | T_THROW ii -> T_THROW(f ii)
  | T_DECLARE ii -> T_DECLARE(f ii)
  | T_ENDDECLARE ii -> T_ENDDECLARE(f ii)
  | T_USE ii -> T_USE(f ii)
  | T_GLOBAL ii -> T_GLOBAL(f ii)
  | T_AS ii -> T_AS(f ii)
  | T_SUPER ii -> T_SUPER(f ii)
  | T_FUNCTION ii -> T_FUNCTION(f ii)
  | T_CONST ii -> T_CONST(f ii)
  | T_STATIC ii -> T_STATIC(f ii)
  | T_ABSTRACT ii -> T_ABSTRACT(f ii)
  | T_FINAL ii -> T_FINAL(f ii)
  | T_ASYNC ii -> T_ASYNC(f ii)
  | T_PRIVATE ii -> T_PRIVATE(f ii)
  | T_PROTECTED ii -> T_PROTECTED(f ii)
  | T_PUBLIC ii -> T_PUBLIC(f ii)
  | T_VAR ii -> T_VAR(f ii)
  | T_UNSET ii -> T_UNSET(f ii)
  | T_ISSET ii -> T_ISSET(f ii)
  | T_EMPTY ii -> T_EMPTY(f ii)
  | T_CLASS ii -> T_CLASS(f ii)
  | T_ENUM ii -> T_ENUM(f ii)
  | T_INTERFACE ii -> T_INTERFACE(f ii)
  | T_EXTENDS ii -> T_EXTENDS(f ii)
  | T_IMPLEMENTS ii -> T_IMPLEMENTS(f ii)
  | T_OBJECT_OPERATOR ii -> T_OBJECT_OPERATOR(f ii)
  | T_ARROW ii -> T_ARROW(f ii)
  | T_DOUBLE_ARROW ii -> T_DOUBLE_ARROW(f ii)
  | T_LIST ii -> T_LIST(f ii)
  | T_ARRAY ii -> T_ARRAY(f ii)
  | T_CLASS_C ii -> T_CLASS_C(f ii)
  | T_METHOD_C ii -> T_METHOD_C(f ii)
  | T_FUNC_C ii -> T_FUNC_C(f ii)
  | T_LINE ii -> T_LINE(f ii)
  | T_FILE ii -> T_FILE(f ii)
  | T_DIR ii -> T_DIR (f ii)
  | T_COMMENT ii -> T_COMMENT(f ii)
  | T_DOC_COMMENT ii -> T_DOC_COMMENT(f ii)
  | T_OPEN_TAG ii -> T_OPEN_TAG(f ii)
  | T_OPEN_TAG_WITH_ECHO ii -> T_OPEN_TAG_WITH_ECHO(f ii)
  | T_CLOSE_TAG_OF_ECHO ii -> T_CLOSE_TAG_OF_ECHO(f ii)
  | T_CLOSE_TAG ii -> T_CLOSE_TAG(f ii)
  | T_START_HEREDOC ii -> T_START_HEREDOC(f ii)
  | T_END_HEREDOC ii -> T_END_HEREDOC(f ii)
  | T_DOLLAR_OPEN_CURLY_BRACES ii -> T_DOLLAR_OPEN_CURLY_BRACES(f ii)
  | T_CURLY_OPEN ii -> T_CURLY_OPEN(f ii)
  | TCOLCOL ii -> TCOLCOL (f ii)
  | T_EXIT ii -> T_EXIT(f ii)
  | T_IF ii -> T_IF(f ii)
  | TCOLON ii -> TCOLON(f ii)
  | TCOMMA ii -> TCOMMA(f ii)
  | TDOT ii -> TDOT(f ii)
  | TBANG ii -> TBANG(f ii)
  | TTILDE ii -> TTILDE(f ii)
  | TQUESTION ii -> TQUESTION(f ii)
  | TOBRA ii -> TOBRA(f ii)
  | TPLUS ii -> TPLUS(f ii)
  | TMINUS ii -> TMINUS(f ii)
  | TMUL ii -> TMUL(f ii)
  | TDIV ii -> TDIV(f ii)
  | TMOD ii -> TMOD(f ii)
  | TAND ii -> TAND(f ii)
  | TOR ii -> TOR(f ii)
  | TEQ ii -> TEQ(f ii)
  | TSMALLER ii -> TSMALLER(f ii)
  | TGREATER ii -> TGREATER(f ii)
  | T_PLUS_EQUAL ii -> T_PLUS_EQUAL(f ii)
  | T_MINUS_EQUAL ii -> T_MINUS_EQUAL(f ii)
  | T_MUL_EQUAL ii -> T_MUL_EQUAL(f ii)
  | T_DIV_EQUAL ii -> T_DIV_EQUAL(f ii)
  | T_CONCAT_EQUAL ii -> T_CONCAT_EQUAL(f ii)
  | T_MOD_EQUAL ii -> T_MOD_EQUAL(f ii)
  | T_AND_EQUAL ii -> T_AND_EQUAL(f ii)
  | T_OR_EQUAL ii -> T_OR_EQUAL(f ii)
  | T_XOR_EQUAL ii -> T_XOR_EQUAL(f ii)
  | T_SL_EQUAL ii -> T_SL_EQUAL(f ii)
  | T_SR_EQUAL ii -> T_SR_EQUAL(f ii)
  | T_INC ii -> T_INC(f ii)
  | T_DEC ii -> T_DEC(f ii)
  | T_BOOLEAN_OR ii -> T_BOOLEAN_OR(f ii)
  | T_BOOLEAN_AND ii -> T_BOOLEAN_AND(f ii)
  | T_BOOLEAN_PIPE ii -> T_BOOLEAN_PIPE(f ii)
  | T_LOGICAL_OR ii -> T_LOGICAL_OR(f ii)
  | T_LOGICAL_AND ii -> T_LOGICAL_AND(f ii)
  | T_LOGICAL_XOR ii -> T_LOGICAL_XOR(f ii)
  | T_SL ii -> T_SL(f ii)
  | T_SR ii -> T_SR(f ii)
  | T_IS_SMALLER_OR_EQUAL ii -> T_IS_SMALLER_OR_EQUAL(f ii)
  | T_IS_GREATER_OR_EQUAL ii -> T_IS_GREATER_OR_EQUAL(f ii)
  | T_BOOL_CAST ii -> T_BOOL_CAST(f ii)
  | T_INT_CAST ii -> T_INT_CAST(f ii)
  | T_DOUBLE_CAST ii -> T_DOUBLE_CAST(f ii)
  | T_STRING_CAST ii -> T_STRING_CAST(f ii)
  | T_ARRAY_CAST ii -> T_ARRAY_CAST(f ii)
  | T_OBJECT_CAST ii -> T_OBJECT_CAST(f ii)
  | T_UNSET_CAST ii -> T_UNSET_CAST(f ii)
  | T_IS_IDENTICAL ii -> T_IS_IDENTICAL(f ii)
  | T_IS_NOT_IDENTICAL ii -> T_IS_NOT_IDENTICAL(f ii)
  | T_IS_EQUAL ii -> T_IS_EQUAL(f ii)
  | T_IS_NOT_EQUAL ii -> T_IS_NOT_EQUAL(f ii)
  | TXOR ii -> TXOR(f ii)
  | T__AT ii -> T__AT(f ii)
  | T_NEW ii -> T_NEW(f ii)
  | T_CLONE ii -> T_CLONE(f ii)
  | T_INSTANCEOF ii -> T_INSTANCEOF(f ii)
  | T_INCLUDE ii -> T_INCLUDE(f ii)
  | T_INCLUDE_ONCE ii -> T_INCLUDE_ONCE(f ii)
  | T_REQUIRE ii -> T_REQUIRE(f ii)
  | T_REQUIRE_ONCE ii -> T_REQUIRE_ONCE(f ii)
  | T_EVAL ii -> T_EVAL(f ii)
  | T_ELSE ii -> T_ELSE(f ii)
  | T_ELSEIF ii -> T_ELSEIF(f ii)
  | T_ENDIF ii -> T_ENDIF(f ii)
  | TOPAR ii -> TOPAR(f ii)
  | TCPAR ii -> TCPAR(f ii)
  | T_LAMBDA_OPAR ii -> T_LAMBDA_OPAR(f ii)
  | T_LAMBDA_CPAR ii -> T_LAMBDA_CPAR(f ii)
  | TOBRACE ii -> TOBRACE(f ii)
  | TCBRACE ii -> TCBRACE(f ii)
  | TCBRA ii -> TCBRA(f ii)
  | TBACKQUOTE ii -> TBACKQUOTE(f ii)
  | TSEMICOLON ii -> TSEMICOLON(f ii)
  | TDOLLAR ii -> TDOLLAR(f ii)
  | TDOLLARDOLLAR ii -> TDOLLARDOLLAR(f ii)
  | TGUIL ii -> TGUIL(f ii)

  | T_ELLIPSIS (ii) -> T_ELLIPSIS (f ii)
  | T_CLASS_XDEBUG (ii) -> T_CLASS_XDEBUG (f ii)
  | T_RESOURCE_XDEBUG (ii) -> T_RESOURCE_XDEBUG (f ii)

  | T_XHP_COLONID_DEF (s, ii) -> T_XHP_COLONID_DEF (s, f ii)
  | T_XHP_PERCENTID_DEF (s, ii) -> T_XHP_PERCENTID_DEF (s, f ii)

  | T_XHP_OPEN_TAG (xs, ii) -> T_XHP_OPEN_TAG (xs, f ii)
  | T_XHP_CLOSE_TAG (xs, ii) -> T_XHP_CLOSE_TAG (xs, f ii)

  | T_XHP_GT (ii) -> T_XHP_GT (f ii)
  | T_XHP_SLASH_GT (ii) -> T_XHP_SLASH_GT (f ii)

  | T_XHP_ATTR (s, ii) -> T_XHP_ATTR (s, f ii)
  | T_XHP_TEXT (s, ii) -> T_XHP_TEXT (s, f ii)

  | T_XHP_ATTRIBUTE (ii) -> T_XHP_ATTRIBUTE (f ii)
  | T_XHP_CHILDREN (ii) -> T_XHP_CHILDREN (f ii)
  | T_XHP_CATEGORY (ii) -> T_XHP_CATEGORY (f ii)

  | T_XHP_REQUIRED (ii) -> T_XHP_REQUIRED (f ii)

  | T_XHP_ANY (ii) -> T_XHP_ANY (f ii)
  | T_XHP_PCDATA (ii) -> T_XHP_PCDATA (f ii)

  | T_YIELD (ii) -> T_YIELD (f ii)
  | T_AWAIT (ii) -> T_AWAIT (f ii)
  | T_SELF (ii) -> T_SELF (f ii)
  | T_PARENT (ii) -> T_PARENT (f ii)

  | T_TRAIT(ii) -> T_TRAIT(f ii)
  | T_INSTEADOF(ii) -> T_INSTEADOF(f ii)
  | T_TRAIT_C(ii) -> T_TRAIT_C(f ii)

  | T_TYPE(ii) -> T_TYPE(f ii)
  | T_NEWTYPE(ii) -> T_TYPE(f ii)
  | T_SHAPE(ii) -> T_SHAPE(f ii)

  | T_NAMESPACE(ii) -> T_NAMESPACE(f ii)
  | TANTISLASH(ii) -> TANTISLASH(f ii)
  | T_NAMESPACE_C(ii) -> T_NAMESPACE_C(f ii)

  | EOF ii -> EOF(f ii)
  | T_ROCKET ii -> T_ROCKET(f ii)

(*****************************************************************************)
(* Accessors *)
(*****************************************************************************)

let line_of_tok tok =
  let info = info_of_tok tok in
  PI.line_of_info info
OCaml

Innovation. Community. Security.