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

 
(Historisch markiert)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
{{ historisch }}
 +
 
Eine simple Programmiersprache zu der in der Lehrveranstaltung [[PSS]] ein Compiler geschrieben wird.
 
Eine simple Programmiersprache zu der in der Lehrveranstaltung [[PSS]] ein Compiler geschrieben wird.
 +
MOpal steht für "Mikro-Opal", was wiederum "kleines Opal" bedeuten soll.
  
 
Beispielprogramm:
 
Beispielprogramm:
 
<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>
  
[[EBNF]]:
+
[[Wikipedia:EBNF|EBNF]]:
 
<pre>
 
<pre>
 
Prog -> Def Def* "#"
 
Prog -> Def Def* "#"

Aktuelle Version vom 29. Februar 2024, 17:16 Uhr

History Lesson!
Dieser Artikel spiegelt sehr wahrscheinlich nicht mehr den aktuellen Stand wider, könnte aber trotzdem von Interesse sein.

Eine simple Programmiersprache zu der in der Lehrveranstaltung PSS ein Compiler geschrieben wird. MOpal steht für "Mikro-Opal", was wiederum "kleines Opal" bedeuten soll.

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"