Beschreibung der Syntax
<program> | := | <definition> { <definition> } |
; | ||
<definition> | := | <ftype> ident ' (' <paramlist> ')' <compound> |
| | <ftype> ident ' (' ')' <compound> | |
| | <vardefinition> | |
; | ||
<ftype> | := | 'int' | 'float' | 'text' |
; | ||
ident | := | [a-zA-Z][_a-zA-Z0-9]* |
; | ||
<paramlist> | := | { <type> ident { ',' <type> ident } } |
; | ||
<compound> | := | '{' { <type> ident ';' } { <statement> } '}' |
; | ||
<type> | := | <ftype> |
| | 'mask' ident | |
; | ||
<statement> | := | 'while' ' (' <expr> ')' '{' <statement> { <statement> } '}' |
| | 'for' ' (' <expr> ';' <expr> ';' <expr> ')' '{' <statement> { <statement> } '}' |
|
| | '{' <statement> { <statement> } '}' '{' <statement> { <statement> } '}' [ 'else' '{' <statement> { <statement> } '}' ] |
|
| | 'return' <expr> ';' | |
| | 'break' ';' | |
| | 'continue' ';' | |
| | ';' | |
; | ||
<expr> | := | <binary> |
; | ||
<binary> | := | <binary> '=' <binary> |
| | <binary> || <binary> |
|
| | <binary> && <binary> |
|
| | <binary> == <binary> |
|
| | <binary> != <binary> |
|
| | <binary> < <binary> |
|
| | <binary> ⇐ <binary> |
|
| | <binary> > <binary> |
|
| | <binary> >= <binary> |
|
| | <binary> + <binary> |
|
| | <binary> - <binary> |
|
| | <binary> * <binary> |
|
| | <binary> / <binary> |
|
| | <binary> % <binary> |
|
| | <unary> | |
; | ||
<unary> | := | '++' <unary> |
| | - - <unary> |
|
| | '-' <primary> | |
| | '!' <primary> | |
| | <primary> | |
; | ||
<primary> | := | [0-9]*.[0-9]+ (Dezimalzahl in Punktnotation) |
| | [0-9]+ (Ganzzahl) | |
| | Zeichenkette (in der Form „……..“) | |
| | ' (' <expr> ')' | |
| | 'curcell' | |
| | 'globalvector' '[' <primary> ']' | |
| | ident '.' ident | |
| | ident '.' ident '.' 'i' | 'o' | 's' | 'm' |
|
| | <primary> '[' <expr> ']' | |
| | ident ' (' { <binary> { ',' <binary> } } ')' | |
; |