Download Endbericht

Transcript
156
KAPITEL 3. GRUPPENERGEBNISSE
PRG
→ “Decl“ VARDECL“;“ {!GLUE! VARDECL “;“}* “endDecl“ “;“ !GLUE! S
VARDECL
→
VAR “[“ INT “,“ INT “]“
S
→
METHOD {!GLUE! METHOD}* !GLUE! INIT
METHOD
→ “Proc“ VAR {PARALIST}? “{“ MBODY “}“ “endProc“ “;“
PARALIST
→ “(“ “)“
MBODY
→
INIT
→ “Init“ “{“ MBODY “}“ “endInit“ “;“
I
→
I“;“ {!GLUE! I“;“}*
(ASS | IF | WHILE | SKIP | SPAWN | ATOMIC | CALL |
BLOCK | NBLOCKQW | NBLOCKQR)
ATOMIC
→ “atomic“ “{“ MBODY “}“
CALL
→ “call“ VAR PARALIST
SPAWN
→ “spawn“ VAR PARALIST
BLOCK
→ (“block“ | “wait“) “until“ “(“ BOOL “)”
SKIP
→ “skip“
ASS
→
VAR “=“ ARITH
NBLOCKQW
→
VAR < − ARITH
NBLOCKQR
→ VAR -> VAR
IF
→ “if“ “(“ BOOL “)“ “{“ MBODY “}“ {“else“ “{“ MBODY “}“ }?
WHILE
→ “while“ “(“ BOOL “)“ “{“ MBODY “}“
ARITH
→
P1
→ “(“ ARITH “)“ | (INT | VAR)
ARITH BINOP
→ “+“ | “-“ | “*“ | “/“
BOOL
→ P2 {LOG BINOP P2}*
P2
→ “(“ BOOL “)“ | (ARTIH) BOOL BINOP (ARITH)
LOG BINOP
→ “ | | “ | “&&“
BOOL BINOP
→ “<“ | “>“ | “==“ | “>=“ | “<=“ | “!=“
SHADOWS
:
P1 {ARITH BINOP P1}*
!GLUE!
INT: positive und negative ganze Zahlen
VAR: alle Kombinationen aus Zahlen, kleinen Buchstaben und nicht-reservierten Zeichen
!GLUE!: spezielle Ableitung ohne Zeichenrepräsentation
Abbildung 3.19: While (PEG)