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!

Benutzer:Grey/pss: Unterschied zwischen den Versionen

(BNF)
(Milstone 1)
Zeile 10: Zeile 10:
 
  Type -> nat | bool
 
  Type -> nat | bool
 
  Expr -> number | true | false | id [ ( [Expr (, Expr)*] ) ] | IF Expr THEN Expr [ELSE Expr] FI
 
  Expr -> number | true | false | id [ ( [Expr (, Expr)*] ) ] | IF Expr THEN Expr [ELSE Expr] FI
 +
 +
== Semantische Aktionen ==
 +
Semantische Aktionen in der Original Grammatik:
 +
 +
Prog -> Def Def * # (1)
 +
Def  -> DEF Lhs == Expr (2)
 +
Lhs  -> MAIN : Type (3)| id ( [id : Type (, id : Type)*]) : Type (4)
 +
Type -> nat | bool
 +
Expr -> number | true | false | id [ ( [Expr (, Expr)*] ) ](5)| IF Expr THEN Expr [ELSE Expr] FI (6)
 +
  
 
== BNF ==
 
== BNF ==

Version vom 23. November 2005, 09:43 Uhr

Milstone 1

  • EBNF in BNF Grammatik umwandeln:

EBNF

Gegeben ist folgende EBNF Syntax von microOPAL:

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

Semantische Aktionen

Semantische Aktionen in der Original Grammatik:

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


BNF

Erste Umformung:

Prog  ->  Def # 
Def -> Def Def' | Def'
Def' -> DEF Lhs == Expr
Lhs -> MAIN : Type | id ( Lhs' ) : Type
Lhs' -> id : Type A'
A' -> , id : Type A' | e
Type -> nat | bool
Expr -> Value | id ( Expr' ) | IF Expr THEN Expr E FI
Expr' -> Expr Expr' | , Expr Expr' | e
E -> ELSE Expr | e
Value -> number | true | false