Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

ΜOpal: Unterschied zwischen den Versionen

 
K (wikipedia-link)
Zeile 12: Zeile 12:
 
</pre>
 
</pre>
  
[[EBNF]]:
+
[[Wikipedia:EBNF|EBNF]]:
 
<pre>
 
<pre>
 
Prog -> Def Def* "#"
 
Prog -> Def Def* "#"

Version vom 13. Februar 2006, 20:47 Uhr

Eine simple Programmiersprache zu der in der Lehrveranstaltung PSS ein Compiler geschrieben wird.

Beispielprogramm:

DEF fac(X:nat):nat ==
     IF eq(X,0)
     THEN 1
     ELSE mul(X, fac(sub(X, 1)))
     FI
DEF MAIN:nat ==
     fac(8)

EBNF:

Prog -> Def Def* "#"
Def  -> "DEF" Lhs "==" Expr
Lhs  -> "MAIN" ":" Type
      | "id" "(" [ "id" ":" Type ( "," "id" ":" Type )* ] ")" ":" Type
Type -> "nat"
      | "bool"
Expr -> "number"
      | "true"
      | "false"
      | "id" [ "(" [ Expr ( "," Expr )* ] ")" ]
      | "IF" Expr "THEN" Expr [ "ELSE" Expr ] "FI"