ΜOpal: Unterschied zwischen den Versionen
K (wikipedia-link) |
(Historisch markiert) |
||
(2 dazwischenliegende Versionen von einem anderen Benutzer 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) THEN | |
− | + | 1 | |
− | + | ELSE | |
− | + | mul(X, fac(sub(X, 1))) | |
+ | FI | ||
+ | |||
DEF MAIN:nat == | DEF MAIN:nat == | ||
− | + | fac(8) | |
</pre> | </pre> | ||
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.
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"