Destroying
structures
Consider
the three-level
pattern
grammar
(see "-gr.tryDESTR
U"):
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 "_destr
u"
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