Mercurial > repo
view src/ploki/examples/ret.pk @ 5582:03ab4bf21ad7
<shachaf> le/rn newline/Newlines are le/rn\'s \\ biggest weakness.
author | HackBot |
---|---|
date | Mon, 15 Jun 2015 21:17:07 +0000 |
parents | ac0403686959 |
children |
line wrap: on
line source
#!../ploki REM regular expression tester NEXT main: FOR trymatch LEET txt \@ . 0 LEET pat \@ . 1 LEET ms txt ~ pat IF ms LET me \_ "matched at pos \Vms [\V(txt ] ms)\033[1m\V(txt [ ms ] (me - ms))\033[m\V(txt [ me ] 255)] IF @DEF-P \0 WUNT "\\0<\V@-0, \V@+0>: \V\0 FI IF @DEF-P \1 WUNT "\\1<\V@-1, \V@+1>: \V\1 FI IF @DEF-P \2 WUNT "\\2<\V@-2, \V@+2>: \V\2 FI ELSE WUNT "no match FI KTHX FOR main: IF \ARG < 2 WUNT "Usage: \V\ARG:0 PATTERN [FILE] END @NEG1 FI LET pat \ARG:1 IF \ARG > 2 LET fh @LAPERS \ARG:2 IF @NOT fh WUNT \AUSG \ARG:0_": "_\ARG:2_": "_\!_" END @NEG1 FI FOR buf LET s fh . 4096 IF s ; "" #! "appending [\V@TYPE OFs:\V@LENGTHs]\Vs to \Vtxt LET txt _= s NEXT buf FI #! "matching /\Vpat/ against \Vtxt trymatch #<txt pat#> ELSE "pattern: /\Vpat/ FOR line LET line @LEGS \EING IF line ; "" IF line [ -1 : " LET line line ] -1 FI trymatch #<line pat#> NEXT line FI FI