Symbols

Most of the heavy lifting in Scrall is performed by keyboard symbols instead of keywords. We have done our best to use visual mnemonics and familiar standards in systematic patterns to aid in memorization. That way you can feel free to create expressive variable and model element names without fear of keyword collision.

* // create new instance in context:  *<Class>
* // select all instances in context: <Class>(*)
* // multiplication in expression context
= scalar value assignment operator
#= relation value assignment operator
#1= assign at most one tuple
.=  // assign at most one instance
.=. // assign at most one arbitrary instance
..= // assign zero, one or many instances
~ // in value context: represents the empty instance set
~ // in a path represents repeated hopping
-> // send a signal to each instance in target
@ // dispatch a signal at a specific time
=> // synchronous domain interaction
=>> // return value from inside synchronous activity
: // is equal to/matches in a selection epxression
!=, =,>=, <=, <, >, == // scalar value comparison
#<, #<_, #_>, #> // table value comparison
// line comment
& link
!& unlink
[<text>] guard
! in context of guard [!<text>], negates <text>
; sequences actions on the same line with implicit guards
/ hop operator in a path
^ // ordering comparison (greatest, least, etc)
#^, #+, #*, #- // set operations on table values
#^, #+, #- // set operations on instance set values
{} // action block (multiple actions executed together)
() // selection or math expression
. // general purpose model element delimiter, contexts: attribute access, tuple access, class method invocation, enumerated value
:: define data type
?0, ?1, ? quantity of objects or tuples in an instance set or table variable
true // boolean value
false // boolean value
>> rename operator