Destroying structures

Consider the three-level pattern grammar (see "-gr.tryDESTRU"):

RND
<2-1> S --> (= (= X) S (:X)) (: (= X) S (:X))
<2-1> X --> Y
<2-1> X --> Y S Z
<2-1> X --> Z
----------------------------------------
ORD
LEFT S --> lambda
----------------------------------------
LIN
[A line is missing here...]
X X --> abca
Z Y --> abc
Y Z --> cba
Y Y --> cbbc
Z Z --> lambda


This grammar would not produce strings of terminal symbols because the first subgrammar produces strings of X's and Y's mixed with structural symbols "(=", "(:", ")". These symbols should be deleted before subgrammar #3 is applied. Procedure "_destru" takes care of it. This instruction should be placed on top of the third subgrammar:

LIN
_destru
X X --> abca
Z Y --> abc
...

With the "_destru" procedure, terminal strings on the alphabet {a,b,c} are generated, for instance:

cbbcabcabcabcabccbbcabcabcabcabc
abcabcabcabcabcabcabcabc
cbacbbccbbccbacbacbbccbbccba
cbacbacbacba
cbaabccbaabc
cbbccbbccbbccbbccbbccbbc
abcabcabcabcabcabcabcabc