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
Inhaltsverzeichnis
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