\documentstyle[olda4,12pt,danish,bnf,isolatin1]{article}
\textheight 25cm
\topmargin -15mm

\begin{document}

\newcommand{\bb}{\begin{em}}
\newcommand{\ee}{\end{em}}
{
\reversemarginpar
\noindent{\Large\bf En grammatik for sproget MINIP:}
\begin{grammar}
[(colon){$\rightarrow\ $}]
[(semicolon){\hspace{-7pt}$|$}] 
[(comma){}]
[(period){{\\[1ex]\mbox{}\hspace{-2em}}}]
[(quote){\begin{bf}$\;$}{\end{bf}}]
[(nonterminal){$\langle$}{$\rangle$}]

\vspace{-4ex}\mbox{}.
<program>:\\
     "program" "id"";"\\
    <declarations>\\
    <subprogram\_declarations>\\
    <compound\_statement>\\
    ".".
<declarations>:\\
    "var" <var\_declarations> \\
    ;"$\epsilon$".
<var\_declarations>:\\ 
    <identifier\_list> ":" <type> ";"\\
    ;<var\_declarations>  <identifier\_list> ":" <type> ";" .
<identifier\_list>:\\
    "id"\\
    ;<identifier\_list>"," "id".
<type>:\\
    <standard\_type>\\
    ;"array" "[" <lim> ".." <lim> "]" "of" <standard\_type>{\hfill NB}.
<lim>:"num"\hspace{7pt};"$-$""num"{\hfill NB}.
<standard\_type>:\\
    "integer"\\
    ;"Boolean".
<subprogram\_declarations>:\\
    <subprogram\_declarations><subprogram\_declaration>\\
    ;"$\epsilon$".
<subprogram\_declaration>:\\
    <subprogram\_head>\\
    <declarations>\\
    <subprogram\_declarations>\\
    <compound\_statement> ";"\\
    ;"forward" <subprogram\_head> {\hfill NB}.
<subprogram\_head>:\\
    "function" "id" "(" <formals>")" ":" <standard\_type> ";"\\
    ;"procedure" "id" "(" <formals>")" ";".
<formals>:\\
     <formal\_parameters>\\
    ;"$\epsilon$".
<formal\_parameters>:\\
    <parameter\_specification>\\
    ;<formal\_parameters> ";" <parameter\_specification>.

\newpage
\vspace{-4ex}\mbox{}.
<parameter\_specification>:\\
    <identifier\_list> ":" <standard\_type>\\
    ;"var" <identifier\_list> ":" <type>\\
    ;"function" <identifier\_list> ":" <standard\_type>\\
    ;"procedure" <identifier\_list>. 
<compound\_statement>:\\
    "begin" <statement\_list>"end".
<statement\_list>:\\
    <statement>\\
    ;<statement\_list> ";" <statement>.
<statement>:\\
    <variable> ":=" <expression>\\
    ;<procedure\_statement>\\
    ;<compound\_statement>\\
    ;"if" <expression> "then" <statement> "else" <statement>\\
    ;"if" <expression> "then" <statement>\\
    ;"while" <expression> "do" <statement>\\
    ;"$\epsilon$".
<variable>:\\
    "id" \\
    ;"id" "[" <expression>"]"{\hfill NB}.
<procedure\_statement>:\\
    "id" "(" <actuals>")".
<actuals>:\\
    <expression\_list>\\
    ;"$\epsilon$".
<expression\_list>:\\
    <expression>\\
    ;<expression\_list> "," <expression>.
<expression>:\\
    <expression> "relop" <expression>\\
    ;<expression> "addop" <expression>\\
    ;<expression> "mulop" <expression>\\
    ;<term>.
<term>:\\
    <variable>\\
    ;"id" "(" <actuals>")"\\
    ;"(" <expression>")"\\
    ;"$-$"<term>\\
    ;"not" <term>\\
    ;"num"\\
    ;"true"\\
    ;"false".

\end{grammar}
}
\end{document}







