github.com/benhoyt/goawk@v1.8.1/testdata/T.recache (about)

     1  echo T.recache: test re cache in b.c
     2  	# thanks to ross ridge for this horror
     3  
     4  awk=${awk-../a.out}
     5  
     6  echo b >foo1
     7  $awk '
     8  BEGIN {
     9          #
    10          # Fill up DFA cache with run-time REs that have all been
    11          # used twice.
    12          #
    13          CACHE_SIZE=64
    14          for(i = 0; i < CACHE_SIZE; i++) {
    15                  for(j = 0; j < 2; j++) {
    16                          "" ~ i "";
    17                  }
    18          }
    19          #
    20          # Now evalutate an expression that uses two run-time REs
    21          # that have never been used before.  The second RE will
    22          # push the first out of the cache while the first RE is 
    23          # still needed.
    24          #
    25          x = "a"
    26          reg1 = "[Aa]"
    27          reg2 = "A"
    28          sub(reg1, x ~ reg2 ? "B" : "b", x)
    29  
    30          print x
    31  }
    32  ' >foo2
    33  diff foo1 foo2 || echo 'BAD: T.recache'