%% -*- mode: latex; TeX-master: "compilerbau.tex"; -*-

\begin{slide}{Rekursiver Abstieg}

\kopf{$ $Id: recdesc.tex,v 1.1 2011-10-16 14:06:17 waldmann Exp $ $}

Einfachste Methode, einen Parser von Hand zu schreiben:

zu jeder Variablen $A$ eine Prozedur,
die ein Wort aus $L(G,A)$ liest 
(d. h. den entsprechenden Teil der Eingabe verbraucht) 
und den  Syntaxbaum zurückgibt

\begin{verbatim}
parse_Anweisung =   case lookahead () of
      "while" -> parse_Ausdruck ; parse_Block
      "if"    -> parse_Ausdruck ; parse_Block
      default -> parse_Zuweisung
parse_Zuweisung = n <- parse_Name ; parse "="
      x <- parse_Ausdruck ; parse ";"
parse_Block = 
      parse "{" ; parse_Folge ; parse "}"
parse_Folge = leer  
      oder  parse_Anweisung ; parse_Folge 
\end{verbatim}

\end{slide}


