Self Handbook for Self 4.5.0 documentation

Syntax overview

«  Lexical overview   ::   Contents   ::   Built-in types  »

Syntax overview

expression → constant | unary-message | binary-message | keyword-message | ‘(’ expression ‘)’
constant → self | number | string | object
unary-message → receiver unary-send | resend ‘.’ unary-send
unary-send → identifier
binary-message → receiver binary-send | resend ‘.’ binary-send
binary-send → operator expression
keyword-message → receiver keyword-send | resend ‘.’ keyword-send
keyword-send → small-keyword expression { cap-keyword expression }
receiver → [ expression ]
resend → resend | identifier
object → regular-object | block
regular-object → ‘(’ [ ‘|’ [ ‘{’ ‘}’ ‘=’ string ] slot-list ‘|’ ] [ code ] ‘)’
block → ‘[’ [ ‘|’ slot-list ‘|’ ] [ code ] ‘]’
slot-list → { unannotated-slot-list | annotated-slot-list }
annotated-slot-list → ‘{’ string slot-list ‘}’
unannotated-slot-list → { slot ‘.’} slot [ ‘.’ ]
code → { expression ‘.’} [ ‘^’ ] expression [ ‘.’ ]
slot → arg-slot | data-slot | binary-slot | keyword-slot
arg-slot → argument-name
data-slot → slot-name | slot-name ‘<-’ expression | slot-name ‘=’ expression
unary-slot → slot-name ‘=’ regular-object
binary-slot → operator ‘=’ regular-object | operator [identifier] ‘=’ regular-object
keyword-slot → small-keyword {cap-keyword} ‘=’ regular-object | small-keyword identifier {cap-keyword identifier} ‘=’ regular-object
slot-name → identifier | parent-name
parent-name → identifier ‘*’

«  Lexical overview   ::   Contents   ::   Built-in types  »