3v4l.org

run code in 300+ PHP versions simultaneously
<?php function find_words($in) { // stateful stream functions $len = strlen($in); if ($len === 0) { return array(); // nothing to lex } $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; }; // stateless helper functions $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); }; // lexer states do action and return next lexer state $out = array(); $find_word = null; // cyclic dependency, declare first and pass by reference to dependents $upr_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; }; $std_word = function() use (&$out, &$char, $next, $lower, &$find_word) { $word = $char; while ($next() && $lower($char)) { $word .= $char; } $out[] = $word; return $find_word; }; $num_word = function() use (&$out, &$char, $next, $num, &$find_word) { $word = $char; while ($next() && $num($char)) { $word .= $char; } $out[] = $word; return $find_word; }; $find_word = function () use (&$char, $alpha_num, $upper, $lower, $next, $peek, $std_word, $upr_word, $num_word) { // consume all non-alphanumeric characters while (!$alpha_num($char)) { if (!$next()) { return null; // nothing left } } if ($upper($char)) { if ($upper($peek())) { // uppercase word return $upr_word; } return $std_word; // capitalized word } if ($lower($char)) { return $std_word; // lowercase word } return $num_word; // number }; // churn through states $state = $find_word; while ($state !== null) { $state = $state(); } return $out; } $samples = array( 'FooBar123', 'FooBAR123', 'FOOBar123', 'foo_bar_123_Baz', 'FOO_bar_123BAZ', 'FOO_Bar_123baz', 'foo_BAR_123_baz', 'foo_Bar_123_Baz', 'Foo_bar_123_BAZ', ); print_r(array_map(function ($name) { return array( 'name' => $name, 'words' => find_words($name), ); }, $samples));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/DDZ7l
function name:  (null)
number of ops:  10
compiled vars:  !0 = $samples
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   99     0  E >   ASSIGN                                                   !0, <array>
  113     1        INIT_FCALL                                               'print_r'
          2        INIT_FCALL                                               'array_map'
          3        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A113%24b'
  118     4        SEND_VAL                                                 ~2
          5        SEND_VAR                                                 !0
          6        DO_ICALL                                         $3      
          7        SEND_VAR                                                 $3
          8        DO_ICALL                                                 
          9      > RETURN                                                   1

Function find_words:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 6
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 74
Branch analysis from position: 74
2 jumps found. (Code = 44) Position 1 = 76, Position 2 = 71
Branch analysis from position: 76
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 71
2 jumps found. (Code = 44) Position 1 = 76, Position 2 = 71
Branch analysis from position: 76
Branch analysis from position: 71
filename:       /in/DDZ7l
function name:  find_words
number of ops:  78
compiled vars:  !0 = $in, !1 = $len, !2 = $pos, !3 = $char, !4 = $peek, !5 = $next, !6 = $upper, !7 = $lower, !8 = $alpha, !9 = $num, !10 = $alpha_num, !11 = $out, !12 = $find_word, !13 = $upr_word, !14 = $std_word, !15 = $num_word, !16 = $state
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
    6     1        STRLEN                                           ~17     !0
          2        ASSIGN                                                   !1, ~17
    7     3        IS_IDENTICAL                                             !1, 0
          4      > JMPZ                                                     ~19, ->6
    8     5    > > RETURN                                                   <array>
   10     6    >   ASSIGN                                                   !2, 0
   11     7        FETCH_DIM_R                                      ~21     !0, 0
          8        ASSIGN                                                   !3, ~21
   12     9        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A12%240'
         10        BIND_LEXICAL                                             ~23, !0
         11        BIND_LEXICAL                                             ~23, !2
         12        BIND_LEXICAL                                             ~23, !1
         13        ASSIGN                                                   !4, ~23
   18    14        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A18%241'
         15        BIND_LEXICAL                                             ~25, !4
         16        BIND_LEXICAL                                             ~25, !2
         17        BIND_LEXICAL                                             ~25, !3
         18        ASSIGN                                                   !5, ~25
   25    19        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A25%242'
         20        ASSIGN                                                   !6, ~27
   28    21        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A28%243'
         22        ASSIGN                                                   !7, ~29
   31    23        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A31%244'
         24        BIND_LEXICAL                                             ~31, !6
         25        BIND_LEXICAL                                             ~31, !7
         26        ASSIGN                                                   !8, ~31
   34    27        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A34%245'
         28        ASSIGN                                                   !9, ~33
   37    29        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A37%246'
         30        BIND_LEXICAL                                             ~35, !8
         31        BIND_LEXICAL                                             ~35, !9
         32        ASSIGN                                                   !10, ~35
   42    33        ASSIGN                                                   !11, <array>
   43    34        ASSIGN                                                   !12, null
   44    35        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A44%247'
         36        BIND_LEXICAL                                             ~39, !11
         37        BIND_LEXICAL                                             ~39, !3
         38        BIND_LEXICAL                                             ~39, !5
         39        BIND_LEXICAL                                             ~39, !4
         40        BIND_LEXICAL                                             ~39, !6
         41        BIND_LEXICAL                                             ~39, !7
         42        BIND_LEXICAL                                             ~39, !12
         43        ASSIGN                                                   !13, ~39
   55    44        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A55%248'
         45        BIND_LEXICAL                                             ~41, !11
         46        BIND_LEXICAL                                             ~41, !3
         47        BIND_LEXICAL                                             ~41, !5
         48        BIND_LEXICAL                                             ~41, !7
         49        BIND_LEXICAL                                             ~41, !12
         50        ASSIGN                                                   !14, ~41
   63    51        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A63%249'
         52        BIND_LEXICAL                                             ~43, !11
         53        BIND_LEXICAL                                             ~43, !3
         54        BIND_LEXICAL                                             ~43, !5
         55        BIND_LEXICAL                                             ~43, !9
         56        BIND_LEXICAL                                             ~43, !12
         57        ASSIGN                                                   !15, ~43
   71    58        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FDDZ7l%3A71%24a'
         59        BIND_LEXICAL                                             ~45, !3
         60        BIND_LEXICAL                                             ~45, !10
         61        BIND_LEXICAL                                             ~45, !6
         62        BIND_LEXICAL                                             ~45, !7
         63        BIND_LEXICAL                                             ~45, !5
         64        BIND_LEXICAL                                             ~45, !4
         65        BIND_LEXICAL                                             ~45, !14
         66        BIND_LEXICAL                                             ~45, !13
         67        BIND_LEXICAL                                             ~45, !15
         68        ASSIGN                                                   !12, ~45
   91    69        ASSIGN                                                   !16, !12
   92    70      > JMP                                                      ->74
   93    71    >   INIT_DYNAMIC_CALL                                        !16
         72        DO_FCALL                                      0  $48     
         73        ASSIGN                                                   !16, $48
   92    74    >   TYPE_CHECK                                  1020          !16
         75      > JMPNZ                                                    ~50, ->71
   95    76    > > RETURN                                                   !11
   96    77*     > RETURN                                                   null

End of function find_words

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A12%240:
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/DDZ7l
function name:  {closure}
number of ops:  11
compiled vars:  !0 = $in, !1 = $pos, !2 = $len
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   12     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   13     3        ADD                                              ~3      !1, 1
          4        IS_SMALLER_OR_EQUAL                                      !2, ~3
          5      > JMPZ                                                     ~4, ->7
   14     6    > > RETURN                                                   null
   16     7    >   ADD                                              ~5      !1, 1
          8        FETCH_DIM_R                                      ~6      !0, ~5
          9      > RETURN                                                   ~6
   17    10*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A12%240

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

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A18%241

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A25%242:
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/DDZ7l
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   25     0  E >   RECV                                             !0      
   26     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
   27     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A25%242

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A28%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/DDZ7l
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   28     0  E >   RECV                                             !0      
   29     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
   30     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A28%243

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A31%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/DDZ7l
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $c, !1 = $upper, !2 = $lower
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   31     0  E >   RECV                                             !0      
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   32     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
   33    12*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A31%244

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A34%245:
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/DDZ7l
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   34     0  E >   RECV                                             !0      
   35     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
   36     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A34%245

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A37%246:
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/DDZ7l
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $c, !1 = $alpha, !2 = $num
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   37     0  E >   RECV                                             !0      
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
   38     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
   39    12*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A37%246

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A44%247:
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/DDZ7l
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
-------------------------------------------------------------------------------------
   44     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
   45     7        ASSIGN                                                   !7, !1
   46     8      > JMP                                                      ->17
   47     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
   48    15    > > JMP                                                      ->25
   50    16    >   ASSIGN_OP                                     8          !7, !1
   46    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
   52    25    >   ASSIGN_DIM                                               !0
         26        OP_DATA                                                  !7
   53    27      > RETURN                                                   !6
   54    28*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A44%247

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A55%248:
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/DDZ7l
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
-------------------------------------------------------------------------------------
   55     0  E >   BIND_STATIC                                              !0
          1        BIND_STATIC                                              !1
          2        BIND_STATIC                                              !2
          3        BIND_STATIC                                              !3
          4        BIND_STATIC                                              !4
   56     5        ASSIGN                                                   !5, !1
   57     6      > JMP                                                      ->8
   58     7    >   ASSIGN_OP                                     8          !5, !1
   57     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                                                    ~9, ->7
   60    16    >   ASSIGN_DIM                                               !0
         17        OP_DATA                                                  !5
   61    18      > RETURN                                                   !4
   62    19*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A55%248

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A63%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/DDZ7l
function name:  {closure}
number of ops:  20
compiled vars:  !0 = $out, !1 = $char, !2 = $next, !3 = $num, !4 = $find_word, !5 = $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
   64     5        ASSIGN                                                   !5, !1
   65     6      > JMP                                                      ->8
   66     7    >   ASSIGN_OP                                     8          !5, !1
   65     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                                                    ~9, ->7
   68    16    >   ASSIGN_DIM                                               !0
         17        OP_DATA                                                  !5
   69    18      > RETURN                                                   !4
   70    19*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A63%249

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A71%24a:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 15
Branch analysis from position: 15
2 jumps found. (Code = 44) Position 1 = 20, Position 2 = 10
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 32
Branch analysis from position: 24
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 31
Branch analysis from position: 30
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 32
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: 10
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 15
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 15
filename:       /in/DDZ7l
function name:  {closure}
number of ops:  39
compiled vars:  !0 = $char, !1 = $alpha_num, !2 = $upper, !3 = $lower, !4 = $next, !5 = $peek, !6 = $std_word, !7 = $upr_word, !8 = $num_word
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   71     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
   73     9      > JMP                                                      ->15
   74    10    >   INIT_DYNAMIC_CALL                                        !4
         11        DO_FCALL                                      0  $9      
         12        BOOL_NOT                                         ~10     $9
         13      > JMPZ                                                     ~10, ->15
   75    14    > > RETURN                                                   null
   73    15    >   INIT_DYNAMIC_CALL                                        !1
         16        SEND_VAR_EX                                              !0
         17        DO_FCALL                                      0  $11     
         18        BOOL_NOT                                         ~12     $11
         19      > JMPNZ                                                    ~12, ->10
   78    20    >   INIT_DYNAMIC_CALL                                        !2
         21        SEND_VAR_EX                                              !0
         22        DO_FCALL                                      0  $13     
         23      > JMPZ                                                     $13, ->32
   79    24    >   INIT_DYNAMIC_CALL                                        !2
         25        INIT_DYNAMIC_CALL                                        !5
         26        DO_FCALL                                      0  $14     
         27        SEND_VAR_NO_REF_EX                                       $14
         28        DO_FCALL                                      0  $15     
         29      > JMPZ                                                     $15, ->31
   80    30    > > RETURN                                                   !7
   82    31    > > RETURN                                                   !6
   84    32    >   INIT_DYNAMIC_CALL                                        !3
         33        SEND_VAR_EX                                              !0
         34        DO_FCALL                                      0  $16     
         35      > JMPZ                                                     $16, ->37
   85    36    > > RETURN                                                   !6
   87    37    > > RETURN                                                   !8
   88    38*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A71%24a

Function %00%7Bclosure%7D%2Fin%2FDDZ7l%3A113%24b:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/DDZ7l
function name:  {closure}
number of ops:  8
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  113     0  E >   RECV                                             !0      
  115     1        INIT_ARRAY                                       ~1      !0, 'name'
  116     2        INIT_FCALL                                               'find_words'
          3        SEND_VAR                                                 !0
          4        DO_FCALL   

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
159.21 ms | 1431 KiB | 18 Q