I'd like to define a grammar environment which basically wraps a tabular environment. Inside the grammar environment I'd like to use an environment called production to insert rows. Example:
\documentclass[a4paper,10pt]{article}
\newenvironment{production}[1]
{\noindent\ignorespaces#1 ::= &}
{\\}
\newenvironment{grammar}
{\begin{tabular}{p{3cm}l}}
{\end{tabular}}
\begin{document}
\begin{grammar}
\begin{production}{XmlStartTag}
...
\end{production}
\begin{production}{XmlEndTag}
...
\end{production}
\end{grammar}
\end{document}
The goal of this code is to put the name of the non-terminal that is being defined in the left column and the actual production into the right column of the tabular.
Unfortunately this fails due to the & and \\ within the production environment. I guess it has something to do with macro expansion. I guess I have to escape the & and \\ with something that is only expanded after the macro was used?
Thanks!