Mercurial > repo
comparison src/ploki/examples/ret.pk @ 4223:ac0403686959
<oerjan> rm -rf src/ploki; mv ploki src
author | HackBot |
---|---|
date | Fri, 20 Dec 2013 22:18:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
4222:b0f3e267bb1e | 4223:ac0403686959 |
---|---|
1 #!../ploki | |
2 REM regular expression tester | |
3 NEXT main: | |
4 | |
5 FOR trymatch | |
6 LEET txt \@ . 0 | |
7 LEET pat \@ . 1 | |
8 LEET ms txt ~ pat | |
9 IF ms | |
10 LET me \_ | |
11 "matched at pos \Vms [\V(txt ] ms)\033[1m\V(txt [ ms ] (me - ms))\033[m\V(txt [ me ] 255)] | |
12 IF @DEF-P \0 | |
13 WUNT "\\0<\V@-0, \V@+0>: \V\0 | |
14 FI | |
15 IF @DEF-P \1 | |
16 WUNT "\\1<\V@-1, \V@+1>: \V\1 | |
17 FI | |
18 IF @DEF-P \2 | |
19 WUNT "\\2<\V@-2, \V@+2>: \V\2 | |
20 FI | |
21 ELSE | |
22 WUNT "no match | |
23 FI | |
24 KTHX | |
25 | |
26 FOR main: | |
27 IF \ARG < 2 | |
28 WUNT "Usage: \V\ARG:0 PATTERN [FILE] | |
29 END @NEG1 | |
30 FI | |
31 LET pat \ARG:1 | |
32 IF \ARG > 2 | |
33 LET fh @LAPERS \ARG:2 | |
34 IF @NOT fh | |
35 WUNT \AUSG \ARG:0_": "_\ARG:2_": "_\!_" | |
36 END @NEG1 | |
37 FI | |
38 FOR buf LET s fh . 4096 | |
39 IF s ; "" | |
40 #! "appending [\V@TYPE OFs:\V@LENGTHs]\Vs to \Vtxt | |
41 LET txt _= s | |
42 NEXT buf | |
43 FI | |
44 #! "matching /\Vpat/ against \Vtxt | |
45 trymatch #<txt pat#> | |
46 ELSE | |
47 "pattern: /\Vpat/ | |
48 FOR line LET line @LEGS \EING | |
49 IF line ; "" | |
50 IF line [ -1 : " | |
51 LET line line ] -1 | |
52 FI | |
53 trymatch #<line pat#> | |
54 NEXT line | |
55 FI | |
56 FI |