| PROGRAM |
::= |
{ "Section" ( section | TYPE_LIST ) { SLOT } } [ CONTRACT ';' ] |
| SLOT |
::= |
style ['('LOCAL')']TYPE_SLOT[':'(TYPE | '('TYPE_LIST')')][affect DEF_SLOT]';' |
| TYPE_SLOT |
::= |
identifier [ LOC_ARG { identifier LOC_ARG } ] |
|
| |
'\'' operator '\'' [ [ ( "Left" | "Right" ) integer ] LOC_ARG ] |
| DEF_SLOT |
::= |
[ CONTRACT ] EXPR [ CONTRACT ] |
| LOC_ARG |
::= |
identifier ':' TYPE |
|
| |
'(' LOCAL ')' |
| LOCAL |
::= |
{ identifier [ ':' TYPE ] ',' } identifier ':' TYPE |
| TYPE_LIST |
::= |
TYPE { ',' TYPE } |
| TYPE |
::= |
[ type ] PROTOTYPE |
| PROTOTYPE |
::= |
cap_identifier [ '[' TYPE_LIST { identifier TYPE_LIST } ']' ] |
| EXPR |
::= |
EXPR_PREFIX ( [ affect EXPR ] | { operator EXPR_PREFIX } ) |
| EXPR_PREFIX |
::= |
{ operator } EXPR_MESSAGE |
| EXPR_MESSAGE |
::= |
EXPR_BASE { '.' SEND_MSG } |
| EXPR_BASE |
::= |
EXPR_PRIMARY |
|
| |
SEND_MSG |
|
| |
"Old" identifier |
| EXPR_PRIMARY |
::= |
"Self" |
|
| |
PROTOTYPE |
|
| |
result |
|
| |
integer |
|
| |
characters |
|
| |
string |
|
| |
'(' GROUP ')' |
|
| |
'{' [ LOC_ARG ';' ] GROUP '}' |
|
| |
external [ ':' [ '(' ] TYPE [ '(' TYPE_LIST ')' ] [ ')' ] ] |
| GROUP |
::= |
DEF_LOCAL { EXPR ';' } [ EXPR { ',' { EXPR ';' } EXPR } ] |
| CONTRACT |
::= |
'[' DEF_LOCAL { ( EXPR ';' | "..." ) } ']' |
| DEF_LOCAL |
::= |
{ style LOCAL ';' } |
| SEND_MSG |
::= |
identifier [ ARGUMENT { identifier ARGUMENT } ] |
| ARGUMENT |
::= |
EXPR_PRIMARY |
|
| |
identifier |