Reference manual

file size date version
Lisaac_RM_03.pdf 596 Kb 09/2007 0.3
Lisaac_RM_02.pdf 900 Kb 10/2004 0.2
Lisaac_RM.pdf 580 Kb 09/2003 0.1

Various Stuff

file size date version
Quick Start Manual (french) 589.6 Kb 02/2008 1.0
lisaac_overview.zip 2.3 Mb 05/2004 1.0
Quick Help (french) 92 Kb 09/2007 0.12
Quick Help (english) 88 Kb 09/2007 0.12

Grammar BNF

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