3v4l.org

run code in 300+ PHP versions simultaneously
<?php function do_split($name) { return preg_split('/([A-Z]{2,}|([A-Z][^A-Z]*))/', $name, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); } function convert_case($name) { return implode( '_', array_map( 'strtolower', do_split($name) ) ); } function convert_case2($in) { $len = strlen($in); if ($len < 2) { return strtolower($in); } // no state $upper = function ($c) { return 'A' <= $c && $c <= 'Z'; }; $lower = function ($c) { return 'a' <= $c && $c <= 'z'; }; $alpha = function ($c) use ($upper, $lower) { return $upper($c) || $lower($c); }; $num = function ($c) { return '0' <= $c && $c <= '9'; }; $alpha_num = function ($c) use ($alpha, $num) { return $alpha($c) || $num($c); }; // stream state $pos = 0; $char = $in[0]; $peek = function() use ($in, &$pos, $len) { if ($pos+1 >= $len) { return null; } return $in[$pos+1]; }; $next = function() use ($peek, &$pos, &$char) { $char = $peek(); $pos++; return $char !== null; }; // lex state $out = array(); $upper_word = null; $lower_word = null; $cap_word = null; $num_word = null; $find_word = function () use (&$char, $alpha_num, $lower, $upper, $next, $peek, &$lower_word, &$upper_word, &$cap_word, &$num_word) { while (!$alpha_num($char)) { if (!$next()) { return null; } } if ($lower($char)) { return $lower_word; } if ($upper($char)) { if ($upper($peek())) { // uppercase word return $upper_word; } return $cap_word; // capitalized word } return $num_word; }; $upper_word = function() use (&$out, &$char, $next, $peek, $upper, $lower, $find_word) { $word = $char; while ($next() && $upper($char)) { if ($lower($peek())) { // start of capitalized word (e.g. FOOBar at B) break; } $word .= $char; } $out[] = $word; return $find_word; }; $lower_word = function() use (&$out, &$char, $next, $lower, $find_word) { $word = $char; while ($next() && $lower($char)) { $word .= $char; } $out[] = $word; return $find_word; }; $cap_word = $lower_word; $state = $find_word; while ($state !== null) { $state = $state(); } return strtolower(implode('_', $out)); } convert_case2('FooBARbar0123'); $samples = array( 'FooBar', 'FooBAR', 'FOOBar', 'foo_bar', 'FOO_bar', 'FOO_Bar', 'foo_BAR', 'foo_Bar', 'Foo_bar', ); print_r(array_map(function ($name) { return array( 'name' => $name, 'converted' => convert_case2($name), // 'converted' => convert_case($name), ); }, $samples));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JJSvR
function name:  (null)
number of ops:  13
compiled vars:  !0 = $samples
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  109     0  E >   INIT_FCALL                                               'convert_case2'
          1        SEND_VAL                                                 'FooBARbar0123'
          2        DO_FCALL                                      0          
  111     3        ASSIGN                                                   !0, <array>
  125     4        INIT_FCALL                                               'print_r'
          5        INIT_FCALL                                               'array_map'
          6        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A125%24a'
  131     7        SEND_VAL                                                 ~3
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $4      
         10        SEND_VAR                                                 $4
         11        DO_ICALL                                                 
         12      > RETURN                                                   1

Function do_split:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JJSvR
function name:  do_split
number of ops:  9
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        INIT_FCALL                                               'preg_split'
          2        SEND_VAL                                                 '%2F%28%5BA-Z%5D%7B2%2C%7D%7C%28%5BA-Z%5D%5B%5EA-Z%5D%2A%29%29%2F'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 null
          5        SEND_VAL                                                 3
          6        DO_ICALL                                         $1      
          7      > RETURN                                                   $1
    5     8*     > RETURN                                                   null

End of function do_split

Function convert_case:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JJSvR
function name:  convert_case
number of ops:  14
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   RECV                                             !0      
    8     1        INIT_FCALL                                               'implode'
    9     2        SEND_VAL                                                 '_'
   10     3        INIT_FCALL                                               'array_map'
   11     4        SEND_VAL                                                 'strtolower'
   12     5        INIT_FCALL                                               'do_split'
          6        SEND_VAR                                                 !0
          7        DO_FCALL                                      0  $1      
          8        SEND_VAR                                                 $1
          9        DO_ICALL                                         $2      
         10        SEND_VAR                                                 $2
         11        DO_ICALL                                         $3      
         12      > RETURN                                                   $3
   15    13*     > RETURN                                                   null

End of function convert_case

Function convert_case2:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 9
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 75
Branch analysis from position: 75
2 jumps found. (Code = 44) Position 1 = 77, Position 2 = 72
Branch analysis from position: 77
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 72
2 jumps found. (Code = 44) Position 1 = 77, Position 2 = 72
Branch analysis from position: 77
Branch analysis from position: 72
filename:       /in/JJSvR
function name:  convert_case2
number of ops:  86
compiled vars:  !0 = $in, !1 = $len, !2 = $upper, !3 = $lower, !4 = $alpha, !5 = $num, !6 = $alpha_num, !7 = $pos, !8 = $char, !9 = $peek, !10 = $next, !11 = $out, !12 = $upper_word, !13 = $lower_word, !14 = $cap_word, !15 = $num_word, !16 = $find_word, !17 = $state
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   RECV                                             !0      
   18     1        STRLEN                                           ~18     !0
          2        ASSIGN                                                   !1, ~18
   19     3        IS_SMALLER                                               !1, 2
          4      > JMPZ                                                     ~20, ->9
   20     5    >   INIT_FCALL                                               'strtolower'
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $21     
          8      > RETURN                                                   $21
   24     9    >   DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A24%240'
         10        ASSIGN                                                   !2, ~22
   27    11        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A27%241'
         12        ASSIGN                                                   !3, ~24
   30    13        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A30%242'
         14        BIND_LEXICAL                                             ~26, !2
         15        BIND_LEXICAL                                             ~26, !3
         16        ASSIGN                                                   !4, ~26
   33    17        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A33%243'
         18        ASSIGN                                                   !5, ~28
   36    19        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A36%244'
         20        BIND_LEXICAL                                             ~30, !4
         21        BIND_LEXICAL                                             ~30, !5
         22        ASSIGN                                                   !6, ~30
   41    23        ASSIGN                                                   !7, 0
   42    24        FETCH_DIM_R                                      ~33     !0, 0
         25        ASSIGN                                                   !8, ~33
   43    26        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A43%245'
         27        BIND_LEXICAL                                             ~35, !0
         28        BIND_LEXICAL                                             ~35, !7
         29        BIND_LEXICAL                                             ~35, !1
         30        ASSIGN                                                   !9, ~35
   49    31        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A49%246'
         32        BIND_LEXICAL                                             ~37, !9
         33        BIND_LEXICAL                                             ~37, !7
         34        BIND_LEXICAL                                             ~37, !8
         35        ASSIGN                                                   !10, ~37
   56    36        ASSIGN                                                   !11, <array>
   58    37        ASSIGN                                                   !12, null
   59    38        ASSIGN                                                   !13, null
   60    39        ASSIGN                                                   !14, null
   61    40        ASSIGN                                                   !15, null
   63    41        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A63%247'
         42        BIND_LEXICAL                                             ~44, !8
         43        BIND_LEXICAL                                             ~44, !6
         44        BIND_LEXICAL                                             ~44, !3
         45        BIND_LEXICAL                                             ~44, !2
         46        BIND_LEXICAL                                             ~44, !10
         47        BIND_LEXICAL                                             ~44, !9
         48        BIND_LEXICAL                                             ~44, !13
         49        BIND_LEXICAL                                             ~44, !12
         50        BIND_LEXICAL                                             ~44, !14
         51        BIND_LEXICAL                                             ~44, !15
         52        ASSIGN                                                   !16, ~44
   81    53        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A81%248'
         54        BIND_LEXICAL                                             ~46, !11
         55        BIND_LEXICAL                                             ~46, !8
         56        BIND_LEXICAL                                             ~46, !10
         57        BIND_LEXICAL                                             ~46, !9
         58        BIND_LEXICAL                                             ~46, !2
         59        BIND_LEXICAL                                             ~46, !3
         60        BIND_LEXICAL                                             ~46, !16
         61        ASSIGN                                                   !12, ~46
   92    62        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FJJSvR%3A92%249'
         63        BIND_LEXICAL                                             ~48, !11
         64        BIND_LEXICAL                                             ~48, !8
         65        BIND_LEXICAL                                             ~48, !10
         66        BIND_LEXICAL                                             ~48, !3
         67        BIND_LEXICAL                                             ~48, !16
         68        ASSIGN                                                   !13, ~48
  100    69        ASSIGN                                                   !14, !13
  102    70        ASSIGN                                                   !17, !16
  103    71      > JMP                                                      ->75
  104    72    >   INIT_DYNAMIC_CALL                                        !17
         73        DO_FCALL                                      0  $52     
         74        ASSIGN                                                   !17, $52
  103    75    >   TYPE_CHECK                                  1020          !17
         76      > JMPNZ                                                    ~54, ->72
  106    77    >   INIT_FCALL                                               'strtolower'
         78        INIT_FCALL                                               'implode'
         79        SEND_VAL                                                 '_'
         80        SEND_VAR                                                 !11
         81        DO_ICALL                                         $55     
         82        SEND_VAR                                                 $55
         83        DO_ICALL                                         $56     
         84      > RETURN                                                   $56
  107    85*     > RETURN                                                   null

End of function convert_case2

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A24%240:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
filename:       /in/JJSvR
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   RECV                                             !0      
   25     1        IS_SMALLER_OR_EQUAL                              ~1      'A', !0
          2      > JMPZ_EX                                          ~1      ~1, ->5
          3    >   IS_SMALLER_OR_EQUAL                              ~2      !0, 'Z'
          4        BOOL                                             ~1      ~2
          5    > > RETURN                                                   ~1
   26     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A24%240

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A27%241:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
filename:       /in/JJSvR
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   27     0  E >   RECV                                             !0      
   28     1        IS_SMALLER_OR_EQUAL                              ~1      'a', !0
          2      > JMPZ_EX                                          ~1      ~1, ->5
          3    >   IS_SMALLER_OR_EQUAL                              ~2      !0, 'z'
          4        BOOL                                             ~1      ~2
          5    > > RETURN                                                   ~1
   29     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A27%241

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A30%242:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 7, Position 2 = 11
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/JJSvR
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $c, !1 = $upper, !2 = $lower
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   30     0  E >   RECV                                             !0      
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   31     3        INIT_DYNAMIC_CALL                                        !1
          4        SEND_VAR_EX                                              !0
          5        DO_FCALL                                      0  $3      
          6      > JMPNZ_EX                                         ~4      $3, ->11
          7    >   INIT_DYNAMIC_CALL                                        !2
          8        SEND_VAR_EX                                              !0
          9        DO_FCALL                                      0  $5      
         10        BOOL                                             ~4      $5
         11    > > RETURN                                                   ~4
   32    12*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A30%242

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A33%243:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
filename:       /in/JJSvR
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   33     0  E >   RECV                                             !0      
   34     1        IS_SMALLER_OR_EQUAL                              ~1      '0', !0
          2      > JMPZ_EX                                          ~1      ~1, ->5
          3    >   IS_SMALLER_OR_EQUAL                              ~2      !0, '9'
          4        BOOL                                             ~1      ~2
          5    > > RETURN                                                   ~1
   35     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A33%243

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A36%244:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 7, Position 2 = 11
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/JJSvR
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $c, !1 = $alpha, !2 = $num
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   36     0  E >   RECV                                             !0      
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   37     3        INIT_DYNAMIC_CALL                                        !1
          4        SEND_VAR_EX                                              !0
          5        DO_FCALL                                      0  $3      
          6      > JMPNZ_EX                                         ~4      $3, ->11
          7    >   INIT_DYNAMIC_CALL                                        !2
          8        SEND_VAR_EX                                              !0
          9        DO_FCALL                                      0  $5      
         10        BOOL                                             ~4      $5
         11    > > RETURN                                                   ~4
   38    12*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A36%244

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A43%245:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 7
Branch analysis from position: 6
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JJSvR
function name:  {closure}
number of ops:  11
compiled vars:  !0 = $in, !1 = $pos, !2 = $len
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   43     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   44     3        ADD                                              ~3      !1, 1
          4        IS_SMALLER_OR_EQUAL                                      !2, ~3
          5      > JMPZ                                                     ~4, ->7
   45     6    > > RETURN                                                   null
   47     7    >   ADD                                              ~5      !1, 1
          8        FETCH_DIM_R                                      ~6      !0, ~5
          9      > RETURN                                                   ~6
   48    10*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A43%245

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A49%246:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JJSvR
function name:  {closure}
number of ops:  10
compiled vars:  !0 = $peek, !1 = $pos, !2 = $char
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   49     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   50     3        INIT_DYNAMIC_CALL                                        !0
          4        DO_FCALL                                      0  $3      
          5        ASSIGN                                                   !2, $3
   51     6        PRE_INC                                                  !1
   52     7        TYPE_CHECK                                  1020  ~6      !2
          8      > RETURN                                                   ~6
   53     9*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A49%246

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A63%247:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
2 jumps found. (Code = 44) Position 1 = 21, Position 2 = 11
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 25, Position 2 = 26
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 38
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 36, Position 2 = 37
Branch analysis from position: 36
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 16
Branch analysis from position: 15
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
filename:       /in/JJSvR
function name:  {closure}
number of ops:  40
compiled vars:  !0 = $char, !1 = $alpha_num, !2 = $lower, !3 = $upper, !4 = $next, !5 = $peek, !6 = $lower_word, !7 = $upper_word, !8 = $cap_word, !9 = $num_word
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
          3        BIND_STATIC                                              !3
          4        BIND_STATIC                                              !4
          5        BIND_STATIC                                              !5
          6        BIND_STATIC                                              !6
          7        BIND_STATIC                                              !7
          8        BIND_STATIC                                              !8
          9        BIND_STATIC                                              !9
   64    10      > JMP                                                      ->16
   65    11    >   INIT_DYNAMIC_CALL                                        !4
         12        DO_FCALL                                      0  $10     
         13        BOOL_NOT                                         ~11     $10
         14      > JMPZ                                                     ~11, ->16
   66    15    > > RETURN                                                   null
   64    16    >   INIT_DYNAMIC_CALL                                        !1
         17        SEND_VAR_EX                                              !0
         18        DO_FCALL                                      0  $12     
         19        BOOL_NOT                                         ~13     $12
         20      > JMPNZ                                                    ~13, ->11
   69    21    >   INIT_DYNAMIC_CALL                                        !2
         22        SEND_VAR_EX                                              !0
         23        DO_FCALL                                      0  $14     
         24      > JMPZ                                                     $14, ->26
   70    25    > > RETURN                                                   !6
   72    26    >   INIT_DYNAMIC_CALL                                        !3
         27        SEND_VAR_EX                                              !0
         28        DO_FCALL                                      0  $15     
         29      > JMPZ                                                     $15, ->38
   73    30    >   INIT_DYNAMIC_CALL                                        !3
         31        INIT_DYNAMIC_CALL                                        !5
         32        DO_FCALL                                      0  $16     
         33        SEND_VAR_NO_REF_EX                                       $16
         34        DO_FCALL                                      0  $17     
         35      > JMPZ                                                     $17, ->37
   74    36    > > RETURN                                                   !7
   76    37    > > RETURN                                                   !8
   78    38    > > RETURN                                                   !9
   79    39*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A63%247

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A81%248:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
2 jumps found. (Code = 46) Position 1 = 20, Position 2 = 24
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 25, Position 2 = 9
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 16
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 16
2 jumps found. (Code = 46) Position 1 = 20, Position 2 = 24
Branch analysis from position: 20
Branch analysis from position: 24
Branch analysis from position: 24
filename:       /in/JJSvR
function name:  {closure}
number of ops:  29
compiled vars:  !0 = $out, !1 = $char, !2 = $next, !3 = $peek, !4 = $upper, !5 = $lower, !6 = $find_word, !7 = $word
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   81     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
          3        BIND_STATIC                                              !3
          4        BIND_STATIC                                              !4
          5        BIND_STATIC                                              !5
          6        BIND_STATIC                                              !6
   82     7        ASSIGN                                                   !7, !1
   83     8      > JMP                                                      ->17
   84     9    >   INIT_DYNAMIC_CALL                                        !5
         10        INIT_DYNAMIC_CALL                                        !3
         11        DO_FCALL                                      0  $9      
         12        SEND_VAR_NO_REF_EX                                       $9
         13        DO_FCALL                                      0  $10     
         14      > JMPZ                                                     $10, ->16
   85    15    > > JMP                                                      ->25
   87    16    >   ASSIGN_OP                                     8          !7, !1
   83    17    >   INIT_DYNAMIC_CALL                                        !2
         18        DO_FCALL                                      0  $12     
         19      > JMPZ_EX                                          ~13     $12, ->24
         20    >   INIT_DYNAMIC_CALL                                        !4
         21        SEND_VAR_EX                                              !1
         22        DO_FCALL                                      0  $14     
         23        BOOL                                             ~13     $14
         24    > > JMPNZ                                                    ~13, ->9
   89    25    >   ASSIGN_DIM                                               !0
         26        OP_DATA                                                  !7
   90    27      > RETURN                                                   !6
   91    28*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FJJSvR%3A81%248

Function %00%7Bclosure%7D%2Fin%2FJJSvR%3A92%249:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
2 jumps found. (Code = 46) Position 1 = 11, Position 2 = 15
Branch analysis from position: 11
2 jumps found. (Code = 44) Position 1 = 16, Position 2 = 7
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
2 jumps found. (Code = 46) Position 1 = 11, Position 2 = 15
Branch analysis from position: 11
Branch analysis from position: 15
Branch analysis from position: 15
filename:       /in/JJSvR
function name:  {closure}
number of ops:  20
compiled vars:  !0 = $out, !1 = $char, !2 = $next, !3 = $lower, !4 = $find_word, !5 = $word
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   92     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
          3        BIND_STATIC                                              !3
          4        BIND_STATIC                                              !4
   93     5        ASSIGN                                                   !5, !1
   94     6      > JMP                                                      ->8
   95     7    >   ASSIGN_OP                                     8          !5, !1
   94     8    >   INIT_DYNAMIC_CALL                                        !2
          9        DO_FCALL                                      0  $8      
         10      > JMPZ_EX                                          ~9      $8, ->15
         11    >   INIT_DYNAMIC_CALL                                        !3
         12        SEND_VAR_EX                                              !1
         13        DO_FCALL                                      0  $10     
         14        BOOL                                             ~9      $10
         15    > > JMPNZ                        

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
146.76 ms | 1431 KiB | 25 Q