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

(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

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