1*23f24377SWarner Loshecho T.re: tests of regular expression code 2*23f24377SWarner Losh 3*23f24377SWarner Loshawk ' 4*23f24377SWarner LoshBEGIN { 5*23f24377SWarner Losh FS = "\t" 6*23f24377SWarner Losh awk = "../a.out" 7*23f24377SWarner Losh} 8*23f24377SWarner LoshNF == 0 { 9*23f24377SWarner Losh next 10*23f24377SWarner Losh} 11*23f24377SWarner Losh$1 != "" { # new test 12*23f24377SWarner Losh re = $1 13*23f24377SWarner Losh} 14*23f24377SWarner Losh$2 != "" { # either ~ or !~ 15*23f24377SWarner Losh op = $2 16*23f24377SWarner Losh if (op == "~") 17*23f24377SWarner Losh neg = "!" 18*23f24377SWarner Losh else if (op == "!~") 19*23f24377SWarner Losh neg = "" 20*23f24377SWarner Losh} 21*23f24377SWarner Losh$3 != "" { # new test string 22*23f24377SWarner Losh str = $3 23*23f24377SWarner Losh} 24*23f24377SWarner Losh$3 == "\"\"" { # explicit empty line 25*23f24377SWarner Losh $3 = "" 26*23f24377SWarner Losh} 27*23f24377SWarner LoshNF > 2 { # generate a test 28*23f24377SWarner Losh input = $3 29*23f24377SWarner Losh test = sprintf("./echo '"'"'%s'"'"' | %s '"'"'%s/%s/ {print \"%d fails %s %s %s\"}'"'"'", 30*23f24377SWarner Losh input, awk, neg, re, NR, re, op, input) 31*23f24377SWarner Losh # printf(" %3d %s %s %s:\n", NR, re, op, input) 32*23f24377SWarner Losh # print "test is |" test "|" 33*23f24377SWarner Losh system(test) 34*23f24377SWarner Losh # system("bprint -c ../a.out") 35*23f24377SWarner Losh nt++ 36*23f24377SWarner Losh} 37*23f24377SWarner LoshEND { print " " nt, "tests" } 38*23f24377SWarner Losh' <<\!!!! 39*23f24377SWarner Losh ~ a 40*23f24377SWarner Losh aa 41*23f24377SWarner Losh aaa 42*23f24377SWarner Losh "" 43*23f24377SWarner Losha ~ a 44*23f24377SWarner Losh ba 45*23f24377SWarner Losh bab 46*23f24377SWarner Losh !~ "" 47*23f24377SWarner Losh x 48*23f24377SWarner Losh xxxxx 49*23f24377SWarner Losh= ~ = 50*23f24377SWarner Losh b= 51*23f24377SWarner Losh b=b 52*23f24377SWarner Losh !~ "" 53*23f24377SWarner Losh x 54*23f24377SWarner Losh xxxxx 55*23f24377SWarner Losh. ~ x 56*23f24377SWarner Losh xxx 57*23f24377SWarner Losh !~ "" 58*23f24377SWarner Losh.a ~ xa 59*23f24377SWarner Losh xxa 60*23f24377SWarner Losh xax 61*23f24377SWarner Losh !~ a 62*23f24377SWarner Losh ax 63*23f24377SWarner Losh "" 64*23f24377SWarner Losh$ ~ x 65*23f24377SWarner Losh "" 66*23f24377SWarner Losh.$ ~ x 67*23f24377SWarner Losh xx 68*23f24377SWarner Losh !~ "" 69*23f24377SWarner Losha$ ~ a 70*23f24377SWarner Losh ba 71*23f24377SWarner Losh bbba 72*23f24377SWarner Losh !~ ab 73*23f24377SWarner Losh x 74*23f24377SWarner Losh "" 75*23f24377SWarner Losh^ ~ x 76*23f24377SWarner Losh "" 77*23f24377SWarner Losh ^ 78*23f24377SWarner Losh^a$ ~ a 79*23f24377SWarner Losh !~ xa 80*23f24377SWarner Losh ax 81*23f24377SWarner Losh xax 82*23f24377SWarner Losh "" 83*23f24377SWarner Losh^a.$ ~ ax 84*23f24377SWarner Losh aa 85*23f24377SWarner Losh !~ xa 86*23f24377SWarner Losh aaa 87*23f24377SWarner Losh axy 88*23f24377SWarner Losh "" 89*23f24377SWarner Losh^$ ~ "" 90*23f24377SWarner Losh !~ x 91*23f24377SWarner Losh ^ 92*23f24377SWarner Losh^.a ~ xa 93*23f24377SWarner Losh xaa 94*23f24377SWarner Losh !~ a 95*23f24377SWarner Losh "" 96*23f24377SWarner Losh^.*a ~ a 97*23f24377SWarner Losh xa 98*23f24377SWarner Losh xxxxxxa 99*23f24377SWarner Losh !~ "" 100*23f24377SWarner Losh^.+a ~ xa 101*23f24377SWarner Losh xxxxxxa 102*23f24377SWarner Losh !~ "" 103*23f24377SWarner Losh a 104*23f24377SWarner Losh ax 105*23f24377SWarner Losha* ~ "" 106*23f24377SWarner Losh a 107*23f24377SWarner Losh aaaa 108*23f24377SWarner Losh xa 109*23f24377SWarner Losh xxxx 110*23f24377SWarner Loshaa* ~ a 111*23f24377SWarner Losh aaa 112*23f24377SWarner Losh xa 113*23f24377SWarner Losh !~ xxxx 114*23f24377SWarner Losh "" 115*23f24377SWarner Losh\$ ~ x$ 116*23f24377SWarner Losh $ 117*23f24377SWarner Losh $x 118*23f24377SWarner Losh x$x 119*23f24377SWarner Losh !~ "" 120*23f24377SWarner Losh x 121*23f24377SWarner Losh\. ~ . 122*23f24377SWarner Losh !~ x 123*23f24377SWarner Losh "" 124*23f24377SWarner Loshxr+y ~ xry 125*23f24377SWarner Losh xrry 126*23f24377SWarner Losh xrrrrrry 127*23f24377SWarner Losh !~ ry 128*23f24377SWarner Losh xy 129*23f24377SWarner Losh xr 130*23f24377SWarner Loshxr?y ~ xy 131*23f24377SWarner Losh xry 132*23f24377SWarner Losh !~ xrry 133*23f24377SWarner Losha?b?c? ~ "" 134*23f24377SWarner Losh x 135*23f24377SWarner Losh^a?b?x ~ x 136*23f24377SWarner Losh ax 137*23f24377SWarner Losh bx 138*23f24377SWarner Losh abx 139*23f24377SWarner Losh xa 140*23f24377SWarner Losh !~ "" 141*23f24377SWarner Losh ab 142*23f24377SWarner Losh aba 143*23f24377SWarner Losh[0-9] ~ 1 144*23f24377SWarner Losh 567 145*23f24377SWarner Losh x0y 146*23f24377SWarner Losh !~ abc 147*23f24377SWarner Losh "" 148*23f24377SWarner Losh[^0-9] !~ 1 149*23f24377SWarner Losh 567 150*23f24377SWarner Losh "" 151*23f24377SWarner Losh ~ abc 152*23f24377SWarner Losh x0y 153*23f24377SWarner Losh[0-25-69] ~ 0 154*23f24377SWarner Losh 1 155*23f24377SWarner Losh 2 156*23f24377SWarner Losh 5 157*23f24377SWarner Losh 6 158*23f24377SWarner Losh 9 159*23f24377SWarner Losh !~ 3 160*23f24377SWarner Losh 4 161*23f24377SWarner Losh 7 162*23f24377SWarner Losh 8 163*23f24377SWarner Losh[[:lower:]] ~ a 164*23f24377SWarner Losh b 165*23f24377SWarner Losh z 166*23f24377SWarner Losh !~ A 167*23f24377SWarner Losh Z 168*23f24377SWarner Losh 1 169*23f24377SWarner Losh : 170*23f24377SWarner Losh [ 171*23f24377SWarner Losh ] 172*23f24377SWarner Losh[[:upper:]] ~ A 173*23f24377SWarner Losh B 174*23f24377SWarner Losh Z 175*23f24377SWarner Losh !~ a 176*23f24377SWarner Losh z 177*23f24377SWarner Losh 1 178*23f24377SWarner Losh : 179*23f24377SWarner Losh [ 180*23f24377SWarner Losh ] 181*23f24377SWarner Losh[[:digit:]] ~ 0 182*23f24377SWarner Losh 1 183*23f24377SWarner Losh 9 184*23f24377SWarner Losh !~ d 185*23f24377SWarner Losh : 186*23f24377SWarner Losh [ 187*23f24377SWarner Losh ] 188*23f24377SWarner Loshx[0-9]+y ~ x0y 189*23f24377SWarner Losh x23y 190*23f24377SWarner Losh x12345y 191*23f24377SWarner Losh !~ 0y 192*23f24377SWarner Losh xy 193*23f24377SWarner Loshx[0-9]?y ~ xy 194*23f24377SWarner Losh x1y 195*23f24377SWarner Losh !~ x23y 196*23f24377SWarner Loshx[[]y ~ x[y 197*23f24377SWarner Losh !~ xy 198*23f24377SWarner Losh x[[]y 199*23f24377SWarner Losh x]y 200*23f24377SWarner Loshx[[-]y ~ x[y 201*23f24377SWarner Losh x-y 202*23f24377SWarner Losh !~ xy 203*23f24377SWarner Losh x[[]y 204*23f24377SWarner Losh x]y 205*23f24377SWarner Loshx[[-a]y ~ x[y 206*23f24377SWarner Losh xay 207*23f24377SWarner Losh x]y 208*23f24377SWarner Losh !~ xy 209*23f24377SWarner Losh x[[]y 210*23f24377SWarner Losh x-y 211*23f24377SWarner Loshx[]-a]y ~ x]y 212*23f24377SWarner Losh xay 213*23f24377SWarner Losh !~ xy 214*23f24377SWarner Losh x[y 215*23f24377SWarner Losh x-y 216*23f24377SWarner Loshx[]]y ~ x]y 217*23f24377SWarner Losh !~ xy 218*23f24377SWarner Losh x[]]y 219*23f24377SWarner Losh x[y 220*23f24377SWarner Loshx[^[]y ~ xay 221*23f24377SWarner Losh !~ x[y 222*23f24377SWarner Loshx[-]y ~ x-y 223*23f24377SWarner Losh !~ xy 224*23f24377SWarner Losh x+y 225*23f24377SWarner Loshx[^-]y ~ x+y 226*23f24377SWarner Losh !~ x-y 227*23f24377SWarner Losh xy 228*23f24377SWarner Loshx[][]y ~ x[y 229*23f24377SWarner Losh x]y 230*23f24377SWarner Losh !~ xy 231*23f24377SWarner Losh x][y 232*23f24377SWarner Losh x[]y 233*23f24377SWarner Loshx[z-a]y ~ xy 234*23f24377SWarner Losh !~ x 235*23f24377SWarner Losh y 236*23f24377SWarner Losh xay 237*23f24377SWarner Losh xzy 238*23f24377SWarner Losh x-y 239*23f24377SWarner Losh[0\-9] ~ 0 240*23f24377SWarner Losh - 241*23f24377SWarner Losh 9 242*23f24377SWarner Losh !~ 1 243*23f24377SWarner Losh "" 244*23f24377SWarner Losh[-1] ~ - 245*23f24377SWarner Losh 1 246*23f24377SWarner Losh !~ 0 247*23f24377SWarner Losh[0-] ~ 0 248*23f24377SWarner Losh - 249*23f24377SWarner Losh !~ 1 250*23f24377SWarner Losh[^-0] ~ x 251*23f24377SWarner Losh ^ 252*23f24377SWarner Losh !~ - 253*23f24377SWarner Losh 0 254*23f24377SWarner Losh "" 255*23f24377SWarner Losh[^0-] ~ x 256*23f24377SWarner Losh ^ 257*23f24377SWarner Losh !~ - 258*23f24377SWarner Losh 0 259*23f24377SWarner Losh "" 260*23f24377SWarner Loshx|y ~ x 261*23f24377SWarner Losh y 262*23f24377SWarner Losh xy 263*23f24377SWarner Losh !~ a 264*23f24377SWarner Losh "" 265*23f24377SWarner Losh^abc|xyz$ ~ abc 266*23f24377SWarner Losh abcd 267*23f24377SWarner Losh axyz 268*23f24377SWarner Losh xyz 269*23f24377SWarner Losh !~ xabc 270*23f24377SWarner Losh xyza 271*23f24377SWarner Losh^(abc|xyz)$ ~ abc 272*23f24377SWarner Losh xyz 273*23f24377SWarner Losh !~ abcxyz 274*23f24377SWarner Losh abcx 275*23f24377SWarner Losh cxyz 276*23f24377SWarner Losh^x\|y$ ~ x|y 277*23f24377SWarner Losh !~ xy 278*23f24377SWarner Losh^x\\y$ ~ x\y 279*23f24377SWarner Losh !~ xy 280*23f24377SWarner Losh x\\y 281*23f24377SWarner Losh xay 282*23f24377SWarner Losh\141\142 ~ ab 283*23f24377SWarner Losh xab 284*23f24377SWarner Losh abx 285*23f24377SWarner Losh !~ a 286*23f24377SWarner Losh b 287*23f24377SWarner Losh ax 288*23f24377SWarner Losh axb 289*23f24377SWarner Loshx\056y ~ x.y 290*23f24377SWarner Losh !~ x. 291*23f24377SWarner Losh .x 292*23f24377SWarner Losh xxx 293*23f24377SWarner Losh xby because \056 is not the metacharacter . 294*23f24377SWarner Losh xcy ditto 295*23f24377SWarner Losh[\60-\62\65-6\71] ~ 0 296*23f24377SWarner Losh 1 297*23f24377SWarner Losh 2 298*23f24377SWarner Losh 5 299*23f24377SWarner Losh 6 300*23f24377SWarner Losh 9 301*23f24377SWarner Losh !~ 3 302*23f24377SWarner Losh 4 303*23f24377SWarner Losh 7 304*23f24377SWarner Losh 8 305*23f24377SWarner Losh[\60-2\65-6\71] ~ 0 306*23f24377SWarner Losh 1 307*23f24377SWarner Losh 2 308*23f24377SWarner Losh 5 309*23f24377SWarner Losh 6 310*23f24377SWarner Losh 9 311*23f24377SWarner Losh !~ 3 312*23f24377SWarner Losh 4 313*23f24377SWarner Losh 7 314*23f24377SWarner Losh 8 315*23f24377SWarner Losh[\x30-\x32\x35-6\71] ~ 0 316*23f24377SWarner Losh 1 317*23f24377SWarner Losh 2 318*23f24377SWarner Losh 5 319*23f24377SWarner Losh 6 320*23f24377SWarner Losh 9 321*23f24377SWarner Losh !~ 3 322*23f24377SWarner Losh 4 323*23f24377SWarner Losh 7 324*23f24377SWarner Losh 8 325*23f24377SWarner Losh[\x30-2\x35-6\x39] ~ 0 326*23f24377SWarner Losh 1 327*23f24377SWarner Losh 2 328*23f24377SWarner Losh 5 329*23f24377SWarner Losh 6 330*23f24377SWarner Losh 9 331*23f24377SWarner Losh !~ 3 332*23f24377SWarner Losh 4 333*23f24377SWarner Losh 7 334*23f24377SWarner Losh 8 335*23f24377SWarner Losh\f !~ x 336*23f24377SWarner Losh\b !~ x 337*23f24377SWarner Losh\r !~ x 338*23f24377SWarner Losh\n !~ x 339*23f24377SWarner Losh...) ~ abc) 340*23f24377SWarner Losh!!!! 341