In my BNF module I use " as an active character that begins and ends terminals in the grammar: <regex>: <branch> ; <branch>, "\|", <regex>. Now, the above doesn't quite work as written, as \ is still active (and so is, in fact | as we're really inside a \starttabulate. What I would like for the "" pair to do is work as a wrapper for \type{}, so that everything in-between is passed on to \type{}. Is there a way of getting them to do that? This is my current definition: \gdef"% {\ifBNFoutsidestring% \global\BNFoutsidestringfalse% \begingroup% \BNFunsetcatcodes% \catcode`\"\@@active% \@@bnfterminalstart% \else% \@@bnfterminalstop% \endgroup% \global\BNFoutsidestringtrue% \fi} I figured something like \long\gdef"#1"% {\type{#1}} might work, but it didn't. It chokes on "." where . is also an activated character for terminating a production in the grammar. Any suggestions on how to go about this? I mean, the obvious solution is simply to write <regex>: <branch> ; <branch>, "\type{\|}", <regex>. instead, but I would like to keep the input as clean as possible. nikolai -- ::: name: Nikolai Weibull :: aliases: pcp / lone-star / aka ::: ::: born: Chicago, IL USA :: loc atm: Gothenburg, Sweden ::: ::: page: www.pcppopper.org :: fun atm: gf,lps,ruby,lisp,war3 ::: main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}