Revision 77

Work focused on bringing GREP to GLEE. Borland's runtime includes PCRE (PERL-Compatible Regular Expressions). The documentation may be found at the PCRE-org website.

Commentary Code Result
Commentary 'How now brown cow'=>t;
'ow' #grep =>p;
'<1>: '(p %**)$;
'<2>: '(p: )$;
'<3>: '(p:RE )$;
'<4>: '(t `` p=>i;i %**)$;
'<5>: '$;
(i @& ([.ix]{
    t[(ix[1]-2)..(ix[2]+2)]}
  )%**)$;
<1>: GREP[R3C0:K]RE:ow
<2>: :, :RE, :size, :string, :stringV, :typeC, :typeN
<3>: ow
<4>: Seq[R1C4:K]:
[1]Num[R2C2:I]2 4
[2]Num[R2C2:I]6 8
[3]Num[R2C2:I]11 13
[4]Num[R2C2:I]16 18
<5>: Seq[R1C4:K]:
[1]String[R1C7:C] How no
[2]String[R1C7:C] now br
[3]String[R1C7:C]brown c
[4]String[R1C7:C] cow 
Commentary 'c:\glee\website\casestudies\'#fc =>fc;
'aesopsfables.txt'#file fc =>f;
f[]=>t;'ram'=>re;re #grep =>p;
'<1>'$;t ``& re =>i%**$;
'<1a>'$;
i @&([.i]{i': '(t[_5..5+i])%*})%**$;
'<2>'$; t `` p =>j%**$;
'<2a>'$;
j @&([1]<[.i]{i': '(t[_5..5+i])%*})%**$;
<1>
Num[R1C4:I]17114 57604 57679 57712
<1a>
Seq[R1C4:K]
[1]String[R1C18:C]17114: was trampin
[2]String[R1C18:C]57604:  The ram, h
[3]String[R1C18:C]57679:  the ram an
[4]String[R1C18:C]57712:  The ram re
<2>
Seq[R1C4:K]
[1]Num[R2C2:I]17114 17117
[2]Num[R2C2:I]57604 57607
[3]Num[R2C2:I]57679 57682
[4]Num[R2C2:I]57712 57715
<2a>
Seq[R1C4:K]
[1]String[R1C18:C]17114: was trampin
[2]String[R1C18:C]57604:  The ram, h
[3]String[R1C18:C]57679:  the ram an
[4]String[R1C18:C]57712:  The ram re
Commentary 'c:\glee\website\casestudies\'#fc =>fc;
'aesopsfables.txt'#file fc =>f;f[]=>t;'ram'=>re;
1000 =>n; ! => c;
:@&(1..n){};c:lap =>load;
:@&(1..n){re #grep =>p;t `` p =>j;};c:lap -load $;
:@&(1..n){t ``& re =>i;};c:lap -load $;
0.831
7.461
Commentary 'c:\glee\website\casestudies\'#fc =>fc;
'aesopsfables.txt'#file fc =>f;
f[]\ =>t;'ram'=>re;re #grep =>p;
'<1>'$;t @& (``& re#)< \+$;
'<2>'$;t @& (`` p#)< \+$;
<1>
4
<2>
4
Commentary 'c:\glee\website\casestudies\'#fc =>fc;
'aesopsfables.txt'#file fc =>f;
f[]\ =>t;'ram'=>re;re #grep =>p;
10=>n; ! => c;
:@&(1..n){};c:lap =>load;
:@&(1..n){t @& (``& re)};c:lap -1oad $;
:@&(1..n){t @& (`` p)};c:lap -load $;
1.223
2.143
Commentary 'cat(aract|erpillar|)'#grep =>p;
'cataract'`` p %**$;
'caterpillar'``p %**$;
'catatonic'``p %**$;
Seq[R1C1:K]:
[1]Seq[R1C2T:K]:
*[1]Num[R1C2:I]1 9
*[2]Num[R1C2:I]4 9
Seq[R1C1:K]:
[1]Seq[R1C2T:K]:
*[1]Num[R1C2:I]1 12
*[2]Num[R1C2:I]4 12
Seq[R1C1:K]:
[1]Seq[R1C2T:K]:
*[1]Num[R1C2:I]1 4
*[2]Num[R1C2:I]4 4
Commentary 'To be or not to be, who cares?'=>t;
'be'#grep =>p;
'<1>:'$;
t``p=>i%** $;
'<2>:'$;
t \ (i<) %** $;
'<3>:'$;
t \ p %** $;
<1>:
Seq[R1C2:K]:
[1]Num[R2C2:I]4 6
[2]Num[R2C2:I]17 19
<2>:
Seq[R1C5:K]:
[1]String[R1C3:C]To
[2]String[R1C2:C]be
[3]String[R1C11:C] or not to
[4]String[R1C2:C]be
[5]String[R1C12:C], who cares?
<3>:
Seq[R1C5:K]:
[1]String[R1C3:C]To
[2]String[R1C2:C]be
[3]String[R1C11:C] or not to
[4]String[R1C2:C]be
[5]String[R1C12:C], who cares?
Commentary 'Row row row your boat' =>s;
'<1> '(s ``&<>  'row'      %**)$;
'<2> '(s ``&<> ('row'#grep)%**)$;
'<3> '(s ``&   ('row'#grep)%**)$;
<1> Seq[R1C3:K]
[1]Num[R1C2:I]1 4
[2]Num[R1C2:I]5 8
[3]Num[R1C2:I]9 12
<2> Seq[R1C3:K]
[1]Num[R1C2:I]1 4
[2]Num[R1C2:I]5 8
[3]Num[R1C2:I]9 12
<3> Seq[R1C3:K]
[1]Num[R1C2:I]1 4
[2]Num[R1C2:I]5 8
[3]Num[R1C2:I]9 12
Commentary "Changed *&< to *& or @< *&"$;
'Row row row your boat'*&'row'$;
'Row row row your boat'@< *& 'row'$;
'Row row row your boat'@== @< *& 'row'$;
"Changed *&> to @> *&"$;
'Row row row your boat'@> *& 'row'$;
'Row row row your boat'@> @== *& 'row'$;
Changed *&< to *& or @< *&
10001000 10000000 00000
10001000 10000000 00000
00001000 10000000 00000
Changed *&> to @> *&
00100010 00100000 00000
00000010 00100000 00000
Commentary "Changed @> (at EOS) to ?@->"$;
'At EOS'=>t;
t @->; t ?@-> $;
t @<-; t ?@-> $;
"Changed @< (at BOS) to ?@<-"$;
'At BOS'=>t;
t @->; t ?@<- $;
t @<-; t ?@<- $;
"Changed @>< to ?>< for direction"$;
'Which Direction'=>t;
t ->>5 $;t ->> 5$; t ?>< $;
t <<-7 $; t ?>< $;
Changed @> (at EOS) to ?@->
1
0
Changed @< (at BOS) to ?@<-
0
1
Changed @>< to ?>< for direction
Which
 Dire
R
Which
L