define L1 [a];
define L2 [b];
read regex [L1 L2];

print net

define L3 [b*];

read regex [L2 L3];

print net

read regex [b+];

print net

read regex [a:b];

print net
print upper
print lower

read regex [a:b*];

print net
print upper
apply down aaaaa
apply up bbbb
apply up aaaa

read regex [a|b];

print net
print upper 
print lower
apply up a
apply down a
apply up aa

read regex [a^{3,4}];

print upper

read regex [C V (C)]^{1,2};

print upper

read regex [h ? t];

print upper
apply up hat
apply up hoot

read regex [h ? t (oo)];

apply up hoot
print net

read regex [h a:0 t];

apply down hat
apply up ht

read regex [?* %+:0 ?*] | \[%+]*;

apply down a+b
apply up ab

define suffixes [ %+ e d | %+ s ];
read text verb_lexicon
define verbs
define underlying [verbs suffixes];
read regex underlying;

print upper

define Rule3 [ [ ?* %+:0 ?* ] | [ \[%+]* ] ];

read regex [underlying .o. Rule3];

print upper
print lower