Benutzer:Grey/pss: Unterschied zwischen den Versionen
(→Milstone 1) |
(→BNF) |
||
Zeile 48: | Zeile 48: | ||
+ | 1)Prog -> Def Def' # <1><br> | ||
+ | 2)Def -> <u>DEF</u> Lhs <u>==</u> Expr <2><br> | ||
+ | 3)Def' -> Def Def' | ||
+ | 3b) | e<br> | ||
+ | 4)Lhs -> <u>MAIN</u> <u>:</u> Type <3> | ||
+ | 5) | <u>id</u> <u>(</u> Lhs' <u>)</u> <u>:</u> Type <4><br> | ||
+ | 6)Lhs' -> <u>id</u> <u>:</u> Type Lhs´´ <5> | ||
+ | 7) | e<br> | ||
+ | 8)Lhs´´ -> <u>,</u> Lhs' | ||
+ | 9) | e<br> | ||
+ | 10)Type -> <u>nat</u> | ||
+ | 11) | <u>bool</u><br> | ||
+ | 12)Expr -> <u>number</u> | ||
+ | 13) | <u>true</u> | ||
+ | 14) | <u>false</u> | ||
+ | 15) | <u>id</u> Expr' <6> | ||
+ | 16) | <u>IF</u> Expr <u>THEN</u> Expr fi' <u>FI</u> <7><br> | ||
+ | 17)Expr' -> <u>(</u> Expr´´ <u>)</u> | ||
+ | 18) | e<br> | ||
+ | 19)Expr´´ -> Expr Expr´´´ <8> | ||
+ | 20) | e<br> | ||
+ | 21)Expr´´´ -> <u>,</u> Expr | ||
+ | 22) | e<br> | ||
+ | 23)fi' -> <u>ELSE</u> Expr | ||
+ | | e<br> | ||
+ | |||
+ | {| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#F9F9F9; font-size:95%; empty-cells:show;" | ||
+ | ! {{Highlight1}} |Produktion | ||
+ | ! {{Highlight1}} |Directormenge | ||
+ | ! {{Highlight1}} |disjunkt? | ||
+ | |- | ||
+ | |1) | ||
+ | |uninteressant | ||
+ | |ja | ||
+ | |- | ||
+ | |2) | ||
+ | |uninteressant | ||
+ | |ja | ||
+ | |- | ||
+ | |3) <br>3b) | ||
+ | |{<u>DEF</u>} <br>{#, <u>DEF</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |4) <br>5) | ||
+ | |{<u>MAIN</u>} <br>{<u>id</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |6) <br>7) | ||
+ | |{<u>id</u>} <br>{<u>)</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |8) <br> 9) | ||
+ | |{<u>,</u>} <br>{<u>)</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |10) <br> 11) | ||
+ | |{<u>nat</u>} <br>{<u>bool</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |12) <br>13) <br>14) <br>15) <br>16) | ||
+ | |{<u>number</u>} <br>{<u>true</u>} <br>{<u>false</u>} <br>{<u>id</u>} <br>{<u>IF</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |17) <br>18) | ||
+ | |{<u>(</u>} <br>{<u>THEN</u>, <u>ELSE</u>, <u>FI</u>, <u>,</u>, <u>)</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |19) <br>20) | ||
+ | |{<u>number</u>, <u>true</u>, <u>false</u>, <u>id</u>, <u>IF</u>} <br>{<u>,</u>, <u>)</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |21) <br>22) | ||
+ | |{<u>,</u>} <br> {<u>)</u>} | ||
+ | |ja | ||
+ | |- | ||
+ | |23) <br>24) | ||
+ | |{<u>ELSE</u>} <br>{<u>FI</u>} | ||
+ | |ja | ||
+ | |} | ||
[[Kategorie:GREY-PSS]] | [[Kategorie:GREY-PSS]] |
Version vom 27. November 2005, 14:41 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
1)Prog -> Def Def' # <1>
2)Def -> DEF Lhs == Expr <2>
3)Def' -> Def Def' 3b) | e
4)Lhs -> MAIN : Type <3> 5) | id ( Lhs' ) : Type <4>
6)Lhs' -> id : Type Lhs´´ <5> 7) | e
8)Lhs´´ -> , Lhs' 9) | e
10)Type -> nat 11) | bool
12)Expr -> number 13) | true 14) | false 15) | id Expr' <6> 16) | IF Expr THEN Expr fi' FI <7>
17)Expr' -> ( Expr´´ ) 18) | e
19)Expr´´ -> Expr Expr´´´ <8> 20) | e
21)Expr´´´ -> , Expr 22) | e
23)fi' -> ELSE Expr | e
Vorlage:Highlight1 |Produktion | Vorlage:Highlight1 |Directormenge | Vorlage:Highlight1 |disjunkt? |
---|---|---|
1) | uninteressant | ja |
2) | uninteressant | ja |
3) 3b) |
{DEF} {#, DEF} |
ja |
4) 5) |
{MAIN} {id} |
ja |
6) 7) |
{id} {)} |
ja |
8) 9) |
{,} {)} |
ja |
10) 11) |
{nat} {bool} |
ja |
12) 13) 14) 15) 16) |
{number} {true} {false} {id} {IF} |
ja |
17) 18) |
{(} {THEN, ELSE, FI, ,, )} |
ja |
19) 20) |
{number, true, false, id, IF} {,, )} |
ja |
21) 22) |
{,} {)} |
ja |
23) 24) |
{ELSE} {FI} |
ja |