input "aaabbbbccc";
s ::= ab & dc
- ab !::= a b => ab
- dc !::= d c => dc
+ ab ::= a b => ab
+ dc ::= d c => dc
a ::= "a" a | ()
b ::= "b" b "c" | ()
c ::= "c" c | ()
input "aabb";
output "xbx:{abab:{a b}}";
- x !::= ~[]
+ x ::= ~[] => ()
s ::= x* b x* => xbx
b ::= [ab][ab] => abab
&~ ( "aa" | "bb" )