![]() |
|||
HSG |
|
Metasymbole: | ::= | "ist definiert als" |
| | "oder" | |
{ } | Geschweifte Klammern sagen aus, daß die eingeschlossenen Symbole beliebig oft (auch keinmal) wiederholt werden dürfen. | |
[ ] | Eckige Klammern besagen, daß die umschlossenen Symbole keinmal oder genau einmal erscheinen dürfen. | |
( ) | Runde Klammern regeln Prioritäten | |
< > | Spitze Klammern umschließen nicht-terminale Symbole | |
" " | Anführungszeichen umschließen terminale Symbole |
<Programm> | ::= | "PROGRAM" <Bezeichner> ";" <Block> "." |
<Bezeichner> | ::= | <Buchstabe> { <Ziffer> | <Buchstabe> } |
<Block> | ::= | <Deklaration> <Anweisungsteil> |
<Deklaration> | ::= | [ "LABEL" <Bezeichner> { "," <Bezeichner> } ";" ] [ "VAR" <Bezeichner> { "," <Bezeichner> } ":" ( "WORD" | "INTEGER" ) ";" ] |
<Anweisungsteil> | ::= | "BEGIN" <Anweisung> { ";" <Anweisung> } "END" |
<Anweisung> | ::= | { <Bezeichner> ":" } ( "Dec" "(" <Bezeichner> ")" | "Inc" "(" <Bezeichner> ")" | "IF" <Bezeichner> "= 0" "THEN" "GOTO" <Bezeichner> "ELSE" "GOTO" <Bezeichner> | "GOTO" <Bezeichner> ) |
<Buchstabe> | ::= | "A" | "B" | "C" | ... | "Z" | "a" | "b" | ... | "z" |
<Ziffer> | ::= | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |