Zum Inhalt springen
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

Aus FreitagsrundenWiki
Keine Bearbeitungszusammenfassung
 
Buchholz (Diskussion | Beiträge)
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"