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
Buchholz (Diskussion | Beiträge)
K wikipedia-link
Pipping (Diskussion | Beiträge)
KKeine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:
<pre>
<pre>
DEF fac(X:nat):nat ==
DEF fac(X:nat):nat ==
    IF eq(X,0)
  IF eq(X,0) THEN
    THEN 1
    1
    ELSE mul(X, fac(sub(X, 1)))
  ELSE
    FI
    mul(X, fac(sub(X, 1)))
  FI
 
DEF MAIN:nat ==
DEF MAIN:nat ==
    fac(8)
  fac(8)
</pre>
</pre>



Version vom 21. Februar 2006, 02:53 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"